使用 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 排查。
怎么验证是否生效
运行脚本后检查控制台输出,确认状态码为 200 且返回 JSON 中包含 choices 字段。若返回 401 代表密钥无效,429 代表速率限制。
查看响应体中的 usage 对象,确认 total_tokens 有数值增加,说明计费正常。日志中不应出现 ConnectionError 或 Timeout 异常。
常见坑
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