使用 ChatGPT 和 Jupyter Notebook 创建简单的聊天机器人
- 在文件中导入所需的 Python 模块和库,例如 transformers 和 torch。
from transformers import AutoTokenizer, AutoModelWithLMHead
import torch
- 初始化 ChatGPT 模型并加载预训练的权重。
tokenizer = AutoTokenizer.from_pretrained('microsoft/DialoGPT-medium')
model = AutoModelWithLMHead.from_pretrained('microsoft/DialoGPT-medium')
- 编写一个函数来生成回复的文本,可以使用 ChatGPT 模型的 generate 方法。
def generate_response(input_text):
input_ids = tokenizer.encode(input_text + tokenizer.eos_token, return_tensors='pt')
bot_input_ids = torch.cat([chat_history_ids, input_ids], dim=-1) if chat_history_ids is not None else input_ids
chat_history_ids = model.generate(bot_input_ids, max_length=1024, pad_token_id=tokenizer.eos_token_id)
response = tokenizer.decode(chat_history_ids[:, bot_input_ids.shape[-1]:][0], skip_special_tokens=True)
return response
-
在 VS Code 中打开一个新的文件,保存为
.ipynb格式,然后在菜单栏中打开 Jupyter Notebook。 -
在 Jupyter Notebook 中创建一个新的代码单元格,输入以下代码:
from ipywidgets import widgets, Layout
from IPython.display import display
input_box = widgets.Text(
layout=Layout(width='50%', height='50px'),
placeholder='请输入您的问题',
description='您的问题:',
disabled=False
)
output_box = widgets.Textarea(
layout=Layout(width='50%', height='200px'),
placeholder='机器人的回答',
description='机器人的回答:',
disabled=True
)
def on_submit(sender):
input_text = input_box.value.strip()
if input_text:
response = generate_response(input_text)
output_box.value = response
input_box.on_submit(on_submit)
display(input_box)
display(output_box)
- 在 Python 文件中导入 Jupyter 扩展生成的笔记本,并将 UI 界面与生成回复的函数连接起来。
import jovian
# 将 Jupyter 笔记本导出为 Python 文件
jovian.commit(nb_filename='chatbot.ipynb')
# 导入 Jupyter 笔记本
from IPython.display import display, Javascript
from google.colab.output import eval_js
def start_chatbot():
display(Javascript('''
(async function(){
const result = await google.colab.kernel.invokeFunction(
'notebook.run',
['input_box', 'output_box'],
{
'code': 'while True:
input_text = input_box.value.strip()
if input_text:
response = generate_response(input_text)
output_box.value = response
'
}
)
console.log(result)
})();
'''))
start_chatbot()
原文地址: https://www.cveoy.top/t/topic/nLz2 著作权归作者所有。请勿转载和采集!