3. 主流大模型平台概览
说实话,很多初学者把调用大模型API想得太复杂了。其实核心就三步:注册账号、拿到钥匙、发个请求。我当年第一次调通的时候,看到终端里返回的那段文本,心里还挺激动的。今天咱们就把这三步走一遍。
3.1 注册与准备工作
先搞定账号。这一步没什么技术含量,但有几个坑我得提前跟你说。
- 一个能访问官网的网络环境
- 一个未注册过的邮箱(Gmail或Outlook比较稳)
- 一个支持国际支付的信用卡/借记卡
注册流程很简单:打开 platform..com,点"Sign up",填邮箱、设密码、收验证邮件。完事之后登录,进到Dashboard。
我个人习惯用Google账号直接登录,省事。但如果你用的是公司邮箱,记得确认一下IT部门有没有对外部API的访问限制——我在一家金融科技公司做项目时就遇到过,整个网络层把的域名给封了,折腾了半天才发现是网络策略的问题。
3.2 获取
登录之后,在左侧菜单找到 s,点进去。你会看到一个"Create new secret key"的按钮。
- 点击"Create new secret key"
- 给你的Key起个名字(比如"dev-key"或"my-first-key")
- 复制生成的Key字符串(以
sk-开头) - 立刻保存! 关掉弹窗后就再也看不到了
Key的安全守则:
- 不要把Key硬编码在代码里
- 不要提交到Git仓库
- 使用环境变量或密钥管理服务
- 定期轮换Key,尤其是团队协作时
我曾经见过一个同事,把Key直接写在Python脚本里,然后整个项目推到了公开仓库。不到两个小时,他的账号就被盗刷了200多美元。嗯,从那以后我再也不敢把Key放在代码里了。
3.3 理解API认证机制
的API认证用的是Bearer 机制。说白了,就是在每个请求的HTTP头里带上你的Key。
| 认证方式 | 说明 | 示例 |
|---|---|---|
| HTTP Header | 在请求头中设置 Authorization |
Authorization: Bearer sk-xxx... |
| Python SDK | 通过 参数传入 |
. = "sk-xxx" |
| 环境变量 | 设置 _ |
export _="sk-xxx" |
我个人最推荐用环境变量的方式。这样代码里干干净净,换环境也方便。你想想看,要是每个开发者的Key都不一样,写在代码里得多麻烦。
3.4 第一次Chat Completion调用
好,Key拿到了,咱们来写第一行代码。我用Python,因为生态最成熟。
先装包:
pip install
然后写一个最简单的调用:
import
# 设置(建议用环境变量)
. = "sk-your-key-here"
# 发起Chat Completion请求
response = .ChatCompletion.create(
model="-turbo",
messages=[
{"role": "system", "content": "你是一个助手。"},
{"role": "user", "content": "你好,请介绍一下你自己。"}
]
)
# 提取回复内容
reply = response.choices[0].message.content
print(reply)
跑一下,如果看到类似"你好!我是开发的AI助手..."这样的回复,恭喜你,第一次调用成功了。
小技巧:第一次跑的时候,如果报错说 module '' has no attribute 'ChatCompletion',八成是SDK版本太旧。升级一下:pip install --upgrade 。我每次新建项目都会先确认SDK版本,这个坑踩过太多次了。
3.5 理解请求与响应结构
刚才的代码虽然简单,但背后涉及的数据结构你得搞清楚。咱们拆开来看。
请求体(Request)的核心字段:
| 字段 | 类型 | 说明 |
|---|---|---|
model |
string | 模型名称,如 -turbo、 |
messages |
array | 对话消息列表,每条包含 role 和 content |
temperature |
number | 控制输出随机性,0-2之间,默认1 |
max_tokens |
integer | 最大输出数,默认4096 |
响应体(Response)的核心字段:
| 字段 | 说明 |
|---|---|
id |
请求的唯一标识,可用于追踪和调试 |
object |
固定为 chat.completion |
created |
创建时间的时间戳 |
model |
实际使用的模型名称 |
choices |
回复列表,通常只有一个元素 |
usage |
消耗统计,包含 prompt_tokens、completion_tokens、total_tokens |
你想想看,usage 这个字段多重要。我每次调完接口都会看一眼 total_tokens,心里大概有个数——这玩意儿直接跟钱挂钩。
3.6 核心流程全景图
下面这张图把整个调用链路串起来了。从你写代码到拿到回复,中间经过了哪些环节,一目了然。
3.7 常见错误与排查
第一次调用大概率不会一次成功。我把最常见的几个错误列出来,你遇到了直接对照着查。
| 错误信息 | 原因 | 解决方案 |
|---|---|---|
401 - Invalid Authentication |
Key无效或已过期 | 检查Key是否正确,重新生成一个 |
429 - Rate Limit Reached |
请求频率超限 | 降低请求频率,或升级套餐 |
500 - Internal Server Error |
服务端异常 | 等待后重试,检查状态页 |
400 - Invalid Request |
请求参数格式错误 | 检查messages结构、model名称 |
insufficient_quota |
账号余额不足 | 充值或切换免费额度账号 |
调试小技巧:遇到问题时,先把 .log = "debug" 打开。这样SDK会打印出完整的请求和响应信息,包括HTTP状态码和错误详情。我排查问题的时候,第一件事就是开debug日志。
3.8 用环境变量管理Key
刚才说了,不要把Key硬编码。咱们来写一个更规范的做法。
在项目根目录创建 .env 文件:
_=sk-your-key-here
_ORG_ID=org-xxx # 可选,多组织账号需要
然后在代码里加载:
import os
from dotenv import load_dotenv
import
load_dotenv()
. = os.getenv("_")
.organization = os.getenv("_ORG_ID")
# 后续调用不变
response = .ChatCompletion.create(
model="-turbo",
messages=[{"role": "user", "content": "Hello!"}]
)
别忘了装 python-dotenv:
pip install python-dotenv
记得把 .env 加到 .gitignore 里。我见过有人把 .env 也提交上去了,那场面……嗯,挺尴尬的。
3.9 多轮对话示例
Chat Completion的核心优势就是支持多轮对话。咱们来试一个带上下文的例子:
import
. = "sk-your-key"
messages = [
{"role": "system", "content": "你是一个Python编程助手。"},
{"role": "user", "content": "请写一个计算斐波那契数列的函数。"},
]
# 第一轮
response = .ChatCompletion.create(
model="-turbo",
messages=messages
)
reply = response.choices[0].message.content
print("助手:", reply)
# 把回复加入上下文
messages.append({"role": "assistant", "content": reply})
messages.append({"role": "user", "content": "能不能改成递归实现?"})
# 第二轮
response = .ChatCompletion.create(
model="-turbo",
messages=messages
)
reply2 = response.choices[0].message.content
print("助手:", reply2)
你看,每次调用都把之前的对话传回去,模型就能"记住"上下文。说白了,模型本身是无状态的,所谓的"记忆"全靠你把历史消息塞进 messages 数组里。
关于上下文长度的提醒:
每次调用都会把整个 messages 数组传给模型。如果对话很长,消耗会越来越大。-turbo的上下文窗口是4096个,是8192或更高。超出限制会报错,需要做截断或摘要。
3.10 计费与额度管理
最后聊一下钱的事。按计费,不同模型价格不同。
| 模型 | 输入价格(每1K ) | 输出价格(每1K ) |
|---|---|---|
| -turbo | $0.0015 | $0.002 |
| $0.03 | $0.06 | |
| -turbo | $0.01 | $0.03 |
你可以在Dashboard的 Usage 页面设置月度预算上限和告警阈值。我建议一开始设个$5的硬上限,防止调试时不小心跑出天价账单。
好了,到这里你已经完成了 API的注册、Key获取和第一次调用。下一步就是把这些能力集成到你的应用里了。