200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 使用chatgpt的api实现个人聊天机器人demo(可实现多轮对话)

使用chatgpt的api实现个人聊天机器人demo(可实现多轮对话)

时间:2020-02-06 23:26:13

相关推荐

使用chatgpt的api实现个人聊天机器人demo(可实现多轮对话)

之前写过一篇文章,初步实现调用chatgpt的api实现与机器人的对话,但是并没有提及多轮对话如何实现。在这篇文章中,我将介绍如何利用openai的api实现聊天机器人的多轮对话。

第一步:官网申请api,可参考我之前的博文:

用chatgpt的api实现你的简易个人聊天机器人demo_聊天机器人api_qq_38100666的博客-CSDN博客

第二步:编写程序

设置代理和api

import openaiimport osos.environ["http_proxy"] = "http://127.0.0.1:47890"os.environ["https_proxy"] = "http://127.0.0.1:47890"openai.api_key="your api_key"

定义一个函数进行对话:

def chat(m):history = mwhile True:messages = history[-10:]message = input("")if message.lower() == "stop":breakmessages.append({"role":"user","content": message})history.append({"role":"user","content": message})response=openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=messages)reply = response["choices"][0]["message"]["content"]print(reply)history.append({"role":"assistant", "content": reply})return

定义一个变量history存放历史记录,这是实现多轮对话的关键

history = m

每次对话取前10条历史记录:

messages = history[-10:]

对于openai api的参数的解释:

model:所采用的模型

messages:

role:对话中的角色,包括'user', 'assistant', 'system',‘user’代表终端用户,‘assistant’代表模型扮演的角色。

content:对话的内容。

每轮对话中,首先将历史对话记录与当前用户输入内容合并,通过api输入给模型:

messages = history[-10:]message = input("")messages.append({"role":"user","content": message})response=openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=messages)

得到模型反馈后,输出当前反馈,并将当前会话加入到历史记录中:

reply = response["choices"][0]["message"]["content"]print(reply)history.append({"role":"user","content": message})history.append({"role":"assistant", "content": reply})

如果用户输入‘stop’,则停止对话

if message.lower() == "stop":break

主函数:

if __name__ == "__main__":messages = []print("I am ready to be your friendly chatbot" + "\n" + "You can now type your messages.")chat(messages)print("finished!")

第三步:进行对话,查看效果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。