共计 1398 个字符,预计需要花费 4 分钟才能阅读完成。
背景痛点:新手常见问题
开发者首次调用 ChatGPT API 时往往会遇到以下典型问题:

- 认证失败:API 密钥未正确配置或环境变量加载异常
- 上下文丢失:未正确处理 message 数组导致多轮对话记忆失效
n- 计费不可控:未监控 token 消耗导致意外费用产生 - 响应迟缓:未启用流式传输导致长响应等待时间
技术对比:Completion 与 Chat API
- Completion API
- 适用于单次补全任务(如文本续写)
-
无内置对话上下文管理
-
Chat API
- 专为多轮对话设计
- 通过
messages数组维护上下文 - 支持角色标记(system/user/assistant)
核心实现步骤
环境准备
-
创建 Python 虚拟环境
python -m venv chatgpt_env source chatgpt_env/bin/activate # Linux/Mac chatgpt_env\Scripts\activate # Windows -
安装必需库
pip install openai python-dotenv
基础调用示例
import openai
from dotenv import load_dotenv
import os
# 加载环境变量
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
# 带错误处理的 API 调用
def chat_completion(messages: list[dict]) -> str:
try:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages,
temperature=0.7,
max_tokens=500
)
return response.choices[0].message.content
except Exception as e:
print(f"API 调用失败: {str(e)}")
return ""
关键参数解析
temperature(0-2):- 值越高结果越随机
-
建议创意类应用使用 0.7-1.0
-
max_tokens: - 限制生成内容长度
- 需考虑输入 + 输出的总 token 限制
生产环境建议
费用监控
# 获取消耗的 token 数量
def get_usage(response):
return response.usage.total_tokens
流式响应处理
# 流式接收响应
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages,
stream=True
)
for chunk in response:
content = chunk.choices[0].delta.get("content", "")
print(content, end="", flush=True)
敏感数据过滤
推荐方案:
- 请求前过滤用户输入
- 使用
moderation端点检测违规内容 - 响应内容二次检查
代码规范要求
- 所有函数添加类型注解
- 异常捕获需具体化(如
openai.error.RateLimitError) - 遵循 PEP8 命名规范
延伸实践
建议尝试:
- 使用 FastAPI 构建 RESTful 网关
- 添加 JWT 鉴权层
- 实现对话历史存储(如 Redis)
完整项目示例可参考 OpenAI 官方 Cookbook 仓库。遇到具体问题时,建议先查阅 API 文档中的错误代码说明,多数常见问题都有明确解决方案。
正文完
