Skip to content
ComparisonsJuly 12, 2026

一份没有供应商锁定的 LLM API

LLM API 的锁定通常不是模型本身——而是你对着写的那套专有客户端形状。站在标准兼容 OpenAI 的表面上(外加 Anthropic /messages 和 OpenAI /responses),出口一直开着:你写的同一份代码,直接指向源供应商也能跑。

LLM API 的锁定实际长什么样

LLM 集成里的锁定很少以合同条款出现——它以代码出现。直接对着一家供应商的 SDK 写,它的请求形状、流式格式、工具调用 schema 和错误码会穿进整个应用。以后换第二家意味着整段重写,而不只是改一个配置值。

一层路由会让这更好或更糟,取决于它站在什么上面。如果这层发明自己的专有请求格式,你只是把锁定上移一层——现在你依赖路由器的方言而不是供应商的。如果它实现的是*标准*方言,你写的代码天生可移植。

站在标准上,而不是专有层

AnyRouter 实现已经存在的请求形状,而不是发明新的:OpenAI 的 Chat Completions、Anthropic 的 Messages,以及较新的 OpenAI Responses API,都在同一个端点上。代码库已经会说的那种 SDK 原样继续工作。

方言端点用途
OpenAI chat/api/v1/chat/completionsOpenAI chat SDK 的即插替换
Anthropic messages/api/v1/messagesClaude 客户端的即插替换
OpenAI Responses/api/v1/responses较新的 OpenAI Responses 表面
Embeddings/api/v1/embeddingsOpenAI 风格的向量嵌入

因为这些是公开标准而不是自家格式,打 AnyRouter 的同一份客户端代码也能打源 API——你的集成没有任何 AnyRouter 专有部分。

两行切进去,两行切回来

把现成的 OpenAI 客户端指到 AnyRouter,只改 base URL 和 key——别的不动:

from openai import OpenAI

client = OpenAI(
  base_url="https://anyrouter.dev/api/v1",   # was https://api.openai.com/v1
  api_key="sk-ar-v1-...",
)
resp = client.chat.completions.create(
  model="openai/gpt-5.5",
  messages=[{"role": "user", "content": "Hello"}],
)
Swap in: same OpenAI SDK, two changed values.

反过来是同一两行的反方向。这种对称才是锁定的真正测试:离开的 diff 和进来一样只要两行,你就从未被锁住。

选模型变成一个配置值

模型 id 是覆盖 28+ 家供应商 170+ 模型的 provider/model 字符串,所以换模型是改字符串,不是重新接入新 SDK、新鉴权方案和新的错误处理路径。今天 anthropic/claude-opus-4-8,明天 google/gemini-2.5-pro——同一客户端、同一把 key、同一个端点。

AnyRouter model detail page showing a single model addressable as a provider/model string.
换模型是改字符串,不是重写。

自己握着 key,出口也开着

最深的锁定是一份你走不掉的账单关系。$0 加价 BYOK 避开它:挂上你自己的供应商 key,AnyRouter 上面不加一分——没有按请求费、没有附加费,你只付给供应商。底层供应商关系仍是你的,没有被中间化。

  • 只用标准方言 — Chat Completions、Messages、Responses、Embeddings — 没有专有请求格式可依赖。
  • 模型 id 是配置值(provider/model),不是 SDK 集成。
  • $0 加价 BYOK 让供应商账单关系仍是你的。
  • 同一份客户端代码指向源供应商也能跑——切出去和切进来一样便宜。

在标准 API 表面上路由——没有专有方言,没有锁定。

免费拿一把 key

两分钟发第一笔请求

用自己的 key 免费开始,或充值按 token 计费。Go 每月 $4 额度 — $2/月,或捐一把 provider key 免费开通。

开始使用