Skip to content

[P1][LLM] 模型名含斜杠的自定义网关模型被 litellm 拒绝:Provider NOT provided #83

Description

@fxbin

症状

管理端「测试模型」POST /api/v1/llm-models/{id}/test 对形如 组织名/模型名(OpenAI 兼容网关的 namespaced 命名,此处以 example-org/example-29b 指代,真实模型名已脱敏)返回失败:

litellm.BadRequestError: LLM Provider NOT provided. You passed model=<组织名/模型名>

根因

app/services/llm/model_resolver.py::resolve_litellm_model 的早退分支:model_id 含 / 即原样返回,provider 解析逻辑被跳过。「组织/模型」命名(OpenRouter / vLLM / 聚合网关常见格式)被 litellm 按前缀当 provider 路由 → 未知 provider → BadRequestError。代码注释自己已承认该场景应走 OpenAI 兼容路由,但早退分支让它永远到不了。

影响面:所有经 resolver 的调用(model_test、分析管线),凡「配置了 provider(含 custom/openai 预设)+ 模型名含 /」的组合均无法路由。

期望 vs 实际

  • 期望:显式配置了 provider 的模型(含 custom 预设),无论模型名是否含 /,都按该 provider 路由(custom → openai/ 前缀);无 provider 信息且首段未知时,应用层兜底 OpenAI 兼容路由;
  • 实际:含 / 即原样透传给 litellm。

边界

llm/model_resolver / 模型目录 / model_test。

严重度 / 复现性

P1 / always(该命名格式必现)。

回归测试候选

resolver 单测:custom + org/model → openai/org/model;显式 provider + 已带同前缀 → 去重不双拼;无 provider + 已知前缀 → 原样;无 provider + 未知前缀 → openai/ 兜底。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions