OpenCode连接ChatGPT实战指南:从零搭建AI开发环境

2次阅读
没有评论

共计 2987 个字符,预计需要花费 8 分钟才能阅读完成。

image.webp

环境准备

在开始之前,确保你的开发环境满足以下要求:

OpenCode 连接 ChatGPT 实战指南:从零搭建 AI 开发环境

  • Python 3.8 或更高版本
  • 稳定的网络连接
  • 一个可用的 OpenCode 账户

首先,我们需要安装必要的 Python 库。打开终端或命令提示符,运行以下命令:

pip install openai python-dotenv requests

openai库是与 ChatGPT API 交互的主要工具,python-dotenv用于管理环境变量,requests用于处理 HTTP 请求。

API 密钥获取

  1. 登录 OpenCode 平台,进入 API 管理页面
  2. 点击 ” 申请 API 密钥 ” 按钮
  3. 填写申请表单,选择 ”ChatGPT API” 服务
  4. 审核通过后,复制生成的 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),可以考虑:

  1. 创建 API 端点处理用户请求
  2. 使用 WebSocket 实现实时对话
  3. 添加用户认证和速率限制
  4. 实现对话历史持久化存储

以下是一个简单的 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。关键点包括:

  1. 安全管理 API 密钥
  2. 实现基本的对话功能
  3. 处理流式响应
  4. 添加健壮的错误处理
  5. 控制 token 使用和成本

这些基础功能可以进一步扩展为更复杂的应用,如客服机器人、内容生成工具或编程助手。

正文完
 0
评论(没有评论)