共计 2500 个字符,预计需要花费 7 分钟才能阅读完成。
背景介绍:ChatGPT 与 API 能力
ChatGPT 是 OpenAI 开发的大型语言模型,能够理解自然语言并生成流畅的文本响应。通过 API,开发者可以将其集成到自己的应用中,实现智能对话、内容生成等功能。API 提供了多种模型选择(如 gpt-3.5-turbo),支持上下文记忆和多轮对话。

环境准备
Python 环境配置
- 确保已安装 Python 3.6 或更高版本
- 推荐使用虚拟环境管理依赖:
python -m venv chatgpt_env source chatgpt_env/bin/activate # Linux/Mac chatgpt_env\Scripts\activate # Windows
获取 API 密钥
- 访问 OpenAI 官网并登录
- 进入 API Keys 页面创建新密钥
- 妥善保存密钥(如环境变量中)
核心实现:Python 调用示例
import openai
# 设置 API 密钥
openai.api_key = "your-api-key" # 实际使用中建议从环境变量读取
# 基础调用示例
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "system", "content": "你是一个有帮助的助手"},
{"role": "user", "content": "用 Python 写一个快速排序算法"}
],
temperature=0.7 # 控制生成文本的随机性
)
print(response.choices[0].message.content)
错误处理
常见错误及解决方案
- 401 Unauthorized:检查 API 密钥是否正确,是否有访问权限
- 429 Too Many Requests:降低请求频率或升级 API 套餐
- 503 Service Unavailable:稍后重试,检查 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(**kwargs):
return openai.ChatCompletion.create(**kwargs)
性能优化
请求批处理
对于多个独立问题,可以合并请求:
batch_response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[[{"role": "user", "content": "解释量子计算"}],
[{"role": "user", "content": "写一首关于春天的诗"}]
],
)
缓存策略
对相同输入缓存响应,可用 functools.lru_cache:
from functools import lru_cache
@lru_cache(maxsize=100)
def get_cached_response(prompt):
return openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}]
)
安全考量
- 密钥管理 :
- 永远不要将密钥硬编码在代码中
-
使用环境变量或密钥管理服务
export OPENAI_API_KEY="your-key" # Linux/Mac set OPENAI_API_KEY="your-key" # Windows -
请求限制 :
- 免费层有每分钟 3 次请求的限制
- 生产环境建议监控使用量
实战案例:命令行问答工具
import openai
import os
openai.api_key = os.getenv("OPENAI_API_KEY")
while True:
user_input = input("你:")
if user_input.lower() in ("exit", "quit"):
break
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": user_input}]
)
print(f"AI: {response.choices[0].message.content}")
避坑指南
-
超时设置 :默认无超时,网络不稳定时可能长时间挂起
openai.api_requestor.TIMEOUT = 10 # 10 秒超时 -
上下文管理 :长对话需维护消息历史
conversation = [{"role": "system", "content": "你是一个专业的编程助手"}] def chat(message): conversation.append({"role": "user", "content": message}) response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=conversation ) assistant_reply = response.choices[0].message.content conversation.append({"role": "assistant", "content": assistant_reply}) return assistant_reply -
标记化问题 :中文可能消耗更多 token,注意 max_tokens 限制
延伸学习
- 阅读官方 API 文档了解高级参数
- 尝试微调模型以适应特定领域
- 结合 LangChain 等框架构建复杂应用
动手练习:
– 实现一个支持多轮对话的终端应用
– 开发一个自动生成技术文档的工具
– 创建内容审核过滤器
通过本指南,你应该已经掌握了 ChatGPT API 的基本使用方法。接下来可以探索更复杂的应用场景,如构建知识库问答系统或自动化写作工具。开发过程中遇到问题时,别忘了查阅官方文档和社区讨论。
正文完
