从零开始:如何正确获取ChatGPT API接口并实现基础对话功能

4次阅读
没有评论

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

image.webp

前置准备

  1. OpenAI 账号注册
  2. 访问 OpenAI 官网 点击 ”Sign Up”,建议使用邮箱注册
  3. 完成邮箱验证后,需绑定手机号(支持 +86 中国大陆号码)
  4. 注意:部分国家 / 地区可能需要科学上网工具才能访问

    从零开始:如何正确获取 ChatGPT API 接口并实现基础对话功能

  5. API Key 获取

  6. 登录后进入API 密钥管理页面
  7. 点击 ”Create new secret key” 生成密钥(建议命名为 dev_key 等有意义的名称)
  8. 密钥只会显示一次,请立即妥善保存

  9. 免费额度说明

  10. 新账号通常有 $5 免费额度(有效期 3 个月)
  11. 可通过 Usage 页面 查看剩余额度
  12. 注意:gpt- 4 模型不包含在免费额度中

环境配置

  1. 创建 Python 虚拟环境

    python -m venv chatgpt_env
    source chatgpt_env/bin/activate  # Linux/Mac
    chatgpt_env\Scripts\activate    # Windows

  2. 安装依赖库

    pip install openai python-dotenv

  3. 安全存储 API 密钥

  4. 项目根目录创建 .env 文件:
    OPENAI_API_KEY= 你的实际密钥
  5. 创建 .gitignore 文件加入:
    .env
    __pycache__/

核心代码实现

基础同步请求

import os
from dotenv import load_dotenv
from openai import OpenAI, APIError

load_dotenv()  # 加载环境变量

client = OpenAI(api_key=os.getenv('OPENAI_API_KEY'))

def chat_completion(prompt: str) -> str:
    try:
        response = client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=[{"role": "user", "content": prompt}],
            temperature=0.7,  # 控制创造性(0-2)max_tokens=500,   # 限制响应长度
        )
        return response.choices[0].message.content
    except APIError as e:
        print(f"API 错误: {e}")
        return ""

异步请求改进

import asyncio
from openai import AsyncOpenAI

aclient = AsyncOpenAI(api_key=os.getenv('OPENAI_API_KEY'))

async def async_chat(prompt: str) -> str:
    try:
        response = await aclient.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=[{"role": "user", "content": prompt}],
            stream=True  # 启用流式响应
        )

        full_response = ""
        async for chunk in response:
            content = chunk.choices[0].delta.content
            if content:
                full_response += content
                print(content, end="")  # 实时输出

        return full_response
    except Exception as e:
        print(f"异步请求失败: {e}")
        return ""

避坑指南

  1. 常见错误码处理
  2. 401:API 密钥无效 → 检查密钥是否复制完整
  3. 429:请求过频 → 实现指数退避重试机制
  4. 503:服务不可用 → 等待后重试或切换地域

  5. 速率限制规避

    import time
    
    def request_with_retry(prompt, max_retries=3):
        for i in range(max_retries):
            try:
                return chat_completion(prompt)
            except APIError as e:
                if e.status_code == 429:
                    wait_time = 2 ** i  # 指数退避
                    print(f"等待 {wait_time} 秒后重试...")
                    time.sleep(wait_time)
                else:
                    raise
        return "请求失败"

  6. 敏感数据过滤

  7. 在发送请求前对用户输入进行关键词过滤
  8. 使用 re 模块检测隐私信息(如手机号、邮箱)

扩展实践

  1. 封装 Flask API

    from flask import Flask, request, jsonify
    
    app = Flask(__name__)
    
    @app.route('/chat', methods=['POST'])
    def chat_api():
        data = request.json
        response = chat_completion(data.get('prompt', ''))
        return jsonify({"response": response})

  2. 集成 LangChain

    from langchain.llms import OpenAI
    
    llm = OpenAI(
        temperature=0.5,
        openai_api_key=os.getenv('OPENAI_API_KEY')
    )
    
    print(llm("如何学习 Python 编程?"))

思考题

  1. 如何设计对话上下文管理,使 AI 能记住之前的对话?
  2. 提示:维护 messages 列表,交替保存 user 和 assistant 消息

  3. 当需要处理超长文本时,有哪些优化策略?

  4. 提示:考虑文本分块、摘要提取、使用 gpt-3.5-turbo-16k 等模型

结语

通过本文的实践,你应该已经掌握了 ChatGPT API 的基础接入方法。建议先从简单的同步请求开始,逐步尝试流式响应和异步调用。遇到问题时,善用 OpenAI 的 官方文档 和社区论坛。下一步可以尝试实现多轮对话系统或结合其他工具构建更复杂的 AI 应用。

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