共计 2696 个字符,预计需要花费 7 分钟才能阅读完成。
ChatGPT 基础概念
ChatGPT 是 OpenAI 基于 GPT 系列模型开发的对话 AI,与传统聊天机器人相比有三大核心差异:

- 理解能力:通过海量数据训练,能理解复杂语义和上下文关系,而非依赖预设规则
- 生成能力:可以创造连贯的原创内容,而不仅是检索固定回答
- 多轮对话:支持长达 4096 个 token 的上下文记忆,实现真正意义上的连续对话
典型应用场景包括:智能客服、内容创作辅助、编程助手、语言学习陪练等。
API 接入准备
获取 API 密钥
- 访问 OpenAI 平台 并注册账号
- 在控制台 ”API Keys” 页面点击 ”Create new secret key”
- 妥善保存生成的密钥字符串(注意:密钥只显示一次)
安全配置最佳实践
推荐使用环境变量存储密钥,避免硬编码在代码中:
# Linux/MacOS
$ export OPENAI_API_KEY='your-api-key'
# Windows(PowerShell)
> $env:OPENAI_API_KEY='your-api-key'
基础对话实现
Python 示例代码
import openai
import os
from typing import Dict, Union
# 从环境变量加载 API 密钥
openai.api_key = os.getenv("OPENAI_API_KEY")
def chat_with_gpt(prompt: str, model: str = "gpt-3.5-turbo") -> Dict[str, Union[str, float]]:
"""
基础对话函数
:param prompt: 用户输入的对话内容
:param model: 使用的模型版本,默认为 gpt-3.5-turbo
:return: 包含响应内容和元数据的字典
"""
try:
response = openai.ChatCompletion.create(
model=model,
messages=[{"role": "user", "content": prompt}],
temperature=0.7, # 控制生成随机性(0-2)
max_tokens=1000, # 限制响应长度
)
return {"content": response.choices[0].message.content,
"usage": response.usage,
"success": True
}
except openai.error.AuthenticationError:
return {"error": "API 密钥无效", "success": False}
except openai.error.RateLimitError:
return {"error": "达到速率限制", "success": False}
except Exception as e:
return {"error": str(e), "success": False}
if __name__ == "__main__":
while True:
user_input = input("You:")
if user_input.lower() in ['exit', 'quit']:
break
result = chat_with_gpt(user_input)
if result["success"]:
print(f"AI: {result['content']}")
else:
print(f"错误: {result['error']}")
代码关键点解析
- 消息结构 :ChatGPT API 要求消息以
role(user/assistant/system) 和content的格式组织 - 温度参数 :
temperature值越高输出越随机(0-2),建议 0.7-1.0 平衡创造性和稳定性 - 错误处理:包含认证错误、速率限制等常见异常的捕获
上下文管理技术
实现多轮对话需要维护完整的对话历史:
dialogue_history = []
def contextual_chat(new_query: str):
global dialogue_history
# 添加用户新提问到历史
dialogue_history.append({"role": "user", "content": new_query})
try:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=dialogue_history,
temperature=0.8
)
# 添加 AI 响应到历史
ai_response = response.choices[0].message.content
dialogue_history.append({"role": "assistant", "content": ai_response})
# 控制历史长度避免超过 token 限制
if len(dialogue_history) > 10:
dialogue_history = dialogue_history[-10:]
return ai_response
except Exception as e:
print(f"对话出错: {str(e)}")
return None
性能优化策略
请求频率控制
OpenAI API 有每分钟请求限制(免费账号 3 次 / 分钟),建议:
- 客户端实现请求队列
- 使用
tenacity库实现自动重试 - 监控
x-ratelimit-remaining响应头
响应缓存
对相同输入可缓存响应降低 API 调用:
from functools import lru_cache
@lru_cache(maxsize=100)
def cached_chat(prompt: str) -> str:
return chat_with_gpt(prompt)["content"]
超时处理
import requests
# 为 API 调用添加超时
response = openai.ChatCompletion.create(
...,
request_timeout=15 # 15 秒超时
)
生产环境避坑指南
- Token 超限:
- 问题:4096token 限制导致长对话被截断
-
方案:定期总结对话内容,重置上下文
-
响应不一致:
- 问题:相同输入得到不同输出
-
方案:固定
temperature=0或使用seed参数 -
内容审核:
- 问题:生成不当内容
-
方案:启用
moderation端点预过滤输入 -
成本失控:
- 问题:意外高额 API 费用
-
方案:设置使用量警报和使用限制
-
响应延迟:
- 问题:高峰时段 API 响应慢
- 方案:实现客户端降级策略
进阶练习建议
- 角色扮演 :尝试通过
system角色消息设置 AI 行为特征 - 函数调用 :探索
function calling实现结构化数据提取 - 微调模型:使用自有数据对基础模型进行定制化训练
正文完
发表至: 未分类
近一天内
