共计 2546 个字符,预计需要花费 7 分钟才能阅读完成。
ChatGPT API 基础工作原理
- 通过 HTTPS 协议与 OpenAI 服务器建立加密连接
- 使用 API 密钥进行身份验证和权限校验
- 服务器接收请求后返回 JSON 格式的响应数据
第一章 网络代理配置问题
当本地网络需要代理时,会出现 ConnectionError 类错误。测试方法:

curl -v https://api.openai.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
关键检查点:
– 代理地址是否正确(特别是公司网络)
– 是否跳过代理白名单(国内服务可能需直连)
– 防火墙是否放行 *.openai.com 域名
第二章 API 密钥失效处理
典型症状:返回 401 Unauthorized 错误。处理步骤:
- 登录 OpenAI 账户查看密钥状态
- 定期轮换密钥(建议每月更新)
- 多密钥负载均衡方案示例:
import random
def get_api_key():
keys = ["sk-key1", "sk-key2", "sk-key3"] # 实际应从安全存储读取
return random.choice(keys)
密钥存储安全要求:
– 禁止硬编码在代码中
– 使用环境变量或密钥管理服务
– 设置最小必要权限
官方参考:API Key Rotation
第三章 请求频率限制
OpenAI 的限流策略:
– 免费账号:20 次 / 分钟
– 付费账号:60-3500 次 / 分钟(根据层级)
处理 429 Too Many Requests 的指数退避实现:
import time
import random
def make_request():
max_retries = 5
base_delay = 1 # 初始等待 1 秒
for attempt in range(max_retries):
try:
# 这里放实际请求代码
return response
except RateLimitError:
delay = base_delay * (2 ** attempt) + random.uniform(0, 1)
time.sleep(min(delay, 60)) # 最大不超过 60 秒
raise Exception("Max retries exceeded")
官方参考:Rate Limits
第四章 区域服务可用性
检测 API 端点连通性:
import requests
def check_endpoint():
test_urls = [
"https://api.openai.com",
"https://api.openai.com/v1/models"
]
for url in test_urls:
try:
resp = requests.head(url, timeout=5)
print(f"{url} status: {resp.status_code}")
except Exception as e:
print(f"{url} failed: {str(e)}")
注意:部分地区可能需要通过 Cloudflare Workers 搭建代理
第五章 SDK 版本兼容
常见问题场景:
– openai库 0.28+ 版本接口变更
– 异步方法调用方式变化
版本管理建议:
-
固定依赖版本(推荐):
pip install openai==0.28.1 -
升级前检查变更日志:
import openai print(openai.__version__) # 确认当前版本
官方参考:SDK Changelog
生产级代码示例
带完整错误处理的 API 调用模板:
import openai
from tenacity import retry, stop_after_attempt, wait_exponential
@retry(stop=stop_after_attempt(3),
wait=wait_exponential(multiplier=1, min=4, max=10))
def safe_chat_completion(prompt):
try:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
timeout=10 # 连接 + 读取总超时
)
return response.choices[0].message.content
except openai.error.APIError as e:
print(f"API Error: {e.http_status} - {e.error}")
except openai.error.Timeout as e:
print(f"Timeout: {e}")
except Exception as e:
print(f"Unexpected error: {e}")
return None
关键参数说明:
– timeout:包含连接 + 读取双超时
– max_retries:根据业务容忍度设置
– wait_exponential:实现退避算法
生产环境建议
-
连接池配置:
import requests session = requests.Session() adapter = requests.adapters.HTTPAdapter( pool_connections=10, # 连接池大小 pool_maxsize=20, max_retries=3 ) session.mount("https://", adapter) openai.requestssession = session -
监控指标示例:
- 请求成功率(>99% 为佳)
- P99 延迟(建议 <2s)
-
限流触发次数
-
熔断方案:
- 连续 5 次失败后熔断 30 秒
- 降级返回缓存结果
自测 Checklist
🔹 网络连通性测试通过
🔹 API 密钥具有有效权限
🔹 请求频率在限制范围内
🔹 SDK 版本符合文档要求
🔹 错误处理逻辑已覆盖常见场景
官方文档直达:
– API Reference
– Error Codes
– Production Checklist
遇到连接问题时,建议按照从底层网络到上层代码的顺序逐层排查。多数情况下,问题出在密钥配置或网络环境等基础环节。如果经过全面检查仍无法解决,可以收集完整的请求日志(注意脱敏)联系 OpenAI 支持。
