feat: first-class support for BaseRT as a local inference provider

用户在 Open WebUI 中连接本地运行的 BaseRT 推理服务时,遇到以下问题:

feat: first-class support for BaseRT as a local inference provider

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 尚未被合并为代码,以下为提案中的解决方案,开发者可参考实施:

  1. 添加 BaseRT 为可选项:在 OpenAI 兼容连接的提供商下拉菜单中增加 basert 条目,并将连接类型默认设为 Local。
  2. 通用化加载状态读取:修改当前仅针对 llama.cpp 的加载状态读取逻辑,使其也能解析来自 BaseRT 的 loaded 布尔字段(该字段由 BaseRT 的 /v1/models 返回)。
  3. 增加卸载路由分支:/api/models/unload 的处理逻辑中,增加 provider == 'basert' 的分支,向其 POST {base_url}/models/unload 发送请求。
  4. 返回正确的 reasoning_content:get_reasoning_format() 函数中,为 basert 提供商返回 'reasoning_content'(与 llama.cpp 相同)。
  5. 添加国际化支持:在各个语言的翻译文件中增加 "BaseRT" 键值。

验证方法

在按照上述步骤修改代码后:

  • 通过 OpenAI 兼容连接添加 BaseRT 后,连接类型应默认为 Local。
  • 使用推理模型进行多轮对话时,reasoning_content 应正常保留并在后续轮次中被发送。
  • 当 BaseRT 指示模型已加载时,模型列表中应出现绿色“已加载”圆点。
  • 可以对 BaseRT 上的模型执行卸载操作。

参考来源

open-webui/open-webui #27265

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 14816

发表回复

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