共计 2157 个字符,预计需要花费 6 分钟才能阅读完成。
背景介绍:为什么选择 ChatGPT API?
ChatGPT 的出现让自然语言处理技术变得触手可及。通过 API,我们可以轻松将强大的对话能力集成到自己的应用中,比如:

- 智能客服系统
- 内容创作助手
- 编程辅助工具
- 语言学习应用
相比自行训练模型,API 方式具有明显优势:
- 无需担心模型训练和部署
- 可以快速验证产品概念
- 按使用量付费,成本可控
- 持续获得 OpenAI 的模型升级
准备工作:获取 API 密钥
- 访问 OpenAI 官网并登录
- 进入 API Keys 管理页面
- 点击 ”Create new secret key” 按钮
- 复制生成的 API 密钥(务必妥善保管)
注意:
- API 密钥一旦生成就无法再次查看完整内容
- 建议设置使用限额防止意外费用
- 测试阶段可以使用免费额度
发送第一个 API 请求
下面是一个完整的 Python 示例,展示如何发送最简单的对话请求:
import openai
# 设置 API 密钥
openai.api_key = "你的 API 密钥"
# 定义请求函数
def chat_with_gpt(prompt):
try:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo", # 指定使用的模型
messages=[{"role": "user", "content": prompt}
],
temperature=0.7, # 控制回答的随机性(0-2)
max_tokens=1000 # 限制响应长度
)
return response.choices[0].message.content
except Exception as e:
print(f"请求出错: {e}")
return None
# 测试对话
answer = chat_with_gpt("Python 如何实现快速排序?")
print(answer)
代码说明:
model参数指定使用哪个 ChatGPT 版本messages列表维护对话历史temperature控制回答的创造性(值越高越随机)- 添加了基本的异常处理
进阶技巧:优化对话体验
维护对话上下文
ChatGPT 本身是无状态的,要实现多轮对话需要我们自己维护上下文:
dialogue_history = []
def chat_with_context(user_input):
global dialogue_history
# 添加用户新消息
dialogue_history.append({"role": "user", "content": user_input})
try:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=dialogue_history,
temperature=0.7
)
# 添加 AI 回复到历史
ai_reply = response.choices[0].message.content
dialogue_history.append({"role": "assistant", "content": ai_reply})
return ai_reply
except Exception as e:
print(f"对话出错: {e}")
return None
关键参数调优
max_tokens:控制响应长度,避免过长回复temperature:根据场景调整(创意写作可设高些,技术问答设低些)top_p:替代 temperature 的另一种随机性控制方法
避坑指南
常见错误处理
- 认证失败:检查 API 密钥是否正确
- 超出配额:检查使用量或升级套餐
- 请求超时:实现重试逻辑
改进后的健壮版本:
from time import sleep
import openai
def robust_chat(prompt, retries=3):
for attempt in range(retries):
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.RateLimitError:
wait = 2 ** (attempt + 1) # 指数退避
print(f"达到速率限制,等待 {wait} 秒后重试...")
sleep(wait)
except Exception as e:
print(f"尝试 {attempt + 1} 失败: {e}")
if attempt == retries - 1:
return "服务暂时不可用,请稍后再试"
return None
速率限制应对
OpenAI API 采用令牌桶算法限流,建议:
- 重要应用实现排队机制
- 监控使用指标
- 考虑升级到更高配额
总结与思考
通过本文,你应该已经掌握了 ChatGPT API 的基本使用方法。从获取 API 密钥到发送第一个请求,再到优化对话体验和错误处理,这些都是构建对话应用的基础。
接下来可以思考:如何实现更复杂的多轮对话记忆?比如:
- 对话历史应该保存多长时间?
- 如何防止上下文过长导致的性能问题?
- 不同用户间的对话如何隔离?
这些问题留给你来探索和实践。在实际项目中,你可能还需要考虑用户认证、对话持久化存储等更多因素。
正文完
发表至: 未分类
近三天内
