河北省住房城乡建设网站,南山做网站多少钱,湖州专业网站建设公司,上海网站建设企业排名本文指导如何通过调用OpenAI的API完成一个简单的聊天机器人。
背景知识
API介绍
我们可以通过任何语言的 HTTP 请求、官方 Python 、 Node.js 库或社区维护的库与 ChatGPT的API 进行交互#xff0c;官方API文档#xff1a;
API Reference - OpenAI API #xff08;可自行…本文指导如何通过调用OpenAI的API完成一个简单的聊天机器人。
背景知识
API介绍
我们可以通过任何语言的 HTTP 请求、官方 Python 、 Node.js 库或社区维护的库与 ChatGPT的API 进行交互官方API文档
API Reference - OpenAI API 可自行去查看
所以python是有现成包用的会比调用原始的HTTP请求容易一些python包
openai/openai-python: The official Python library for the OpenAI API
本文使用Python编程语言完成一个简单的AI聊天机器人。
一次简单的调用
如果要调用ChatGPT的API其实非常简单只需要几行代码像下面这样
import openaiopenai.api_key 替换为你的key
openai.api_base 如果走绕路这里填写对应的服务商的网址response openai.ChatCompletion.create(modelgpt-3.5-turbo,messages[{role: user, content: hello.},],temperature1, # 控制模型输出的随机程度
)
# 打印ChatGPT的回复
print(response.choices[0].message[content])运行后可以看到如下打印
Hello! How can I assist you today?一次调用就完成了。
几种消息的介绍
上面的messages参数中有一个role关键字它有3中类型对应3中消息这里介绍一下
系统消息
在ChatGPT的客户端聊天窗口是看不到系统消息的这个是API中才有的主要是给开发人员使用的。
系统消息主要用来设置聊天机器人的角色和行为相当于给它一些默认的指令。
用户消息
就是你在聊天窗口发的内容称为「用户消息」
助手消息
就是ChatGPT发给你的内容称为「助手消息」。
代码
来看看一个简单的完成的AI聊天机器人的代码
import openaiopenai.api_key 替换为你的
openai.api_base 如果走绕路这里填写对应的服务的网址def get_completion_from_messages(messages, modelgpt-3.5-turbo, temperature0):response openai.ChatCompletion.create(modelmodel,messagesmessages,temperaturetemperature, # 控制模型输出的随机程度)return response.choices[0].message[content]context [# 上下文中定义一个系统角色告诉ChatGPT他是一个友好的助手后面的回复它都会是一个非常友好的态度{role: system, content: You are a friendly assistant.},
]def chat_to_bot(prompt):# 我们发送的信息角色是usercontext.append({role: user, content: f{prompt}})response get_completion_from_messages(context)# 注意这里需要将先前的内容一并发给ChatGPT# ChatGPT返回回来得消息的角色是assistantcontext.append({role: assistant, content: f{response}})return fBot: {response}if __name__ __main__:while True:user_input input(You: )print(chat_to_bot(user_input))代码解释 定义了一个get_completion_from_messages函数该函数向 OpenAI API 发送一系列消息并获取响应。 messages 参数是消息对象的列表每个对象都有一个“角色”可以是“系统”、“用户”或“助理”和“内容”消息的内容 。 “温度”参数控制模型输出的随机性。 context 定义了对话的初始上下文告诉模型它正在扮演友好助手的角色。 chat_to_bot此函数向聊天机器人发送消息并获取其响应。它将用户的消息和机器人的响应添加到对话上下文中因此每次对话后都会更新上下文。 主循环中它反复要求用户输入将该输入发送到聊天机器人并打印聊天机器人的响应。对话无限期地继续直到程序被手动停止。
运行的结果是这样的
You: hi
Bot: Hello! How can I assist you today?
You: What did I say in the previous sentence?
Bot: In the previous sentence, you said hi.
You:可以看到它知道上下文可以一直对话下去。
注意每一次API调用都是独立的要让机器人理解上下文context那么每次API调用都需要将之前的聊天内容全部发过去。可以看到当对话越来越长的时候对token的消耗非常大这是LLM的一个特点。