issue: Fail to retrieve files from Knowledge Base when using “Native” Function Calling

用户在 Open WebUI v0.9.6(Pip Install,Windows 系统)中创建了一个知识库 KB ,上传了 3 个文件,并在模型设置中启用了 "Native" Function Calling(方法来自社区讨论建议)。当用户向模型发送提示词(例如要求模型遍历 KB 中的所有文件)时

issue: Fail to retrieve files from Knowledge Base when using "Native" Function Calling

issue: Fail to retrieve files from Knowledge Base when using “Native” Function Calling

快速结论:此问题通常发生在 Open WebUI 将 Function Calling 模式设置为 “Native” 且模型自动调用 list_knowledge 内置工具时。优先排查模型是否误用了 list_knowledge 工具,因为该工具返回的 files 字段并非知识库文件列表,而是其他元数据;模型将空数组误解为文件未被检索到。Issue 维护者已确认该工具工作正常且符合预期,模型行为属于模型自身的智能体工具调用能力不足。

问题场景

用户在 Open WebUI v0.9.6(Pip Install,Windows 系统)中创建了一个知识库 KB,上传了 3 个文件,并在模型设置中启用了 “Native” Function Calling(方法来自社区讨论建议)。当用户向模型发送提示词(例如要求模型遍历 KB 中的所有文件)时,模型自动调用了内置工具 list_knowledge,但返回结果中 files 数组为空,导致模型认为自己无法获取知识库文件。问题影响多个模型(Gemma、Qwen 等),只要使用 Native Function Calling 模式都可能出现。

报错原文

{
  "knowledge_bases": [
    {
      "id": "...",
      "name": "KB",
      "description": "My KB",
      "file_count": 3
    }
  ],
  "files": [],
  "notes": []
}

原因分析

可能原因:

  • 用户与维护者对 list_knowledge 工具的返回值产生了误解。维护者指出,该工具返回的 files 属性并不代表知识库中的文件列表,而是其他响应数据。在更新版本中,list_knowledge 已不再返回 filesnotes 属性。
  • 模型自身在 Native Function Calling 模式下自动选择了 list_knowledge 工具,但该工具并非适合读取知识库文件内容的工具。模型可能误用工具,导致返回空数组后被模型解读为文件不存在。
  • 维护者明确表示:“工具工作正常且符合预期,如果模型误用了工具,这意味着该模型在智能体工具调用能力方面不够好。”

环境排查

  • Open WebUI 版本:确认版本号(Issue 报告时为 v0.9.6,当前应检查是否为最新版本)
  • 安装方式:Pip Install / Docker(Issue 中为 Pip Install)
  • 操作系统:Windows(Issue 中为 Windows)
  • Ollama 版本:确认已更新到最新版本
  • Function Calling 模式:确认是否设置为 “Native” 模式
  • 测试模型:尝试不同模型(Gemma、Qwen、Llama 等)看是否均出现相同行为
  • 内置工具列表:检查 Native 模式下是否缺少 view_knowledge_file 等其他知识库相关工具(相关 Issue #20851 曾报告 Native 模式缺少该工具)

解决步骤

  1. 验证 list_knowledge 工具的实际行为:在不使用 Native Function Calling 的情况下(例如使用标准 Function Calling),手动测试 list_knowledge 的返回值,确认 files 字段是否本就不包含文件列表。如果其他模式下同样返回空数组,则说明模型误用了工具。
  2. 改用正确的工具读取知识库文件:禁用 Native Function Calling,改用标准 Function Calling 模式,或直接使用 view_knowledge_file 等专门用于读取文件内容的工具。可优先检查 #20851 中提到的内置工具是否已启用。
  3. 更新 Open WebUI 到最新版本:维护者指出“在最近版本中,list_knowledge 已不再返回 filesnotes 属性”。更新后该问题可能自然解决或行为发生变化。
  4. 更换/微调提示词:避免让模型自动选择工具,改为明确指定需要使用哪个工具来读取知识库文件内容。
  5. 确认模型兼容性:不同模型的工具调用能力存在差异。如果模型在 Native 模式下频繁误用工具,可考虑切换到该模型工具调用表现更好的 Function Calling 模式(非 Native),或更换为工具调用能力更强的模型。

验证方法

在更新 Open WebUI 或切换 Function Calling 模式后,重复以下步骤:

  • 创建知识库并上传文件。
  • 发送要求模型遍历所有文件的提示词。
  • 如果模型自动调用 list_knowledge,观察返回值中是否仍出现 files 空数组。
  • 确认模型能够正常访问知识库文件内容(读取、总结或引用文件内容而非仅返回文件数量)。

参考来源

open-webui/open-webui #26170

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 14072

发表回复

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