第4章:OpenAI API入门:注册、获取API Key、发送第一个Chat Completion请求
好,咱们正式开始动手了。
前面几章聊了不少概念和架构,我知道你肯定手痒了。今天我们就来点实际的——注册OpenAI账号、拿到API Key、然后发出你的第一个Chat Completion请求。说实话,这一步迈过去,后面就顺了。
4.1 注册OpenAI账号
先说说注册。你可能会想,不就是填个邮箱吗?嗯,没那么简单。我当年第一次注册时,就因为网络问题折腾了半小时。
注册流程其实就三步:
- 访问官网:打开
platform.openai.com - 点击注册:用Google账号或邮箱注册都行。我个人习惯用邮箱,方便管理
- 验证手机号:这一步是必须的。注意,OpenAI对某些国家的号码有限制。我建议用+86的手机号,大部分情况都能过
⚠️ 注意:如果你在注册时遇到「not available in your country」的提示,别慌。这不是你的问题。可以尝试换个网络环境,或者用临时手机号服务。但我不推荐用虚拟号,容易被封。
注册成功后,你会进入Dashboard。嗯,界面很简洁,但功能不少。我们重点关注两个地方:API Keys和Billing。
4.2 获取API Key
API Key就是你的通行证。没有它,你连OpenAI的门都进不去。
获取步骤:
- 登录后,点击左侧菜单的「API Keys」
- 点击「Create new secret key」
- 给你的Key起个名字,比如「my-first-key」
- 复制并保存好!关闭页面后就再也看不到了
🔑 重要提醒: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,那才是真正拉开差距的地方。
嗯,今天就到这里。动手吧!