共计 1806 个字符,预计需要花费 5 分钟才能阅读完成。
背景痛点
初次接触 ChatGPT API 的开发者常遇到以下问题:

- 认证流程复杂:API 密钥管理不规范导致安全风险
- token 计算模糊:超过模型限制(如 gpt-3.5-turbo 的 4096 tokens)引发请求失败
- 会话状态混乱:多轮对话时丢失上下文历史记录
- 响应解析困难:JSON 嵌套结构处理不当影响数据提取
技术对比:Completion API vs Chat API
- Completion API
- 适用场景:单次文本补全 / 生成(如邮件草拟)
-
特点:输入输出为纯文本,无多轮对话记忆
-
Chat API
- 适用场景:对话式交互(如客服机器人)
- 特点:支持
messages数组维护对话历史,包含 role(system/user/assistant)区分角色
核心实现步骤
环境准备
# 安装官方库(需 Python3.8+)pip install openai
配置 API 密钥:
import openai
from typing import List, Dict
openai.api_key = "sk-your-key-here" # 从环境变量读取更安全
基础对话实现
def chat_completion(prompt: str, model: str = "gpt-3.5-turbo") -> str:
try:
response = openai.ChatCompletion.create(
model=model,
messages=[{"role": "user", "content": prompt}],
temperature=0.7 # 控制创造性(0-2,越高输出越随机))
return response.choices[0].message.content
except openai.error.AuthenticationError:
print("认证失败,请检查 API 密钥")
except openai.error.RateLimitError:
print("请求超限,请调整调用频率")
流式响应处理
def stream_response(prompt: str):
"""适用于长文本生成(如实时显示聊天回复)"""
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) # 实时输出
生产级建议
避坑指南
-
超时设置:默认 60 秒可能不足,建议:
openai.api_requestor.TIMEOUT = 120 # 单位秒 -
敏感词过滤:在返回结果前添加校验层
BLACKLIST = ["暴力", "政治敏感词"] def safe_response(text: str) -> str: for word in BLACKLIST: if word in text: return "内容违规" return text
性能优化
-
缓存策略:对高频相同请求缓存结果
from functools import lru_cache @lru_cache(maxsize=100) def cached_chat(prompt: str) -> str: return chat_completion(prompt) -
并发限制:避免突发流量
from ratelimit import limits, sleep_and_retry @sleep_and_retry @limits(calls=30, period=60) # 每分钟 30 次 def limited_api_call(prompt: str): return chat_completion(prompt)
动手实验:Prompt 工程挑战
尝试优化以下场景的提示词,观察输出差异:
-
基础版:
"请写一篇关于人工智能的文章" -
进阶版:
"以科技记者身份,写 800 字关于 AI 伦理的深度报道,要求包含 3 个行业案例"
对比两者在内容结构、信息密度上的区别,体会具体需求描述对输出质量的影响。
总结
通过合理配置 API 参数、实现健壮的错误处理以及优化提示词设计,开发者可以快速构建高质量的 ChatGPT 集成应用。建议从简单对话开始,逐步扩展到复杂业务场景,过程中注意监控 token 消耗和响应延迟等关键指标。
正文完
