issue: Native Function Calling knowledge-base tools fail with `’str’ object has no attribute ‘items’`

该报错发生在 Open WebUI Native Function Calling 模式下,模型调用知识库检索工具( query_knowledge_files 或 kb_exec )时,工具执行器因收到字符串而非预期字典结构而崩溃。优先排查是否启用了 Legacy Function Calling

快速结论:该报错发生在 Open WebUI Native Function Calling 模式下,模型调用知识库检索工具(query_knowledge_fileskb_exec)时,工具执行器因收到字符串而非预期字典结构而崩溃。优先排查是否启用了 Legacy Function Calling 作为临时绕行方案。

适用环境:Open WebUI v0.9.6 至 v0.11.3(Docker 镜像 ghcr.io/open-webui/open-webui:main),macOS Tahoe(Apple Silicon),Docker Model Runner(llama.cpp-metal),SQLite 后端,SentenceTransformers 嵌入。

最快修复方案:将模型高级参数中的 Function Calling 从 Native 切换为 Legacy,即可恢复知识库检索与引用功能。

注意事项:此方案仅为临时绕行;Native 模式独有的功能(如自动 Memory 管理、指令级单文档范围限定)在 Legacy 下不可用。截至 v0.11.3,官方“fixed in dev”声明未解决问题,相关修复 PR #26926 仅处理了另一个崩溃场景。

问题场景

用户使用 Open WebUI v0.10.2/v0.11.0/v0.11.3,在自定义模型中附加多个知识库(测试中最多 19 个),并将高级参数中的 Function Calling 设为 Native。模型调用内置工具 query_knowledge_files 或启用 kb_execENABLE_KB_EXEC=true)时触发崩溃。同一模型与知识库在 Legacy 模式下可正常检索并给出引用。

报错原文

'str' object has no attribute 'items'

# 触发场景示例:模型调用 query_knowledge_files 后,工具执行器立即抛出该异常
# 一次回答中最多观察到 58 次连续失败的调用,均以该错误终止,最终无有效回答或返回编造内容

原因分析

可能原因:Native Function Calling 模式下,工具调用参数在传递过程中被错误序列化或类型转换,导致工具执行器收到的是字符串(str)而非预期的字典(dict)结构,从而在访问 .items() 时抛异常。该缺陷并非知识库检索特有——用户实测自定义工具调用、内置 Notes 工具的 search_notes 同样触发此错误,说明问题出在 Native 工具执行链路的通用环节。有评论指出模型“调用工具的方式不正确”,但同一模型在 Legacy 模式下不会出错,表明模型侧并非根因。

环境排查

  • Open WebUI 版本:确认是否为 v0.10.2 至 v0.11.3(含 Docker 镜像 main 标签拉取时间 2026-09-07)
  • Function Calling 模式:检查模型高级参数中为 Native 还是 Legacy
  • 知识库数量:确认模型附加的知识库数量(问题在多个知识库时必然复现)
  • 后端配置:SQLite、SentenceTransformers 嵌入、Docker Model Runner(macOS Apple Silicon)
  • 环境变量:ENABLE_KB_EXEC 是否设为 true
  • 排除变量:Ollama 版本未涉及(Issue 中为 No response)

解决步骤

  1. 临时绕行(已验证有效):进入 Workspace → Models → 编辑目标模型 → Advanced Params → 将 Function Calling 从 Native 改为 Legacy。保存后重新测试知识库问答,应可正常检索并生成引用。
  2. 验证是否为通用工具链路问题(用于诊断而非修复):在 Native 模式下创建一个测试自定义工具,单独调用以确认崩溃是否同样出现——若崩溃,则表明非知识库工具独有。
  3. 单知识库测试(用于定位范围):若需保留 Native 模式,尝试在对话中仅引用单个知识库(使用 # 语法),确认该路径可绕过工具调用、不触发错误。
  4. 跟踪上游修复:关注 Issue #26880 及相关联的 #27073、#29323、#26170、#26655,等待官方在 Native 工具执行链路上的修复发布。勿依赖“fixed in dev”声明——v0.11.0 与 v0.11.3 均已实测仍复现。

验证方法

切换 Legacy 模式后,向模型提出需要依据知识库 PDF 内容回答的问题(例如“What is the oil change interval in my GMC truck?”),确认模型返回内容包含知识库文档引用。若仍报 'str' object has no attribute 'items',说明问题未解决或存在其他配置因素。所有 Native 模式下的功能(自动 Memory、指令控制文档范围等)在 Legacy 模式下不可用,需等待上游修复后才能完整验证。

参考来源

open-webui/open-webui #26880

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 22432

发表回复

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