拿到 Key 之后:10 分钟跑通第一个请求

入门与上手

你只需要三个信息——Base URL、Key、模型名。给出 curl、Python、Anthropic 兼容三种最小写法与验证方法。

接入失败的原因九成不在代码,而在这三个信息的组合不对:Base URL 少了 /v1、模型名不是对方站里的名字、或者拿 OpenAI 的写法去请求 Anthropic 兼容接口。下面按「最小可运行」给三种写法,并告诉你怎样确认自己真的打到了想用的模型。

先确认三个信息

Base URL(接口地址)
中转站控制台会给,形如 https://example.com/v1;多数 OpenAI 兼容接口要求以 /v1 结尾
API Key(密钥)
通常以 sk- 开头;本站所有检测都建议用临时 Key,不要用主力 Key
模型名
必须用对方站里列出的名字,例如 claude-sonnet-4-5、gpt-5、deepseek-chat;自动补全或猜测的名字一定失败

写法一:curl(最快确认链路通不通)

curl https://<你的站>/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-xxxx" \
  -d '{
    "model": "<站内模型名>",
    "messages": [{"role": "user", "content": "只回复两个字:你好"}],
    "max_tokens": 32
  }'

返回 JSON 里 200 且 choices[0].message.content 有内容,说明地址、Key、模型名三者都对。HTTP 状态码的含义见 报错速查表,例如 404 多半是模型名不对,401 是 Key 不对。

写法二:Python(OpenAI SDK)

from openai import OpenAI

client = OpenAI(
    api_key="sk-xxxx",
    base_url="https://<你的站>/v1",   # 注意 /v1
)

resp = client.chat.completions.create(
    model="<站内模型名>",
    messages=[{"role": "user", "content": "只回复两个字:你好"}],
    max_tokens=32,
)

print(resp.model)          # 服务端实际使用的模型名,重点看这个
print(resp.usage)          # prompt / completion / 缓存 token 明细
print(resp.choices[0].message.content)

写法三:Anthropic 兼容接口

Claude 系列在多数中转站走 Anthropic 原生协议,路径是 /v1/messages,用 x-api-key 而不是 Authorization,并必须带 anthropic-version 头:

curl https://<你的站>/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: sk-xxxx" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-sonnet-4-5",
    "max_tokens": 64,
    "messages": [{"role": "user", "content": "只回复两个字:你好"}]
  }'

两种协议的差别集中在三处:请求头(x-api-key vs Authorization)、路径(/v1/messages vs /v1/chat/completions)、以及返回结构(content 数组 vs choices)。把 OpenAI 的写法发到 /v1/chat/completions 去请求 Claude,如果站点做了兼容层可能通,没做就是 404。

怎样确认打到的真是你要的模型

  1. 看返回体的 model 字段服务端实际用的模型名会回传,与你请求的名字不一致时,先怀疑站点做了映射。
  2. 跑一条只有该模型知道的问题比如让它输出自己的知识截止日期或特定格式,用同题在官方渠道对比一次。
  3. 看 usage 的缓存字段连续两轮同前缀请求,第二轮应出现缓存读取命中;完全没有缓存字段,说明这条链路不走缓存。
  4. 核对扣费按站方公示单价算出应扣金额,与面板余额变化逐笔对照。

第一次就卡住的四种情况

现象多半原因怎么改
404 model not found模型名不是该站的名字复制站内模型列表里的原名,不要用别家的写法
401 / invalid api keyKey 复制带了空格、用了别的站的 Key重新复制完整 Key,确认没有换行
连接超时 / SSL 错误地址写错、少了 /v1、或本机代理拦截先 curl 单测;本地代理开着时注意别让代理吞掉域名
返回正常但内容是空的max_tokens 太小、或触发了内容过滤把 max_tokens 调到 64 以上再试
下一步:把报错看懂把状态码当成线索:401、429、5xx 分别该找谁、怎么查,这一篇直接给对照表。

常见问题

Base URL 到底要不要带 /v1?

看对方的文档,多数 OpenAI 兼容接口要带;不带时有的站会自动跳转,有的直接 404。判断方法:直接 curl 两个地址各试一次,哪个返回正常 JSON 用哪个。

同一次调用能不能只发一次请求?

验证阶段建议先串行单发,确认可用再上并发。并发测试容易触发 429,把「配置不对」和「被限流」混在一起,反而查不清。

为什么返回的 model 字段和请求的不一样?

两种可能:站点做了模型名映射(把便宜模型挂到贵模型名下),或上游做了版本别名。前者属于掉包,务必用同题对比或第三方检测交叉验证。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。