17611538698
webmaster@21cto.com

10 分钟内构建一个 Python + ChatGPT 3.5 聊天机器人

编程语言 0 63 19小时前

导读:本文将与大家一起学习在几分钟内使用 Python 和 OpenAI 的 API 构建一个简单的聊天机器人,并提供了初学者需要的源代码示例。

图片

此时此刻,我对ChatGPT的存在,是感到心安的。

但它刚推出时,我却感到十分恐惧。我的母亲是一位小学四年级老师,她那天急匆匆地告诉我(我是一名职业作家和技术内容经理),我可能将很快会失业。

然而多年以后,我却仍然在职,现在我努力让 ChatGPT 成为我的真正盟友。我不仅逐渐意识到它的用处,而且也意识到,当机器人要接管一切时,最好不要成为它的敌人。

话虽这样讲,我为什么要喋喋不休地谈论这个呢?嗯,了解敌人是迈向友好的重要一步。而与人工智能合作是一项极其宝贵的技能。这不仅仅代表是在 ChatGPT 上发问(我现在很喜欢问这个问题)。

学习如何与大语言模型一起或与大语言模型一起编写代码,是真正驾驭 GPT 力量的下一步。

我设计本教程的目的是帮助初学者入门,了解ChatGPT 的 API和响应逻辑。它不会教你如何在 GPT 之上构建一个复杂的应用程序,它会帮助你理解如何编写与 OpenAI(ChatGPT 的创建者与运营公司)API 交互的代码。

本教程简洁易懂,这里会使用Jupyter Notebook来构建。

OpenAI入门

请先在https://platform.openai.com注册为会员。

图片

登录成功后,请访问 API 仪表板。

前往你的API 密钥页面,点击“创建新密钥”并立即复制该密钥,注意之后你将无法再次查看该密钥。

接下来,我们来添加账单信息。

虽然 OpenAI 提供免费试用,但是我添加了付款方式。10 美元的信用额度通常足以试用 GPT-3.5。

注意:你需要免费试用或有效计费才能使用 GPT-3.5。

使用 ChatGPT-3.5 构建聊天机器人

导入所需的库和依赖项

请将以下内容粘贴到你的第一个 Jupyter Notebook 单元中:

!pip install openai python-dotenv --quiet

Openai允许让你与 OpenAI 的模型(如 GPT-3.5)进行交互。 python-dotenv可以安全地管理 API 密钥等敏感信息,并将它们从.env文件加载到你的Python环境中。

导入模块

使用以下代码导入openai、os和dotenv,这有助于配置您的环境并与 API 交互:

import openaiimport osfrom dotenv import load_dotenv

加载 API 密钥

确保已在 OpenAI 仪表板中创建 API 密钥。现在,我们需要设置一个.env文件,然后来安全地存储它:

api_key = "sk-proj-api-key-here"# Save the key to a .env filewith open(".env""w"as f:    f.write(f"OPENAI_API_KEY={api_key}")print(".env file created.")

将你的实际真实 API 密钥粘贴到此处sk-proj-api-key-here。接下来,将密钥加载到你的notpad中:

load_dotenv()openai.api_key = os.getenv("OPENAI_API_KEY")

定义聊天机器人功能

下面,我们定义聊天机器人如何与 OpenAI 的 API 通信并处理对话。

def chat_with_gpt(messages):    response = openai.chat.completions.create(        model="gpt-3.5-turbo",        messages=messages,        temperature=0.7,    )    return response.choices[0].message.contentmessages = [    {"role""system""content""You are a helpful assistant."},    {"role""user""content""Hello, who are you?"}]

其中方法openai.chat.completions.create()是专为交互式聊天设计的最新 API 调用。

该方法允许通过发送消息列表并根据正在进行的对话接收相关响应,与 GPT-3.5 进行实时通信。

像 GPT-3.5 这样的 GPT 模型已经能够在会话期间保留记忆。这意味着它们会参考对话的早期部分,以提供更连贯、更有用的响应。我们的chat_with_gpt函数接受一个消息列表,作为正在进行的对话历史记录。这有助于助手根据上下文做出响应。

列表中的每条消息都包含一个"role"值,用于告诉模型该消息来自谁:

  • "user"对于提问者

  • "assistant"对于 GPT 响应

  • "system"设置行为指令(可选)


该temperature值控制助手响应的随机性或创造性。数值范围为 0 到 1,0 表示响应的结束可预测,1 表示响应更具随机性和创造性。建议将 0.7 设为最佳平衡值。

该 API 返回一个响应对象。从中,我们使用 提取助手的回复choices[0].message.content,该回复指的是 GPT 生成的实际文本。

运行聊天循环

现在我们将使聊天机器人具有交互性,以便用户可以与模型进行持续的对话。

while True:    user_input = input("You: ")    if user_input.lower() in ["exit""quit"]:        print("Goodbye!")        break    messages.append({"role""user""content": user_input})    reply = chat_with_gpt(messages)    messages.append({"role""assistant""content": reply})    print(f"Assistant: {reply}")

本节设置了一个无限循环,允许聊天机器人持续运行,直到用户输入exit或quit为止。

无限循环使聊天机器人能够进行交互对话,并通过跟踪已说过的内容来“感知”过去的消息。此循环使对话持续进行,同时保留上下文。这种上下文使 GPT-3.5 能够以更自然、更有意义的方式做出回应。

以下是一步一步不断发生的事情:

  • 聊天机器人使用input() 来提示用户输入。

  • 如果用户输入“exit”或“quit”,循环就会中断,聊天机器人就会说Goodbye。

  • 如果用户没有输入“退出”或“quit”,messages.append(...)则将用户的最后一条消息添加到对话历史记录中。

  • 调用该函数chat_with_gpt(messages)来获取助手的响应。

  • 助手的回复也使用 添加到历史记录中messages.append(...)。

  • 最后,它会将响应打印到控制台,以便用户阅读参考。


与机器人交朋友

本教程将帮助各位了解如何使用 GPT-3.5 构建聊天机器人。

这显然只是一个开端,但你现在已经掌握了如何使用 OpenAI API 进行身份验证、维护对话循环以及如何使用 Jupyter Notebook 测试和运行代码。

这是迈向更高级的 AI 开发,以及与机器人成为朋友的重要第一步。

祝各位开发者朋友AI编程快乐!

作者:场长

评论