AttributeError: ‘UserModel’ object has no attribute ’email'”

在 Open WebUI 中启用 ENABLE_FORWARD_USER_INFO_HEADERS 后,内置的 query_knowledge_files 工具构造出的 UserModel 缺少 email 等字段,导致知识库检索时抛出 AttributeError: 'UserModel' obj

快速结论:在 Open WebUI 中启用 ENABLE_FORWARD_USER_INFO_HEADERS 后,内置的 query_knowledge_files 工具构造出的 UserModel 缺少 email 等字段,导致知识库检索时抛出 AttributeError: 'UserModel' object has no attribute 'email'。优先检查你是否同时启用了函数调用(Function Calling)、用户信息转发环境变量,以及 Open WebUI 版本是否已包含相关修复。

适用环境:Open WebUI v0.11.0(Git Clone 安装)、Ubuntu、Chrome 浏览器(Issue 中未涉及 Ollama 版本、CUDA、显卡信息)。

最快修复方案:暂无确认的一步修复方案。Issue 关闭时未在该讨论中给出已验证的补丁或配置变更。可优先尝试升级 Open WebUI 到包含相关修复的最新版本,并检查是否与 #27641 或 #28678 中提到的修复重叠。

注意事项:该报错在 Issue 中仅被确认与 ENABLE_FORWARD_USER_INFO_HEADERS 和内置知识库检索工具相关;若你同时使用其他自定义工具或中间件,路径可能不同。此修复未经验证,升级前请备份配置与数据。

问题场景

在 Open WebUI v0.11.0 中启用模型的原生函数调用(Native Function Calling),并在环境变量中设置 ENABLE_FORWARD_USER_INFO_HEADERS=True。当模型调用内置工具 query_knowledge_files 检索知识库文件时,工具内部构造的 user_model 只包含 idrole 字段(UserModel.model_construct(id=user_id, role=user_role)),随后的用户信息头(headers)构造逻辑需要访问 user.nameuser.email 等属性,因字段缺失而触发异常。

报错原文

AttributeError: 'UserModel' object has no attribute 'email'

原因分析

可能原因:Open WebUI 内置的 query_knowledge_files 工具在构造用户对象时,没有完整地从请求或会话中还原 UserModel 的全部字段(特别是 emailname)。当 ENABLE_FORWARD_USER_INFO_HEADERS 开启后,代码路径要求从该用户对象读取这些缺失字段并写入转发头,从而触发 AttributeError。这属于同一类用户信息头转发缺陷(与 #28678 中缺少 name 的报错本质相同),Issue 中未给出明确补丁或配置根因。

环境排查

  • 确认 Open WebUI 版本是否为 v0.11.0 或更低,并检查当前是否为最新版。
  • 确认环境变量 ENABLE_FORWARD_USER_INFO_HEADERS=True 已正确生效(检查启动日志或容器环境)。
  • 确认模型配置中已启用原生函数调用(Native Function Calling)。
  • 检查是否同时使用了 Ollama 或其他后端;记录其版本(Issue 中未说明)。
  • 若使用 Docker 部署,确认容器环境变量已重新加载(重启容器)。

解决步骤

  1. 先尝试升级 Open WebUI 到最新开发版或已发布版本(Issue 标注为已关闭,相关修复可能已合并到较新版本)。升级前备份 .env 文件与数据库。
  2. 如果升级后仍复现,检查 query_knowledge_files 工具的调用日志(包括 Docker 容器日志),确认 user_model 构造位置是否仍缺少 email 字段。
  3. 可优先尝试在调用知识库前停用 ENABLE_FORWARD_USER_INFO_HEADERS,验证问题是否仅与该开关相关(临时规避方案,不推荐长期使用)。
  4. 若涉及自定义中间件或认证插件,检查这些组件是否能在请求中补充完整用户字段(如 email),从而缓解该异常。
  5. 在升级或修复确认前,建议避免在需要知识库检索的模型中同时启用用户信息转发头。

验证方法

在修复后,执行与复现步骤相同的操作:启用原生函数调用,设置 ENABLE_FORWARD_USER_INFO_HEADERS=True,让模型调用 query_knowledge_files 查询一个知识库。如果正常返回结果且不再抛出 AttributeError: 'UserModel' object has no attribute 'email',则问题已解决。同时可在浏览器开发者工具或后端日志中确认用户信息头(User-Name、User-Email 等)已正确包含在转发请求中。

参考来源

open-webui/open-webui #28737

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 19067

发表回复

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