
feat: first-class support for BaseRT as a local inference provider
快速结论:此 Issue 提议为本地推理引擎 BaseRT 在 Open WebUI 中提供一等支持,解决当前作为通用 OpenAI 连接使用时,推理数据丢失、无加载状态指示、无卸载按钮以及连接类型默认错误的问题。此 Issue 为功能请求(Feature Request),目前尚无代码合并或补丁发布。
问题场景
用户在 Open WebUI 中连接本地运行的 BaseRT 推理服务时,遇到以下问题:
- 推理内容丢失:在采用推理模型(reasoning model)的多轮对话中,
reasoning_content字段被静默丢弃,导致后续对话丢失模型的先前推理过程。 - 无加载状态指示:BaseRT 的
GET /v1/models接口返回loaded字段,但 Open WebUI 未识别,因此界面上不显示绿色的“已加载”圆点。 - 无卸载按钮:
/api/models/unload端点无法将卸载请求发送到 BaseRT 的POST /v1/models/unload接口。 - 连接类型默认错误:OpenAI 兼容连接默认被标记为 External(外部),但 BaseRT 是本地服务,应默认为 Local(本地)。
报错原文
get_reasoning_format() returns None for unknown providers
reasoning_content is never replayed
provider == 'llama.cpp' load states are read --> green "loaded" dot never appears for BaseRT
/api/models/unload only dispatches Ollama and llama.cpp, even though BaseRT exposes POST /v1/models/unload
OpenAI connections default to External; a local runtime should default to Local
原因分析
Open WebUI 目前只对 Ollama 和 llama.cpp 这两个本地运行时提供了深度集成。对于同为 OpenAI 兼容的 BaseRT,系统将其视为未知的通用提供商,导致:
get_reasoning_format()函数对未知提供商返回None,从而丢弃了 BaseRT 实际支持的reasoning_content。- 加载状态检查硬编码了
provider == 'llama.cpp'条件,无法读取 BaseRT 提供的loaded字段。 - 模型卸载路由(
/api/models/unload)仅分发请求给 Ollama 和 llama.cpp 的卸载接口。 - 连接类型在未识别为已知本地提供商时,默认设为 External。
环境排查
- Open WebUI 版本(请确认当前使用的版本)。
- BaseRT 运行状态及版本(
https://github.com/basecompute/baseRT)。 - 确保已通过“管理员面板 -> 连接”将 BaseRT 作为 OpenAI 兼容端点添加(当前为通用连接)。
- 如果需要复现问题,确认是否使用了推理模型并观察
reasoning_content字段在多轮对话中的表现。
解决步骤
此 Issue 尚未被合并为代码,以下为提案中的解决方案,开发者可参考实施:
- 添加 BaseRT 为可选项:在 OpenAI 兼容连接的提供商下拉菜单中增加
basert条目,并将连接类型默认设为 Local。 - 通用化加载状态读取:修改当前仅针对 llama.cpp 的加载状态读取逻辑,使其也能解析来自 BaseRT 的
loaded布尔字段(该字段由 BaseRT 的/v1/models返回)。 - 增加卸载路由分支:在
/api/models/unload的处理逻辑中,增加provider == 'basert'的分支,向其POST {base_url}/models/unload发送请求。 - 返回正确的 reasoning_content:在
get_reasoning_format()函数中,为basert提供商返回'reasoning_content'(与 llama.cpp 相同)。 - 添加国际化支持:在各个语言的翻译文件中增加
"BaseRT"键值。
验证方法
在按照上述步骤修改代码后:
- 通过 OpenAI 兼容连接添加 BaseRT 后,连接类型应默认为 Local。
- 使用推理模型进行多轮对话时,
reasoning_content应正常保留并在后续轮次中被发送。 - 当 BaseRT 指示模型已加载时,模型列表中应出现绿色“已加载”圆点。
- 可以对 BaseRT 上的模型执行卸载操作。



