共计 2987 个字符,预计需要花费 8 分钟才能阅读完成。
环境准备
在开始之前,确保你的开发环境满足以下要求:

- Python 3.8 或更高版本
- 稳定的网络连接
- 一个可用的 OpenCode 账户
首先,我们需要安装必要的 Python 库。打开终端或命令提示符,运行以下命令:
pip install openai python-dotenv requests
openai库是与 ChatGPT API 交互的主要工具,python-dotenv用于管理环境变量,requests用于处理 HTTP 请求。
API 密钥获取
- 登录 OpenCode 平台,进入 API 管理页面
- 点击 ” 申请 API 密钥 ” 按钮
- 填写申请表单,选择 ”ChatGPT API” 服务
- 审核通过后,复制生成的 API 密钥
重要安全提示:
- 永远不要将 API 密钥直接硬编码在代码中
- 不要在版本控制系统中提交包含密钥的文件
- 建议使用
.env文件存储密钥,并确保该文件在.gitignore中
示例 .env 文件内容:
OPENAI_API_KEY=your_api_key_here
核心代码实现
下面是一个完整的 Python 实现示例,包含了基本对话功能、流式响应处理和错误处理:
import os
import openai
from dotenv import load_dotenv
import time
# 加载环境变量
load_dotenv()
# 配置 OpenAI API
openai.api_key = os.getenv("OPENAI_API_KEY")
# 设置请求超时时间(秒)REQUEST_TIMEOUT = 30
def chat_with_gpt(messages, model="gpt-3.5-turbo", temperature=0.7):
"""
与 ChatGPT 进行对话
参数:
messages: 对话消息列表,格式为[{"role": "user", "content": "你的消息"}]
model: 使用的模型名称
temperature: 控制生成文本的随机性(0-1)
返回:
str: 生成的回复内容
"""
try:
response = openai.ChatCompletion.create(
model=model,
messages=messages,
temperature=temperature,
# 启用流式响应
stream=True,
# 设置请求超时
request_timeout=REQUEST_TIMEOUT
)
full_response = ""print("AI: ", end="", flush=True)
# 处理流式响应
for chunk in response:
content = chunk["choices"][0].get("delta", {}).get("content", "")
if content:
print(content, end="", flush=True)
full_response += content
print()
return full_response
except openai.error.APIError as e:
print(f"API 错误: {e}")
except openai.error.APIConnectionError as e:
print(f"连接错误: {e}")
except openai.error.RateLimitError as e:
print(f"速率限制: {e}")
print("等待 10 秒后重试...")
time.sleep(10)
return chat_with_gpt(messages, model, temperature)
except openai.error.Timeout as e:
print(f"请求超时: {e}")
except Exception as e:
print(f"未知错误: {e}")
return None
# 示例使用
if __name__ == "__main__":
conversation_history = [{"role": "system", "content": "你是一个乐于助人的 AI 助手。"},
{"role": "user", "content": "请解释一下量子计算的基本概念"}
]
ai_response = chat_with_gpt(conversation_history)
# 将 AI 回复添加到对话历史中
if ai_response:
conversation_history.append({"role": "assistant", "content": ai_response})
避坑指南
Token 计算与费用控制
- ChatGPT API 按 token 计费,包括输入和输出
- 可以使用
tiktoken库估算 token 数量 - 示例代码:
import tiktoken
def count_tokens(text, model="gpt-3.5-turbo"):
encoding = tiktoken.encoding_for_model(model)
return len(encoding.encode(text))
敏感信息管理
- 永远不要在代码中直接写入 API 密钥
- 使用
.env文件存储敏感信息 - 在
.gitignore中添加.env文件
对话上下文管理
- 保持对话上下文合理长度(GPT-3.5-turbo 最大支持 4096 tokens)
- 可以考虑以下策略:
- 截断过长的对话历史
- 仅保留最近几轮对话
- 使用摘要方式压缩早期对话内容
扩展思考:集成到 Web 应用
要将此方案集成到现有 Web 应用(如 Flask 或 Django),可以考虑:
- 创建 API 端点处理用户请求
- 使用 WebSocket 实现实时对话
- 添加用户认证和速率限制
- 实现对话历史持久化存储
以下是一个简单的 Flask 集成示例:
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/api/chat', methods=['POST'])
def chat_endpoint():
user_message = request.json.get('message')
conversation = request.json.get('conversation', [])
# 添加用户消息到对话历史
conversation.append({"role": "user", "content": user_message})
# 调用 ChatGPT
ai_response = chat_with_gpt(conversation)
if ai_response:
# 添加 AI 回复到对话历史
conversation.append({"role": "assistant", "content": ai_response})
# 返回响应
return jsonify({
'response': ai_response,
'conversation': conversation
})
return jsonify({'error': 'Failed to get response from AI'}), 500
if __name__ == '__main__':
app.run(debug=True)
总结
通过本指南,你已经学会了如何通过 OpenCode 平台连接 ChatGPT API。关键点包括:
- 安全管理 API 密钥
- 实现基本的对话功能
- 处理流式响应
- 添加健壮的错误处理
- 控制 token 使用和成本
这些基础功能可以进一步扩展为更复杂的应用,如客服机器人、内容生成工具或编程助手。
正文完
