共计 1733 个字符,预计需要花费 5 分钟才能阅读完成。
ChatGPT API 的核心能力边界:1) 支持多轮对话的文本生成;2) 可处理约 4096 个 token 的上下文窗口;3) 能理解结构化指令但无法执行物理操作。

环境准备与认证配置
Python 环境
安装官方 SDK(推荐 Python 3.8+ 环境):
pip install openai
密钥配置
- 登录 OpenAI 账户获取 API 密钥
-
安全存储方式(二选一):
-
环境变量(推荐):
export OPENAI_API_KEY='sk-...' - 代码内配置(仅用于测试):
import openai openai.api_key = 'sk-...' # 实际项目请勿硬编码
基础 API 调用详解
关键参数说明
model: 推荐使用gpt-3.5-turbo(性价比最优)temperature: 0- 2 之间,值越高随机性越强max_tokens: 控制响应长度(注意:输入 + 输出≤4096)
带异常处理的完整示例
import openai
from typing import Dict, Optional
def chat_completion(prompt: str) -> Optional[Dict]:
try:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
temperature=0.7,
max_tokens=500
)
return response.choices[0].message.content
except openai.error.AuthenticationError:
print("认证失败,请检查 API 密钥")
except openai.error.RateLimitError:
print("触发速率限制")
except Exception as e:
print(f"未知错误: {str(e)}")
return None
流式响应处理
使用 Server-Sent Events(SSE)技术实现实时输出:
def stream_response(prompt: str):
try:
stream = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
stream=True
)
for chunk in stream:
content = chunk.choices[0].delta.get("content", "")
print(content, end="", flush=True)
except KeyboardInterrupt:
print("\n 用户中断")
生产环境注意事项
Token 成本控制
- 中文 1 个 token≈2 个字符
- 可通过
tiktoken库精确计算:import tiktoken encoder = tiktoken.encoding_for_model("gpt-3.5-turbo") token_count = len(encoder.encode(prompt_text))
上下文管理策略
- 保存完整对话历史会快速消耗 token
- 推荐方案:
- 只保留最近 3 轮对话
- 对历史消息进行摘要压缩
429 错误处理
实现指数退避重试机制:
import time
from openai.error import RateLimitError
def robust_request(prompt, max_retries=3):
for i in range(max_retries):
try:
return chat_completion(prompt)
except RateLimitError:
wait_time = 2 ** i # 指数退避
time.sleep(wait_time)
raise Exception("超过最大重试次数")
进阶思考方向
- 多轮对话状态保持:如何设计高效的对话上下文存储结构?
- 敏感内容过滤:比较输入前过滤与输出后过滤的优劣?
- 知识库集成:怎样将自定义文档转化为模型可用的上下文?
通过以上实践,开发者可以快速构建基于 ChatGPT 的应用原型。建议先从简单功能开始,逐步添加复杂特性,过程中持续关注 API 消耗情况。
正文完
