1. LiteLLM 报 model 缺厂商前缀,到底卡在哪一步
你如果正在用 LiteLLM Proxy 搭一个统一的大模型接口网关,大概率见过这个报错:model字段找不到对应厂商,或者请求发出去直接被上游拒掉。LiteLLM 本身能封装 100 多个厂商的接口,OpenAI、Claude、Gemini、Ollama、DeepSeek 都能接,但它的model命名规则分两种场景,很多人就是在这里踩坑。
简单说,LiteLLM 有两种用法:一种是 Python SDK 直接调,另一种是 Proxy 网关服务。SDK 直调时,model必须写成厂商前缀/模型名,比如openai/gpt-4o、deepseek/deepseek-chat、ollama/qwen2.5:7b,少了前缀 LiteLLM 不知道往哪家发。而 Proxy 网关不一样,客户端请求的是你在config.yaml里定义的model_name别名,前缀是在litellm_params里写的,客户端不用管。
这篇就按排障视角,把上游那段「常见踩坑」改掉:用 TaoToken 作为统一上游,在每条litellm_params里把api_base指向 TaoToken 的接口地址,api_key填 TaoToken 创建的 Key,LiteLLM 只负责把model别名分发出去。适合已经在跑 LiteLLM Proxy、但被前缀和上游配置绕晕的人。
2. 先把 TaoToken 的 Key 和接口地址准备好
在改config.yaml之前,得先有一把能用的上游 Key。打开https://taotoken.net/?utm_source=taotoken_aicg_blog_end注册账号,进控制台创建 API Key。这个 Key 就是你后面填进litellm_params.api_key的那把,请求最终消耗的是这把 Key 的额度。
接口地址这块要记牢:TaoToken 的 API 根地址是https://taotoken.net/api。填进配置文件时不要带/v1,也不要带任何 utm 参数。LiteLLM 会自己在后面拼/v1/chat/completions这类路径,你多写一段/v1就会变成/api/v1/v1/...,直接 404。
注意:
api_base只写到https://taotoken.net/api为止,后面的路径交给 LiteLLM 处理。
如果你还没建 Key,进控制台后找 API Keys 页面,新建一把,复制出来先存好。这个 Key 只在创建时完整显示一次,丢了就得重建。模型对话、Coding Plan、控制台、API Keys、接入文档这些入口都在官网导航里,按需点进去就行。
3. 改 config.yaml:把 litellm_params 指到 TaoToken
核心改动就一处:每条litellm_params里加api_base,api_key换成 TaoToken 的 Key。model字段这里写的是带厂商前缀的完整名,因为这是 LiteLLM 内部用来识别上游协议的,和客户端请求的model_name别名是两回事。
model_list: # DeepSeek 别名,客户端请求 deepseek-chat - model_name: deepseek-chat litellm_params: model: deepseek/deepseek-chat api_base: "https://taotoken.net/api" api_key: "sk-你的TaoTokenKey" # OpenAI 别名 - model_name: gpt-4o-mini litellm_params: model: openai/gpt-4o-mini api_base: "https://taotoken.net/api" api_key: "sk-你的TaoTokenKey" # Claude 别名 - model_name: claude-sonnet litellm_params: model: anthropic/claude-3-5-sonnet-20241022 api_base: "https://taotoken.net/api" api_key: "sk-你的TaoTokenKey" general_settings: master_key: "sk-master-123456" # 客户端访问网关用的密钥,自定义几个关键点对照一下:
| 字段 | 写什么 | 易错点 |
|---|---|---|
model_name | 客户端请求用的别名 | 随便起,客户端认这个 |
litellm_params.model | 带厂商前缀的完整名 | 漏前缀 LiteLLM 找不到上游 |
litellm_params.api_base | https://taotoken.net/api | 别带/v1、别带 utm |
litellm_params.api_key | TaoToken 创建的 Key | 别和 master_key 写串 |
general_settings.master_key | 客户端访问网关的密钥 | 和上游 Key 是两把 |
这里最容易搞混的就是两把 Key:master_key是客户端调你本地网关时用的,api_key是 LiteLLM 转发到 TaoToken 时用的。写串了就是 401,后面排障会细说。
4. 起服务并验证转发链是否打通
配置写完,启动 Proxy:
litellm --config config.yaml --host 0.0.0.0 --port 4000看到Proxy running on http://0.0.0.0:4000就说明服务起来了。然后用 OpenAI 的 Python 客户端请求本地网关,base_url仍然是http://localhost:4000/v1,api_key填master_key,model填你在 yaml 里定义的别名:
from openai import OpenAI client = OpenAI( base_url="http://localhost:4000/v1", api_key="sk-master-123456" # 这里用 master_key,不是 TaoToken Key ) resp = client.chat.completions.create( model="deepseek-chat", # 用 yaml 里的 model_name 别名 messages=[{"role": "user", "content": "hello world"}] ) print(resp.choices[0].message.content)能打印出内容,说明整条链路通了:客户端 → 本地 LiteLLM 网关 → TaoToken 上游 → 模型返回。你也可以用 curl 快速测一把:
curl http://localhost:4000/v1/chat/completions \ -H "Authorization: Bearer sk-master-123456" \ -H "Content-Type: application/json" \ -d '{ "model": "deepseek-chat", "messages": [{"role": "user", "content": "hi"}] }'返回 JSON 里choices[0].message.content有内容,就说明model别名分发正常,api_base和 Key 都没写错。这一步过了,后面接前端、接各类 OpenAI 兼容工具都只是换个base_url的事。
5. 本篇常见错排查:401、找不到模型、404
排障时按报错类型对号入座,基本能覆盖九成问题。
报 401 Unauthorized:先分清是哪把 Key 出错。客户端请求本地网关报 401,说明master_key对不上,检查请求头里的 Bearer 和 yaml 里general_settings.master_key是否一致。如果 LiteLLM 日志里显示转发到上游时 401,那就是litellm_params.api_key写错了,或者 Key 被删了、额度用完了,回控制台核对。
报找不到模型 / model not found:两种可能。一是客户端请求的model别名在 yaml 里没有对应的model_name,拼写对不上;二是litellm_params.model漏了厂商前缀,比如写成deepseek-chat而不是deepseek/deepseek-chat,LiteLLM 不知道往哪家发。SDK 直调必须带前缀,Proxy 里litellm_params.model也必须带,只有客户端请求的model_name是别名。
报 404 / 路径不对:八成是api_base多写了/v1。正确写法是https://taotoken.net/api,LiteLLM 自己拼后续路径。写成https://taotoken.net/api/v1就会变成重复路径。另外确认没把 utm 参数粘进去,配置文件里只留干净的根地址。
Ollama 相关报错:如果你同时接了本地 Ollama,那条litellm_params必须补api_base: "http://localhost:11434",否则 LiteLLM 不知道本地服务在哪。这条和 TaoToken 的配置是并列的,别混在一起。
提示:改完 yaml 一定要重启
litellm --config config.yaml,配置不会热加载。
6. 接入文档与后续分流
转发链验证通过后,日常用起来就简单了:客户端只认本地网关的http://localhost:4000/v1和master_key,模型切换只改请求里的model别名,上游的 Key 和地址都锁在config.yaml里,不用每个程序各配一遍。
如果你要长期跑编码类任务或 Agent,可以看 Coding Plan,把额度规划清楚;单纯想验证某个模型效果,直接进模型对话页面试;接入细节和参数说明在接入文档里,API Keys 页面负责创建和管理 Key。地址统一从https://taotoken.net/api走,配置里别带/v1和 utm,这两条记住,基本不会再被前缀和路径问题卡住。