feat: human-readable display names for tool functions in the chat status

这个问题通常出现在模型调用工具(tool calling)后,聊天界面顶部状态行直接显示原始 Python 函数名,例如 “Exploring leer_documento, 14 confirmar_ncm”,非技术用户会把它误认为内部报错。优先排查工具函数命名与前端工具调用状态标签的渲染逻辑,并

快速结论:这个问题通常出现在模型调用工具(tool calling)后,聊天界面顶部状态行直接显示原始 Python 函数名,例如 “Exploring leer_documento, 14 confirmar_ncm”,非技术用户会把它误认为内部报错。优先排查工具函数命名与前端工具调用状态标签的渲染逻辑,并考虑给函数增加可读显示名(当前属功能请求,非配置错误)。

适用环境:Issue 确认使用 Open WebUI 的聊天界面与工具调用功能;正文提到前端聊天消息组件基于 tool_calls 项的 attributes.name 统计构建标签。Issue 未提供操作系统、Python、CUDA、显卡或依赖版本信息,这些项目无法确认。

最快修复方案:暂无确认的一步修复方案。该 Issue 被标记为 enhancement 并已关闭,Issue 中没有给出官方已验证的配置项或补丁。可优先尝试:在工具文件的 frontmatter 或函数 docstring 中声明显示名,并确认当前 Open WebUI 版本是否已支持该字段;若未支持,则只能等待上游实现或临时修改前端构建产物。

注意事项:函数名必须保持符合 OpenAI tool-calling API 的标识符规则(^[a-zA-Z0-9_-]{1,64}$),直接改成可读或本地化名称不可行。Issue 作者选择本地修补前端构建 chunk 实现映射,但每次升级都会丢失,不建议作为长期方案。Issue 中未验证任何具体配置键或版本号,以下步骤均为可优先尝试的排查方向。

问题场景

在 Open WebUI 中,当模型触发工具调用时,聊天消息上方会出现可折叠状态行,内容由原始 Python 函数名拼接而成,例如 “Exploring leer_documento, 14 confirmar_ncm”;展开后还会显示 “View Result from confirmar_ncm”、“Executing {{NAME}}”、“Denied {{NAME}}” 等文本。对于内部助手、后台办公流程等非技术用户场景,这些标识符看起来像内部错误,且长链路多工具调用时难以跟踪。

工具作者无法直接把函数改名为可读文本,因为函数名会作为工具名发送给模型,必须满足 API 的标识符约束。

报错原文

Exploring leer_documento, 14 confirmar_ncm

View Result from confirmar_ncm

该 Issue 不是运行时异常,上述内容为界面中实际显示的原始文本。

原因分析

可能原因是:聊天消息组件在构建工具调用状态行时,直接读取每个 tool_calls 项的 attributes.name,并按名称出现次数计数生成 “Exploring / Explored” 摘要;由于工具名即 Python 函数名,UI 没有任何显示名映射层,因此显示的是原始标识符。

Issue 作者指出,只要在计数前先通过工具声明的标签做一次名称映射,即可实现可读显示,同时原始名称仍继续发送给模型。当前 Open WebUI 未内置该映射机制,所以显示名无法本地化或美化,属功能缺失而非配置错误。

环境排查

  • 确认当前使用的 Open WebUI 版本,并检查该版本发布说明中是否已加入工具函数显示名支持。
  • 确认问题发生在工具调用状态行(“Exploring / Explored” 摘要及 “View Result from …” 展开项),而不是工具内部主动发送的 status 事件。
  • 检查工具文件中是否已声明 frontmatter 的 display_names 字段,或函数 docstring 中是否带有 :display: 标签;确认当前版本是否解析这些字段。
  • 确认是否使用了本地修改的前端构建 chunk;升级后该修改会丢失,需重新评估。
  • Issue 未涉及 Python、CUDA、PyTorch 或显卡版本,这些不是本问题的排查项。

解决步骤

  1. 先确认 Open WebUI 版本中是否已支持为工具函数声明显示名。Issue 提出两种可选声明方式:工具文件 frontmatter 中的 display_names 映射,或每个函数 docstring 内的 :display: 标签。可优先尝试按其中一种方式在工具文件中声明,并重启服务后测试。
  2. 若当前版本不识别上述字段,则说明显示名映射尚未实现。此时可评估以下临时措施,但均非确认方案:
    • 在工具内部主动发送 status 事件以提供可读文本,但 Issue 指出持久化的 “Exploring …” 摘要仍会使用原始函数名。
    • 临时修补前端构建 chunk,在统计前将函数名映射为显示名。Issue 作者采用此方式并确认可用,但每次升级后补丁会丢失,需重新应用。
    • 将函数改名为较可读的标识符(如 leer_el_documento),但下划线仍会显示且无法本地化,只能作为折中。
  3. 若需要正式支持,可关注上游对显示名功能的实现进展,并在相关 Issue(如 #29997)中跟进。

验证方法

触发一次工具调用,观察聊天状态行是否显示为声明的可读标签(如 “Reading the document”、“Local database lookups”),而非原始函数名;展开后 “View Result from …” 等文本也应使用相同显示名。同时确认发给模型的工具名仍为原始函数名,工具调用功能本身未受影响。

参考来源

open-webui/open-webui #33832

相关 Issue:#29997 feat: semantic tool-call labels、#5520 Show tool usage in chat

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 33207

发表回复

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