issue: Custom tool __event_emitter__ fails to send file download in v0.10.2

用户通过 Docker 部署 Open WebUI v0.10.2,创建了自定义工具,该工具使用 python-docx 生成 .docx 文件,并通过 __event_emitter__ 以 type: "file" 方式发送文件。在聊天中触发工具后,前端显示工具执行状态,最终助手消息仅包含工具的

issue: Custom tool __event_emitter__ fails to send file download in v0.10.2

issue: Custom tool __event_emitter__ fails to send file download in v0.10.2

快速结论:该报错发生在 Open WebUI v0.10.2 中,自定义工具(Custom Tool)通过 __event_emitter__ 发送文件下载(如 .docx)时,文件卡不会出现在聊天界面,仅文本返回值正常显示。优先排查是否为 v0.10.2 版本已知回归问题,建议升级到包含修复的下一个发布版本。

问题场景

用户通过 Docker 部署 Open WebUI v0.10.2,创建了自定义工具,该工具使用 python-docx 生成 .docx 文件,并通过 __event_emitter__type: "file" 方式发送文件。在聊天中触发工具后,前端显示工具执行状态,最终助手消息仅包含工具的字符串返回值(如 “Done: xxx.docx”),但没有任何文件附件或下载卡片出现。UI 和后端日志均无错误,即使设置 GLOBAL_LOG_LEVEL=DEBUG 也无任何相关输出。

报错原文

No error is visible in the UI or backend logs (even with GLOBAL_LOG_LEVEL=DEBUG).
The frontend displays "Running generate_script_docx...", then only the success message appears without any file.
The tool's return value reaches the frontend, confirming execution, but the __event_emitter__ block appears to be skipped or fail silently.

原因分析

可能原因:该问题已被确认为 Open WebUI v0.10.2 中的一个已知回归问题(与 issue #23988 为同一根因)。在工具执行过程中,__event_emitter__ 没有被正确注入或传递,导致工具内对 __event_emitter__ 的调用静默失效——工具返回值仍能正常到达前端,但文件发射(emit)事件被跳过或丢失。该修复已合并到开发分支(dev branch),但尚未包含在 v0.10.2 版本中。

环境排查

  • Open WebUI 版本:确认是否正在使用 v0.10.2(该版本包含此回归问题)。
  • 安装方式:Docker(用户使用的安装方式)。
  • 检查相关 issue #23988 中的修复是否已包含在当前使用的版本中。
  • 建议检查浏览器控制台(Console)日志,虽然用户表示 UI 无错误,但可能存在被忽略的警告或错误。
  • 确认自定义工具代码中 __event_emitter__ 参数名称和调用方式是否与示例一致(不正确的参数名称也可能导致静默失败,但本 issue 确认是版本回归)。

解决步骤

  1. 升级 Open WebUI 到包含修复的下一个发布版本(v0.10.2 之后的版本)。修复已合并到 dev 分支,参考 #23988。
  2. 如果暂时无法升级,可尝试:
    – 将工具中的文件发送逻辑改为同步方式(如先保存文件到服务器,再通过返回值返回文件路径),然后使用前端配置或另一工具来触发下载。
    – 检查是否可以通过环境变量或配置项临时绕过该问题(用户尝试过 GLOBAL_LOG_LEVEL=DEBUG 但无效)。
  3. 可优先尝试:确认是否有使用自定义的管道(pipe)或工具链,因为 #23988 提到 __event_emitter__ 在工具调用后的后续请求中未设置,属于管道执行中的回归。

验证方法

升级到包含修复的 Open WebUI 版本后,重新触发自定义工具执行文件生成。如果聊天窗口中正确出现文件卡片且可以下载 .docx 文件,则问题已解决。如果仍不生效,请检查工具代码中 __event_emitter__ 的调用格式是否与官方示例一致(包括 mime_type 字段的正确性)。

参考来源

open-webui/open-webui #27151

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 14179

发表回复

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