LiteLLM 的作用
- SDK 是一个 Python 函数
completion(),可以用 OpenAI 的格式调用任意提供商。模型名称的前缀决定使用哪个提供商:openai/表示任意 OpenAI 兼容 API。 - 代理是你自己运行的服务器,默认地址为
http://localhost:4000。应用以 OpenAI 或 Anthropic 的格式调用它,它会在你的提供商之前加上密钥管理、预算、日志和回退功能。
设置代理
- 安装到虚拟环境中。LiteLLM 1.106 需要 Python 3.10 或更高版本。
python -m venv .venvsource .venv/bin/activate # Windows: .venv\Scripts\activatepip install "litellm[proxy]"- 编写 config.yaml。这是我们测试用的文件:DeepSeek V4.1 Flash 通过 OpenAI 兼容端点接入,Claude Sonnet 5.5 通过 LiteLLM 的 Anthropic provider 接入,另有一个通配符,可将其他所有模型以
zurelay/<model ID>的形式接入。model_info的价格为 Zurelay 当前价格。
model_list: - model_name: deepseek-v4.1-flash litellm_params: model: openai/deepseek-v4.1-flash api_base: https://api.zurelay.com/v1 api_key: os.environ/ZURELAY_API_KEY use_chat_completions_api: true model_info: input_cost_per_token: 0.00000003 output_cost_per_token: 0.00000012 cache_read_input_token_cost: 0.00000000074 - model_name: claude-sonnet-5-5 litellm_params: model: anthropic/claude-sonnet-5-5 api_base: https://api.zurelay.com api_key: os.environ/ZURELAY_API_KEY model_info: input_cost_per_token: 0.00000079 output_cost_per_token: 0.00000395 cache_read_input_token_cost: 0.000000079 - model_name: zurelay/* litellm_params: model: openai/* api_base: https://api.zurelay.com/v1 api_key: os.environ/ZURELAY_API_KEY use_chat_completions_api: truelitellm_settings: use_chat_completions_url_for_anthropic_messages: true check_provider_endpoint: truegeneral_settings: master_key: os.environ/LITELLM_MASTER_KEY- 使用你的 Zurelay key 和自己的 master key 启动它。客户端发送 master key;LiteLLM 要求 key 以
sk-开头。
export ZURELAY_API_KEY="zr_live_..."export LITELLM_MASTER_KEY="sk-choose-a-long-random-key"litellm --config config.yaml- 像调用任何兼容 OpenAI 的 API 一样调用它,使用配置中的
model_name。
curl http://localhost:4000/v1/chat/completions \ -H "Authorization: Bearer $LITELLM_MASTER_KEY" \ -H "Content-Type: application/json" \ -d '{"model": "deepseek-v4.1-flash", "messages": [{"role": "user", "content": "Hello"}]}'或者使用 Python SDK
如果不使用代理,请在每次调用时传入 base URL 和密钥。通过 LiteLLM 的 anthropic/ provider 调用 Claude 时,base URL 为 https://api.zurelay.com,不带 /v1。
import osfrom litellm import completionresponse = completion( model="openai/deepseek-v4.1-flash", api_base="https://api.zurelay.com/v1", api_key=os.environ["ZURELAY_API_KEY"], messages=[{"role": "user", "content": "Hello"}],)print(response.choices[0].message.content)claude = completion( model="anthropic/claude-sonnet-5-5", api_base="https://api.zurelay.com", api_key=os.environ["ZURELAY_API_KEY"], messages=[{"role": "user", "content": "Hello"}],)通过 LiteLLM 使用 Claude Code
该代理同样支持 Anthropic 的 Messages API,因此 Claude Code 可以使用配置中的任意模型。将 Claude Code 指向该代理,并指定要使用的模型:
export ANTHROPIC_BASE_URL="http://localhost:4000"export ANTHROPIC_AUTH_TOKEN="$LITELLM_MASTER_KEY"export ANTHROPIC_MODEL="deepseek-v4.1-flash"export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-sonnet-5-5"export ANTHROPIC_DEFAULT_SONNET_MODEL="claude-sonnet-5-5"export ANTHROPIC_DEFAULT_HAIKU_MODEL="deepseek-v4.1-flash"claude如果只用 Claude 模型,就不需要 LiteLLM:Claude Code 可以直接连接 Zurelay,详见 Claude Code pricing。如果想要用网页而不是 YAML 文件来配置的路由器,请参阅 Claude Code Router。
导致故障的那些设置
- Claude Code 在 DeepSeek 上运行失败,报错
Unknown request URL: POST /v1/responses。对于openai/模型,LiteLLM 会把 Anthropic Messages 请求转换为对 OpenAI Responses API 的调用,而 Zurelay 不提供该接口。一次失败后,LiteLLM 还会让该模型进入冷却状态,导致后续请求收到429 No deployments available for selected model。在litellm_settings下设置use_chat_completions_url_for_anthropic_messages: true,即可改为将请求发送到 Chat Completions。 - Responses API 客户端也出现了同样的故障。发送到代理
/v1/responses的请求,或 SDK 中的litellm.responses(),在模型上设置use_chat_completions_api: true之前,都会原样转发到上游。 - base URL 中带有 /v1 的 Claude 调用
/v1/v1/messages时返回了 404。anthropic/provider 会自动添加/v1/messages;openai/模型则需要加上/v1。 - 通配符列出了错误的模型。使用
openai/*时,代理的/v1/models显示的是 LiteLLM 内置的 216 个 OpenAI 模型名称(gpt-3.5-turbo、babbage-002),没有一个是 Zurelay 的。不过,使用真实模型 ID 的请求仍然可以正常工作。check_provider_endpoint: true可让它改为列出 Zurelay 的模型。 - 在 Windows 上,当输出重定向到日志文件时,代理在启动时崩溃,报错
UnicodeEncodeError: 'charmap' codec can't encode characters:启动横幅中含有默认代码页不支持的字符。启用 Python 的 UTF-8 模式后问题解决:可以在环境变量中设置PYTHONUTF8=1,或者使用python -X utf8。
成本追踪
LiteLLM 的花费统计是按它自己的价格表给每个请求计价的。对于它已知的模型,用的是官方标价:我们的 Claude Sonnet 5.5 请求被按 Anthropic 的费率计算,约为 Zurelay 实际扣费的 2.5 倍。对于它不认识的模型,比如 openai/ 背后的 DeepSeek V4.1 Flash,它根本不会记录任何费用。上面配置中的 model_info 几行可以解决这两个问题:加上之后,LiteLLM 在 x-litellm-response-cost 响应头中返回的费用与我们的账单一致。
我们的测试花了多少钱
通过代理,Claude Code 先用 DeepSeek V4.1 Flash 写了一个小型 Python 文件,又换成 Claude Sonnet 5.5 对它进行了修改。两个模型都正确调用了 Claude Code 的文件工具。Zurelay 的计费如下:
| 模型 | 任务 | 请求 | 提示词 token (已缓存) | 费用 |
|---|---|---|---|---|
| DeepSeek V4.1 Flash | 创建 hello.py | 3 | 39,725 (25,845) | $0.0005 |
| Claude Sonnet 5.5 | 编辑 hello.py | 3 | 51,310 (32,523) | $0.023 |
每个请求都带有 Claude Code 的指令和工具定义,共 13,000 到 18,000 个 token,从第二个请求起,其中大部分都是从缓存中读取的。按 Anthropic 的官方定价,Claude Code 自己对这次 Claude 任务的估算是 $0.054。在此之前的 SDK 调用,每次只返回一条简短回答,在 DeepSeek 上花费 $0.000006,在 Claude Sonnet 5.5 上花费 $0.0003。
注意事项
- 除非你传入
--host 127.0.0.1,否则代理会监听所有网络接口(0.0.0.0)。请务必设置好 master key,否则同一网络中的任何人都可能花掉你的额度。 - 通配符模型的真实 ID 位于前缀之后:请求中的
zurelay/gpt-6.1-terra在 Zurelay 会变成gpt-6.1-terra。 - 在 Windows 上,请安装到路径较短的文件夹中。曾有用户把虚拟环境建在层级很深的临时文件夹里,结果因部分文件路径超过 Windows 的 260 个字符限制,出现
ModuleNotFoundError: No module named 'openai.types...'错误。
可用于接入的模型价格
各模型厂商与 Zurelay 的每 1M token 价格:
| 模型 | 输入 | 输出 | Zurelay 价格(输入 / 输出) |
|---|---|---|---|
| DeepSeek V4.1 Flash | $0.30 | $1.20 | $0.03 / $0.12 |
| Claude Sonnet 5.5 | $2.00 | $10.00 | $0.79 / $3.95 |
| Claude Opus 5.5 | $4.00 | $20.00 | $1.40 / $7.00 |
| GPT-6.1 Terra | $1.00 | $5.00 | $0.25 / $1.25 |
| Gemini 3.8 Flash | $0.75 | $3.75 | $0.22 / $1.10 |
| Kimi K3.1 Pro | $2.00 | $10.00 | $0.80 / $4.00 |
| GLM-5.3 | $1.40 | $4.40 | $0.38 / $1.21 |
已在 2026年11月3日 上测试,环境为 Windows,使用 LiteLLM 1.106.6(Python 3.12)和 Claude Code 2.1.317,对接 Zurelay 的 API。简短的配置说明见文档中的 LiteLLM。LiteLLM 官方文档:兼容 OpenAI 的端点 和 proxy 配置。