OpenAI SDK 能打不是 OpenAI 的模型吗?
能。openai 包在 Python 或 JS/TS 里只要覆盖两件事就能换后端:base_url 和 api_key。其余——client.chat.completions.create、流式形状、消息格式——无论后面是 GPT、Claude、Gemini 还是别的,都是同一调用。
AnyRouter 在 28+ 家供应商的 170+ 模型前面实现同一套兼容 OpenAI 的契约,所以你已经装好的 SDK 变成通用客户端,而不只是 OpenAI。
一个客户端,两种语言
只改两个值——base URL 和 key。模型选择进 model 字符串:
from openai import OpenAI
client = OpenAI(
base_url="https://anyrouter.dev/api/v1",
api_key="sk-ar-v1-...",
)
resp = client.chat.completions.create(
model="anthropic/claude-opus-4-8",
messages=[{"role": "user", "content": "Explain base_url in one sentence"}],
)
print(resp.choices[0].message.content)两段都是未改过的 openai 和 openai-node——除了 OpenAI 集成本来就要装的东西,没有别的。
流式和工具调用原样带过来
契约是标准 Chat Completions API,你已经处理这部分的代码不用动。设 stream=True,按打 OpenAI 的方式读 delta;函数/工具定义同样透传。
- 流式 —— stream=True(Python)或 stream: true(TypeScript),同一 delta 形状。
- 工具调用 —— 同一 tools 数组和 tool_choice 参数。
- 同一把 key 上的其他方言 —— Anthropic 风格客户端用 /messages,较新的 Responses API 用 /responses。
改模型,不改代码
每个模型都是 provider/model 字符串,换跑什么是配置值:
| Model id | Owner |
|---|---|
| openai/gpt-5.5 | OpenAI |
| anthropic/claude-opus-4-8 | Anthropic |
| google/gemini-2.5-pro | |
| z-ai/glm-5.2 | Z.ai |

两个方向都不锁死
这是真正的 OpenAI API 契约,不是私有封装,同一段代码随时可以指回 api.openai.com——调用形状没有任何 AnyRouter 特有部分。端点后面的完整目录和故障切换见 /blog/zh/one-api-every-llm。
留下 OpenAI SDK,打到 28+ 家供应商的 170+ 模型。
免费拿一把 key相关文章
Point Claude Code at a custom base URL
Claude Code reads ANTHROPIC_BASE_URL and ANTHROPIC_API_KEY, so pointing it at AnyRouter takes two environment variables — no plugin, no fork. You get every model in the catalog behind the same key, automatic failover when a provider is rate-limited, and one audit log shared with Codex, Cursor, and every other agent you run.
One API for every LLM
One OpenAI-compatible endpoint reaches every model in the catalog — 170+ models addressed as provider/model, with automatic failover across upstreams, routing presets, and streaming. Point your existing client at AnyRouter and change a model with a string, not a rewrite.