
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已不再返回files和notes属性。 - 模型自身在 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 模式缺少该工具)
解决步骤
- 验证
list_knowledge工具的实际行为:在不使用 Native Function Calling 的情况下(例如使用标准 Function Calling),手动测试list_knowledge的返回值,确认files字段是否本就不包含文件列表。如果其他模式下同样返回空数组,则说明模型误用了工具。 - 改用正确的工具读取知识库文件:禁用 Native Function Calling,改用标准 Function Calling 模式,或直接使用
view_knowledge_file等专门用于读取文件内容的工具。可优先检查 #20851 中提到的内置工具是否已启用。 - 更新 Open WebUI 到最新版本:维护者指出“在最近版本中,
list_knowledge已不再返回files和notes属性”。更新后该问题可能自然解决或行为发生变化。 - 更换/微调提示词:避免让模型自动选择工具,改为明确指定需要使用哪个工具来读取知识库文件内容。
- 确认模型兼容性:不同模型的工具调用能力存在差异。如果模型在 Native 模式下频繁误用工具,可考虑切换到该模型工具调用表现更好的 Function Calling 模式(非 Native),或更换为工具调用能力更强的模型。
验证方法
在更新 Open WebUI 或切换 Function Calling 模式后,重复以下步骤:
- 创建知识库并上传文件。
- 发送要求模型遍历所有文件的提示词。
- 如果模型自动调用
list_knowledge,观察返回值中是否仍出现files空数组。 - 确认模型能够正常访问知识库文件内容(读取、总结或引用文件内容而非仅返回文件数量)。



