零一万物API实战:密钥申请与Python调用示例
零一万物API使用教程的核心操作只有三步:在开放平台创建API Key,确认要调用的模型名称,然后用兼容OpenAI的接口地址发起请求。
下面按实际动手顺序展开,每一步给出后台路径或代码片段,并说明执行后应该看到什么结果。
进入控制台拿到API Key和模型名
登录零一万物开放平台后,先找到API密钥管理页面。
不同时期控制台菜单名称可能略有差异,通常位于“API Keys”或“密钥管理”入口。
点击创建新密钥,系统会生成一串以 sk- 开头的字符串。
这串密钥只会在创建时完整显示一次,建议立即复制到密码管理工具或服务器环境变量中。
创建密钥后,还需要确认可用的模型名称。
在平台的模型列表或文档页面查看当前开放的模型标识,例如对话模型通常有对应的model参数值。
模型名称必须与平台文档一致,填错会直接导致请求返回模型不存在或参数错误。
如果计划在服务器上调用,不要把密钥硬编码进代码仓库。
推荐写入环境变量:
export YI_API_KEY="sk-你的密钥"
Windows本地调试可在PowerShell中临时设置:
$env:YI_API_KEY="sk-你的密钥"
用Python发起第一次对话请求
零一万物提供与OpenAI兼容的接口,因此可以直接使用 requests 库发POST请求,也可以使用OpenAI SDK并修改 base_url。
下面是不依赖额外SDK的写法,便于看清请求结构:
import os
import requests
api_key = os.environ.get("YI_API_KEY")
url = "https://api.lingyiwanwu.com/v1/chat/completions"
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
payload = {
"model": "yi-large",
"messages": [
{"role": "user", "content": "用一句话解释什么是API"}
]
}
resp = requests.post(url, headers=headers, json=payload, timeout=30)
print(resp.status_code)
print(resp.json())
运行前先安装依赖:
pip install requests
执行后如果返回状态码 200,响应JSON中通常包含 choices 数组,第一个元素的 message.content 就是模型回答。
如果返回其他状态码,先看响应体里的 error 字段,再对照下一节的排查方向。
常见报错的定位顺序
遇到调用失败时,按“网络是否通、密钥是否有效、模型名是否对、请求体是否合法”的顺序检查,比盲目改代码更高效。
- 401 Unauthorized:密钥缺失、复制不完整或环境变量未生效。在Python中打印
api_key的前几位确认是否读到值,注意不要打印完整密钥。 - 404 或模型不存在:
model参数与平台当前提供的模型标识不一致。回到控制台模型列表核对,不要凭记忆填写。 - 请求超时:先在服务器上执行
curl -I https://api.lingyiwanwu.com检查出网和DNS是否正常。公司内网或部分云主机可能需要配置代理或放行443端口。 - 返回格式不是预期JSON:检查请求头是否带了
Content-Type: application/json,以及是否被中间代理拦截返回了HTML错误页。
另外,不要把密钥写在公开的Git仓库、前端代码或日志里。
如果怀疑密钥泄露,应在控制台删除旧密钥并重新创建。
验证调用是否真正可用
代码跑通一次不代表稳定可用。
建议做两个简单验证:第一,连续发起三次请求,确认每次都能返回 choices 且内容非空;
第二,故意传一个错误的模型名,确认接口返回明确的错误信息而不是超时。
前者验证正常链路,后者验证错误处理逻辑。
如果要在生产环境使用,还应设置合理的超时和重试次数,并对返回内容做空值判断。
例如:
if resp.status_code == 200:
data = resp.json()
content = data.get("choices", [{}])[0].get("message", {}).get("content")
if not content:
print("返回内容为空,检查模型名或请求参数")
else:
print(f"请求失败,状态码:{resp.status_code},详情:{resp.text}")
几个容易忽略的细节
模型名称会随平台调整:不同账号或不同时期可用的模型可能不同,以控制台和官方文档当前展示为准,不要照搬旧教程里的名称。
接口地址区分版本:兼容OpenAI的对话接口路径通常包含 /v1/chat/completions,拼接时注意不要多写或漏写版本段。
服务器时间不准会导致证书校验失败:如果报SSL证书错误,先执行 date 检查系统时间,偏差过大时用 ntpdate 或 chronyd 同步。
请求频率限制:平台可能对免费额度或调用频率有限制,返回429时降低并发或查看账户额度,而不是反复重试。
按上面的顺序操作,零一万物API从创建密钥到Python调用的链路基本可以一次走通。
真正需要花时间的是密钥管理和错误处理,而不是请求本身。