第4章:OpenAI API入门:注册、获取API Key、发送第一个Chat Completion请求

好,咱们正式开始动手了。

前面几章聊了不少概念和架构,我知道你肯定手痒了。今天我们就来点实际的——注册OpenAI账号、拿到API Key、然后发出你的第一个Chat Completion请求。说实话,这一步迈过去,后面就顺了。

4.1 注册OpenAI账号

先说说注册。你可能会想,不就是填个邮箱吗?嗯,没那么简单。我当年第一次注册时,就因为网络问题折腾了半小时。

注册流程其实就三步:

  1. 访问官网:打开 platform.openai.com
  2. 点击注册:用Google账号或邮箱注册都行。我个人习惯用邮箱,方便管理
  3. 验证手机号:这一步是必须的。注意,OpenAI对某些国家的号码有限制。我建议用+86的手机号,大部分情况都能过

⚠️ 注意:如果你在注册时遇到「not available in your country」的提示,别慌。这不是你的问题。可以尝试换个网络环境,或者用临时手机号服务。但我不推荐用虚拟号,容易被封。

注册成功后,你会进入Dashboard。嗯,界面很简洁,但功能不少。我们重点关注两个地方:API Keys和Billing。

4.2 获取API Key

API Key就是你的通行证。没有它,你连OpenAI的门都进不去。

获取步骤:

  1. 登录后,点击左侧菜单的「API Keys」
  2. 点击「Create new secret key」
  3. 给你的Key起个名字,比如「my-first-key」
  4. 复制并保存好!关闭页面后就再也看不到了

🔑 重要提醒:API Key就像你的银行卡密码。不要把它硬编码在代码里,不要上传到GitHub。我曾经见过一个同事,不小心把Key提交到了公开仓库,结果几分钟内就被盗刷了200美元。嗯,那场面……

拿到Key之后,建议先设置一下使用限额。在Billing页面可以设置月度预算,防止意外超支。我个人习惯设一个$10的软限制,够用又安全。

4.3 理解Chat Completion API

好了,Key到手了。接下来我们看看怎么用它。

OpenAI的Chat Completion API,说白了就是「你发一段对话,它回一段回复」。它的核心参数不多,但每个都很关键。

参数 说明 我的建议
model 模型名称,比如gpt-4、gpt-3.5-turbo 新手先用gpt-3.5-turbo,便宜又稳定
messages 对话消息列表,包含role和content role有system、user、assistant三种
temperature 控制随机性,0-2之间 做客服用0.2,做创意用0.8
max_tokens 最大输出长度 别设太大,浪费钱

你想想看,这些参数其实就是在控制模型的行为。temperature越高,回答越「天马行空」;越低,越「一本正经」。我在做企业级应用时,通常把temperature设在0.3左右,既保证准确性,又保留一点灵活性。

4.4 发送第一个请求

终于到了最激动人心的环节。我们直接用Python发一个请求。为什么用Python?因为简单、直观、生态好。

先安装依赖:

pip install openai

然后写代码:

from openai import OpenAI

client = OpenAI(
    api_key="你的API Key"  # 记得换成你自己的
)

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "你是一个专业的AI助手。"},
        {"role": "user", "content": "请用一句话介绍你自己。"}
    ],
    temperature=0.7,
    max_tokens=100
)

print(response.choices[0].message.content)

运行一下,你会看到类似这样的输出:

我是一个专业的AI助手,可以帮你解答问题、处理文本、分析数据,还能陪你聊天。

💡 小技巧:第一次运行时,如果报错说「模块找不到」,检查一下Python版本。我建议用3.8以上。另外,API Key一定要放在环境变量里,别硬编码。比如:os.getenv("OPENAI_API_KEY")

为什么会这样?因为OpenAI的SDK帮我们封装了HTTP请求。你看到的client.chat.completions.create,背后其实是一个POST请求到https://api.openai.com/v1/chat/completions

4.5 理解返回结果

返回的response是一个对象,里面包含了很多信息。我们拆开看看:

{
  "id": "chatcmpl-xxx",
  "object": "chat.completion",
  "created": 1234567890,
  "model": "gpt-3.5-turbo",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "我是AI助手..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 30,
    "completion_tokens": 20,
    "total_tokens": 50
  }
}

重点看三个字段:

  • choices:模型返回的回复内容。一般取第一个就行
  • finish_reason:结束原因。stop表示正常结束,length表示被max_tokens截断了
  • usage:消耗的token数。这可是真金白银啊

我记得有一次,我写了个循环调用API,结果忘了检查finish_reason。模型输出被截断了,但我还在继续处理。嗯,那天的数据全乱了。所以,一定要检查finish_reason

4.6 常见错误与避坑

新手最容易遇到这几个问题:

  • 401 Unauthorized:API Key错了或者过期了。重新生成一个试试
  • 429 Rate Limit:请求太频繁。加个sleep或者用指数退避
  • 400 Bad Request:参数格式不对。检查messages结构
  • Insufficient Quota:余额不足。去Billing页面充值

⚠️ 我曾经踩过的坑:有一次我把API Key写在了代码里,然后不小心把代码发到了公司群里。虽然马上撤回了,但谁知道有没有人已经看到了?从那以后,我所有的Key都放在环境变量里,代码里只写os.getenv()。你也别嫌麻烦,安全第一。

4.7 下一步做什么

好了,你已经成功发出了第一个请求。恭喜你,正式迈入了大模型API的世界。

接下来,你可以试试:

  • 修改system prompt,看看模型行为怎么变
  • 调整temperature,感受一下随机性的变化
  • 多轮对话,把历史消息也传进去

我个人建议,先玩个半小时,把各种参数都调一遍。只有亲手试过,才能真正理解每个参数的作用。下一章,我们会深入聊Prompt Engineering,那才是真正拉开差距的地方。

嗯,今天就到这里。动手吧!