工具接入

在 LiteLLM 中使用 Claude API

通过 apitoken.sale 在 LiteLLM 中使用 Claude API,关键只有一个参数:LiteLLM 原生支持 Anthropic Messages 协议,所以保留 anthropic/ 模型前缀,只需覆盖 api_base。请求和响应结构完全不变,每 token 便宜 50%——无论从脚本里调用 litellm.completion(),还是用 LiteLLM 代理统一承接整个技术栈。

·

把 litellm.completion() 指向折扣端点

LiteLLM 本身已实现 Anthropic Messages API,所以把 Claude 路由到 apitoken.sale 只需多传一个参数:保留 anthropic/ 模型前缀,把 api_base 设为网关地址,并传入你的预付费密钥。请求与响应保持标准的 Anthropic 格式——变化的只有端点和每 token 价格,Claude 消费统一比官方标价低 50%。

import litellm

response = litellm.completion(
    model="anthropic/claude-opus-4-8",
    api_base="https://router.apitoken.sale",
    api_key="sk-pool-•••",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello"}],
    stream=True,
)
for chunk in response:
    print(chunk.choices[0].delta.content or "", end="")

这里起作用的有三点。anthropic/ 前缀选中 LiteLLM 的 Anthropic provider,因此 max_tokens、temperature、tools 和流式输出会精确映射到 Messages API,与直连上游一致——而 Messages API 要求必传 max_tokens,所以请显式设置,不要依赖默认值。api_base 决定这些请求发到哪里,按调用粒度生效。api_key 则是你的网关密钥:同一把 sk-pool-… 密钥适用于所有受支持的 Claude 模型,在 claude-opus-4-8、claude-sonnet-5 和 claude-haiku-4-5 之间切换只是改一个字符串,而不是重新接入。

实践中有两个坑。永远不要去掉 anthropic/ 前缀:裸写 claude-opus-4-8 会让 LiteLLM 猜测 provider,猜错就会发错协议或直接拒绝密钥。另外从环境变量读取密钥(api_key=os.environ["APITOKEN_KEY"]),不要把它粘贴进最终会提交到 git 的 notebook 或配置文件。

另见: 在 LangChain 中使用 Claude API

一个 LiteLLM 代理,承接所有需要 Claude 的服务

单个脚本用直接调用就够了。一旦有多个服务、notebook 和编码智能体都要用 Claude,就把 LiteLLM 跑成代理:一份 YAML 文件集中管理端点和密钥,所有客户端通过 LiteLLM 的 OpenAI 兼容接口与代理通信,上游流量仍走 Anthropic 协议。

# config.yaml
model_list:
  - model_name: claude-opus-4-8
    litellm_params:
      model: anthropic/claude-opus-4-8
      api_base: https://router.apitoken.sale
      api_key: sk-pool-•••
  - model_name: claude-haiku-4-5
    litellm_params:
      model: anthropic/claude-haiku-4-5
      api_base: https://router.apitoken.sale
      api_key: sk-pool-•••
router_settings:
  fallbacks:
    - claude-opus-4-8:
        - claude-haiku-4-5
  1. 01安装 proxy 扩展,并把上面的 YAML 保存为 config.yaml:pip install "litellm[proxy]"。
  2. 02启动网关:litellm --config config.yaml --port 4000。
  3. 03把任意 OpenAI 兼容客户端指向 http://localhost:4000,model="claude-opus-4-8"——代理会把调用转换成发往 https://router.apitoken.sale 的 Anthropic Messages 请求。
  4. 04在 apitoken.sale 控制台追踪消费:用量按密钥记录、精确到 token,一把代理密钥就能为它背后的每个服务给出一条独立的成本明细。

router_settings 这两行很值:当 claude-opus-4-8 报错或不可用时,LiteLLM 会改用 claude-haiku-4-5 重试请求,而不是把失败抛给客户端。对于会话一开就是数小时的长时运行智能体,这个 fallback 就是静默重试与进程僵死之间的差别。

流式输出、工具调用和提示词缓存全部保留

那些通常在协议转换层之后就会坏掉的功能,在这里都照常工作,因为网关提供的是原生 Anthropic Messages API,而不是把你的流量重新编码成另一种协议。凡是 LiteLLM 能用 Anthropic 术语表达的东西,都会原封不动地到达模型。

  • 流式输出:stream=True 产生同样的增量 SSE 事件,逐 token 渲染的 UI 和智能体行为完全一致。
  • 工具调用:tools、tool_choice 和 tool_result 的完整往返映射到标准 Messages 块——函数调用智能体无需任何改造。
  • 提示词缓存:cache_control 断点按上游文档所述工作,缓存读取按模型页面列出的缓存费率计费。

这一点对构建在 LiteLLM 之上的工具比 LiteLLM 本身更重要:许多编码智能体和框架的 Anthropic 流量都经由 LiteLLM 路由,它们无需修改自身代码,就能从同一份配置中继承折扣端点。

把 GPT、Gemini 和 Kimi 混进同一个 model_list

网关密钥是多供应商的,所以你刚配好的代理并不只服务 Claude。每个供应商通道加一条配置,所有模型都从同一个预付余额扣费——不用开第二个账户,也不用轮换第二把密钥。

# additional model_list entries
  - model_name: gpt-5.6-terra
    litellm_params:
      model: openai/gpt-5.6-terra        # OpenAI-compatible lane
      api_base: https://router.apitoken.sale/v1
      api_key: sk-pool-•••
  - model_name: gemini-3.6-flash
    litellm_params:
      model: gemini/gemini-3.6-flash     # native Gemini lane
      api_base: https://router.apitoken.sale
      api_key: sk-pool-•••

Kimi 模型走同样的两条通道——Anthropic Messages 或通用 OpenAI 兼容端点——所以一套 LiteLLM 部署可以同时承接受支持的 Claude、GPT、Gemini 和 Kimi 模型。每个供应商继续使用 LiteLLM 本来就会说的协议,只有 base URL 和密钥指向了新地址。

切换后什么变了,什么保持不变

切换端点被刻意设计得平淡无奇,但值得精确说明:技术栈里哪些部分会感知到变化,哪些不会。

层级你要设置什么会发生什么
模型 IDanthropic/claude-opus-4-8、anthropic/claude-sonnet-5、anthropic/claude-haiku-4-5ID 与上游一致;前缀用于选择 Anthropic 协议
端点https://router.apitoken.sale原生 Anthropic Messages API,而非 OpenAI 格式转换
功能流式输出、工具调用、提示词缓存行为与直连官方端点时一致
价格每 token 比标价低 50%适用于同一预付余额下所有受支持的 Claude 模型
记账一把 sk-pool-… 密钥控制台按密钥统计消费,精确到 token

先给流量做预算,再放量

计费是预付费模式:先充值余额,每个请求按实际 token 成本精确扣费,Claude 模型按折扣价计。没有需要提前预估的月度承诺,这让 LiteLLM 的按模型成本追踪只是锦上添花,而非生存工具——权威数字在 apitoken.sale 控制台里,按密钥拆分,精确到 token。

把整个机群指向代理之前,先用一把密钥跑一天有代表性的流量,从控制台读取真实消耗;按真实 token 外推,而不是按标价算术。如果你已知大致的请求构成,下面链接的成本计算器可以提前帮你算好这笔账。

各模型价格(含缓存费率)

用免费计算器估算你的 LiteLLM 流量成本

常见问题

如何在 LiteLLM 中设置自定义 Anthropic base URL?

直接向 litellm.completion() 传 api_base,或在代理配置 model_list 的 litellm_params 下设置它。LiteLLM 随后会把 Anthropic Messages 格式的请求发往该端点——对 apitoken.sale 来说就是 https://router.apitoken.sale。

通过网关路由 Claude 时要保留 anthropic/ 模型前缀吗?

要。使用 anthropic/claude-opus-4-8(或任何受支持的模型),让 LiteLLM 应用 Anthropic 协议;只有端点和密钥变化,去掉前缀会让 LiteLLM 猜测 provider。

自定义 api_base 时 LiteLLM 的流式输出还能用吗?

能。stream=True 会通过网关返回同样的增量 Anthropic 事件,逐 token 渲染和智能体循环的行为与直连官方端点完全一致。

单个 LiteLLM 代理能同时服务 Claude、GPT 和 Gemini 吗?

能。一把 apitoken.sale 密钥覆盖 Claude、GPT、Gemini 和 Kimi 的受支持模型;每个供应商作为独立的 model_list 条目添加——anthropic/ 和 gemini/ 模型指向 https://router.apitoken.sale,openai/ 模型指向 https://router.apitoken.sale/v1。

如何在 LiteLLM 中实现 Claude 模型间的故障转移?

在代理配置中使用 router_settings.fallbacks,把主部署映射到备用部署——例如 claude-opus-4-8 到 claude-haiku-4-5。两个条目指向同一个网关和同一把密钥,所以重试仍在折扣余额上扣费。

先试后付:通过 Google/GitHub 创建的新账户包含 $5 平台欢迎奖励余额。