[Bug]: ollama_chat wildcard expansion prepends extra “ollama/” prefix when model_name differs from provider prefix

用户在 LiteLLM Proxy 中配置 ollama_chat 通配符路由,希望通过自定义 model_name 前缀(例如 ollama_server1/* )区分多个 Ollama 实例。调用 /v1/models 接口时返回的模型 ID 中出现了多余的 ollama/ 前缀,导致所有模型不

[Bug]: ollama_chat wildcard expansion prepends extra "ollama/" prefix when model_name differs from provider prefix

[Bug]: ollama_chat wildcard expansion prepends extra “ollama/” prefix when model_name differs from provider prefix

快速结论:当使用 ollama_chat 通配符配置(如 model_name: "ollama_server1/*")且自定义前缀与内部 provider 标识 “ollama” 不一致时,LiteLLM 的通配符展开逻辑会错误地额外追加 ollama/ 前缀,导致 /v1/models 返回的模型 ID 变为 ollama_server1/ollama/gemma3:1b。优先检查 model_name 前缀是否与内部 provider 不一致,当前可改用显式模型列表作为临时方案。

问题场景

用户在 LiteLLM Proxy 中配置 ollama_chat 通配符路由,希望通过自定义 model_name 前缀(例如 ollama_server1/*)区分多个 Ollama 实例。调用 /v1/models 接口时返回的模型 ID 中出现了多余的 ollama/ 前缀,导致所有模型不可调用。

报错原文

litellm.APIConnectionError: Ollama_chatException -
  {"error":"model 'ollama/gemma3:1b' not found"}
  Received Model Group=ollama_server1/ollama/gemma3:1b
  Available Model Group Fallbacks=None
  LiteLLM Retried: 3 times, LiteLLM Max Retries: 3

原因分析

根因位于 LiteLLM 的通配符展开逻辑中。当处理 ollama_chat/* 通配符时,路由器在内部解析 provider 前缀(”ollama”)并将其拼接到已展开的模型 ID 前,但未检查 model_name 是否已经定义了自定义前缀。展开函数(位于 litellm/proxy/utils.py 中的 _get_models_from_provider() 及相关通配符处理函数)大致执行:

expanded_model = f"{provider_prefix}/{base_model}"

它没有判断 model_name 中的自定义前缀是否应该替换(而不是叠加)provider 前缀,导致当 ollama_server1/* + ollama_chat/* 时,展开步骤为每个发现的模型额外添加 ollama/,最终得到 ollama_server1/ollama/gemma3:1b

环境排查

  • 确认 LiteLLM 版本是否为 1.88.1 或相近版本(该 bug 在此版本中已复现)
  • 检查 model_name 配置中的前缀是否与 provider 内部前缀(如 “ollama”、”openai” 等)不一致
  • 确认 config.yaml 中是否使用了通配符展开(model_name: "your_prefix/*" 配合 model: "ollama_chat/*"
  • 检查代理日志中 Received Model Group 字段是否出现多余前缀

解决步骤

  1. 临时绕过方案(推荐优先尝试):改用显式模型列表替代通配符展开。对于每个 Ollama 实例单独配置具体模型 ID:
    - model_name: "ollama_server1/gemma3:1b"
      litellm_params:
        model: "ollama_chat/gemma3:1b"
        api_base: "http://ollama-server1:11434"
    
    - model_name: "ollama_server2/gemma3:1b"
      litellm_params:
        model: "ollama_chat/gemma3:1b"
        api_base: "http://ollama-server2:11434"
  2. 长期修复方向:等待 LiteLLM 提交 Pull Request 修复通配符展开逻辑。修复方案应包括:
    • 追踪通配符展开路径中的 provider 前缀处理
    • 在拼接 provider 前缀前检查 resolved model ID 是否已包含该前缀
    • 允许 model_name 完全控制暴露的模型 ID,不让路由器注入 provider 特定前缀
  3. 监控 Issue 状态:关注 GitHub Issue #30358 的进展,该问题已被标注为 “bug” 和 “proxy”,有贡献者表示将提交修复 PR。

验证方法

修复后或使用显式配置后,调用 /v1/models 接口确认返回的模型 ID 格式。预期输出:ollama_server1/gemma3:1b(无多余 ollama/ 前缀)。同时调用任意客户端使用该模型 ID 发起请求,确认不再返回 model 'ollama/gemma3:1b' not found 错误。

参考来源

BerriAI/litellm #30358

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 8059

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注