如何使用 Python requests 库手动调用 ChatGPT API 接口?

文章导读
使用 Python requests 库调用 ChatGPT API 需要向 https://api.openai.com/v1/chat/completions 发送 POST 请求,并在 Header 中携带有效的 API Key。适用场景为后端服务或本地脚本开发,主要风险边界是 API Key 泄露导致额度被盗用。
📋 目录
  1. 快速处理思路
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

使用 Python requests 库调用 ChatGPT API 需要向 https://api.openai.com/v1/chat/completions 发送 POST 请求,并在 Header 中携带有效的 API Key。适用场景为后端服务或本地脚本开发,主要风险边界是 API Key 泄露导致额度被盗用。

先说结论:通过 requests 库构造标准 HTTP 请求即可调用,重点在于正确配置认证信息和处理响应数据。

  • 适合:需要在 Python 项目中集成对话能力或自动化任务的开发者。
  • 先看:OpenAI 官方 API 文档关于 authentication 和 chat 接口的定义。
  • 建议:将 API Key 存放在环境变量中,不要硬编码在代码里。

快速处理思路

最小化可运行代码包含安装依赖、设置请求头、发送 JSON 数据三个动作。先确保网络能访问 API 端点,再验证密钥权限。

pip install requests

import requests

api_key = "YOUR_API_KEY"
headers = {
    "Authorization": f"Bearer {api_key}",
    "Content-Type": "application/json"
}
data = {
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "Hello"}]
}

response = requests.post(
    "https://api.openai.com/v1/chat/completions",
    headers=headers,
    json=data
)
print(response.json())

为什么会这样

Python requests 库通过 HTTP 协议与 OpenAI 服务器通信,需要正确的身份验证和数据结构。API 设计为 RESTful 风格,服务端只接受符合 JSON Schema 的请求体,否则返回错误码。

身份验证采用 Bearer Token 机制,请求头中缺少 Authorization 字段或格式错误会直接拒绝访问。数据格式必须匹配当前模型支持的输入结构,例如 messages 列表不能为空。

分步处理

按照环境准备、密钥配置、代码编写、错误处理的顺序执行,每步完成后立即检查状态。

步骤 1:安装依赖
在终端执行 pip install requests,确认无报错。若使用虚拟环境,确保激活后再安装。

步骤 2:配置密钥
在 OpenAI 平台生成 API Key,将其设置为环境变量 OPENAI_API_KEY。代码中通过 os.environ.get 读取,避免明文存储。

步骤 3:编写请求
使用 requests.post 方法,URL 固定为 https://api.openai.com/v1/chat/completions。Header 中 Content-Type 设为 application/json,body 使用 json 参数自动序列化。

步骤 4:处理异常
包裹请求在 try...except 块中,捕获 requests.exceptions.RequestException。检查 response.status_code,非 200 状态码需打印 response.text 排查。

如何使用 Python requests 库手动调用 ChatGPT API 接口?

怎么验证是否生效

运行脚本后检查控制台输出,确认状态码为 200 且返回 JSON 中包含 choices 字段。若返回 401 代表密钥无效,429 代表速率限制。

查看响应体中的 usage 对象,确认 total_tokens 有数值增加,说明计费正常。日志中不应出现 ConnectionErrorTimeout 异常。

常见坑

API Key 硬编码在代码库中会导致泄露风险,公开仓库必须移除密钥文件。网络超时默认设置较短,长任务需增加 timeout 参数。

模型名称会随时间更新,硬编码 gpt-3.5-turbo 可能在未来失效,建议配置为可变参数。部分区域网络无法直连 API 端点,需确保运行环境具备合法的网络访问条件。

常见问题

API Key 在哪里获取?

登录 OpenAI 平台官网,在 API 管理页面创建新的密钥。密钥仅显示一次,复制后需妥善保存。

遇到 401 Unauthorized 怎么办?

检查 Header 中 Authorization 格式是否为 Bearer sk-...。确认密钥未过期且账户有可用额度。

如何启用流式输出?

在请求数据中设置 stream: true,并迭代 response.iter_lines() 处理返回块。流式模式下响应格式为 SSE 事件流。

参考来源

OpenAI Platform Documentation - Chat Completion API
URL: https://platform.openai.com/docs/api-reference/chat/create