首发于 青声博客
使用 Python Requests 库调用 ChatGPT API 的多轮对话脚本

使用 Python Requests 库调用 ChatGPT API 的多轮对话脚本

这是一个 Python 脚本,使用 requests 库调用 ChatGPT API 进行多轮对话,并且可以添加自定义代理服务器。

如何使用

前置条件

在使用该脚本前,你需要拥有一个 ChatGPT API 的访问口令(Token)。可以参考 ChatGPT API 的文档 获取该访问口令。

安装依赖

在使用该脚本前,你需要安装 requests 库。可以使用以下命令安装:

pip install requests

运行脚本

在运行脚本之前,你需要编辑 chat.py 文件,配置 ChatGPT API 的访问口令和代理服务器地址(如果需要)。

然后,你可以使用以下命令运行脚本:

python chat.py

该脚本会启动一个命令行界面,你可以在命令行内输入对话内容与 API 进行交互。

配置代理服务器

如果你需要使用代理服务器来访问 ChatGPT API,可以在 chat.py 中进行配置,在 PROXY_URL 中填写代理服务器地址即可。

注意事项

  1. 在使用 ChatGPT API 进行多轮对话时,需要注意 API 的并发调用限制以及接口响应时间等因素。
  2. 在使用自定义代理服务器时,需要注意代理服务器的访问速度和稳定性。
  3. 该脚本仅供学习和研究使用,使用时请遵守相关法律法规。
import requests
# 用于存储API返回的上下文
class gpt:
    def send_request(self,messages):
        # 设置代理服务器的地址和端口
        proxies = {
            "http": "http://127.0.0.1:7890",
            "https": "http://127.0.0.1:7890"
        # ChatGPT API的URL
        url = "https://api.openai.com/v1/chat/completions"
        # ChatGPT API的访问密钥
        api_key = "【在这输入 ChatGPT API的访问密钥】"
        # 请求参数
        parameters = {
                      "model": "gpt-3.5-turbo-0301", #gpt-3.5-turbo-0301
                      "messages":messages# [{"role": "user", "content": context}]
        # 请求头
        headers = {
            "Content-Type": "application/json",
            "Authorization": f"Bearer {api_key}"
        # 发送请求
        response = requests.post(url, headers=headers, json=parameters, proxies=proxies)
        # 解析响应
        if response.status_code == 200:
            data = response.json()
            text = data["choices"][0]["message"]
            return text
        else:
            print(response)
            return "Sorry, something went wrong."
    def start_conversation(self,messages):
        print("Welcome to ChatGPT! How can I help you today?")
        # 进入对话循环
        while True:
            # 获取用户输入
            user_input = input("> ")
            user_message={"role": "user", "content": user_input}
            # 将用户输入添加到messages中
            messages.append(user_message)
            # 发送API请求
            response = self.send_request(messages)
            # 输出API返回内容
            print("ChatBot:",response["content"])
            #将API接口返回的内容添加至messages,以用作多轮对话
            messages.append(response)
            # 如果API返回的内容包含"goodbye",则结束对话循环