从 Anthropic 官方切过来:迁移 SDK
/v1/messages、x-api-key、anthropic-version 都不变。变的是 model id,外加一条关于退役 id 的规则。
协议本来就是对的
Claude 模型走 POST https://token-share.app/v1/messages,用 x-api-key 鉴权,带 anthropic-version: 2023-06-01。这些正是 Anthropic SDK 本来就在发的路径和头,所以传输层要改的只有 base URL 一处。
请求体原样可用:messages、system、max_tokens、tools、tool_choice、stop_sequences、temperature、stream 都照旧。响应由 Anthropic 上游返回,所以 content block、stop_reason 和 usage 都是官方的,不是我们重新拼的。
目录接口 GET /v1/models 同样可用。带上 anthropic-version,返回的就是 Anthropic 形态的列表,所以按 Anthropic 方式做模型发现的客户端不用改。
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
baseURL: 'https://token-share.app',
apiKey: process.env.TOKEN_SHARE_KEY,
});
const message = await client.messages.create({
model: 'claude-sonnet-5',
max_tokens: 1024,
messages: [{ role: 'user', content: 'Explain this stack trace.' }],
});
for (const block of message.content) {
if (block.type === 'text') console.log(block.text);
}model id,以及那些退役的
这里路由了 12 个 Claude id。其中 claude-opus-5、claude-opus-4-8、claude-opus-4-6、claude-sonnet-5、claude-sonnet-4-6 这 5 个属于池内 id,按 0.1 倍计费;余下 7 个是 stable-* 专属通道,0.4 倍。这些 id 是我们自己的命名,请从目录里复制,别抄上游的发版说明。
有几个 id 已经退役、由专属通道接替,调用会返回 400 而不是被悄悄改道。消息里会点名替代者:发 claude-haiku-4-5,会被告知改用 stable-claude-haiku-4-5。这是故意的——替代者按 0.4 倍而不是 0.1 倍计费,要不要换得你自己拍板,不能变成一次「悄悄变贵」的升级。
另外,Claude 请求要求充值余额不低于 $2.00,且只从这个钱包扣。余额低于门槛,或者手里只有奖励余额,会在转发之前返回 402,code 为 claude_minimum_balance。
Claude Code 与带装饰的 id
Claude Code 会给模型名加装饰:[1m] 表示要长上下文变体,末尾的 (budget) 携带 thinking 预算,两者也可能同时出现,形如 name[1m](1024)。allowlist 会先把这些剥掉再判断基础 id,所以只要基础 id 在目录里,带装饰的写法照样能过。
要注意这是按基础 id 比对而非子串匹配,目录里没有的变体仍然被拒——真打错了字,不会被悄悄升级成另一个你并不打算付钱的模型。
至于工具链,用 ANTHROPIC_BASE_URL 设 base URL、ANTHROPIC_API_KEY 设 key,任何基于 Anthropic SDK 的工具都会跟着走,CLI 没有另一条独立的接入路径。