Replies: 1 comment
|
先确认:你的报告在 master d347e70 上属实,而且这处短路是有意的、带测试钉死的设计,不是疏漏——这决定了修复应落在"覆盖判别",而不是简单调换分支顺序。 源级事实
为什么"出现 baseURL 就必走 live"的朴素规则不够 目录答案不是"没网的兜底",它比 listing 更肥:contextWindow/maxTokens 是绝大多数端点不披露的(
判别维度应是**"请求携带的 baseURL 是否构成对目录默认的显式覆盖"**,而不是"有没有 baseURL"。好消息是上面已证:UI 流程里 stock 路由不带 baseURL,所以"请求带 baseURL"≈"路由显式声明端点",判别可以安全落在服务端这一条上。 建议方向(你的三条基本成立,补一个保容量的合并步)
家族关联:这条与 #5837(custom provider 静默 text-only)同处一轴——"catalog 默认 vs 路由显式声明,谁优先"。两处都是目录在遮蔽 per-route 显式配置(#5837 是声明式 input 走 插件面:该分支位于 llm-pi-ai 核心 discovery 与 ui-settings-models 探针构造, |
Uh oh!
There was an error while loading. Please reload this page.
问题概述
Web GUI「设置 → 模型 → 获取可用模型」中,当提供方路由既点名了 pi-ai 已安装 catalog 提供方(如
openai)、又配置了显式自定义baseURL(如某个 OpenAI 兼容网关/代理)时,模型发现会直接短路返回内置静态模型目录,从不调用{baseURL}/models。选择框因此展示的是注册表的模型,而不是该端点真实的模型列表。复现
将某个 catalog 提供方路由指向网关:
打开「设置 → 模型 → 编辑 openai 提供方 → 获取可用模型」。
期望: Host 发起
GET https://my-gateway.example/v1/models,并提供端点公布的模型。实际: 直接返回
openai的 pi-ai 内置目录,完全没有网络请求(dsh-llm-pi-ai的discoverModels在baseURL检查之前就返回了catalogModels(provider))。为什么重要
把 catalog 提供方 id 复用于兼容网关是文档明确的配置模式("a route naming an installed pi-ai provider inherits its endpoint… as defaults"),而
baseURL正是对该默认值的逐字段覆盖。网关实际服务的模型集往往与注册表不同(镜像部署、企业代理、CLIProxyAPI 类聚合器)。当前的优先级会让模型页推荐端点无法服务的模型,并隐藏端点实际可用的模型。建议修复
让草稿中显式的
baseURL优先于已安装目录:baseURL的草稿在{baseURL}/models(或协议自身的列表路径)被询问,无论提供方是否在已安装目录中。All reactions