issue: edit_image returns 404 when the model passes the image’s file name instead of its id

当模型把上传图片的“文件名”(如 photo.png)而不是“文件 id”传给内置 edit_image 工具时,常见表现是图片明明存在却返回 404;优先确认模型传入的是文件 id 或文件 URL,而不是裸文件名。

快速结论:当模型把上传图片的“文件名”(如 photo.png)而不是“文件 id”传给内置 edit_image 工具时,常见表现是图片明明存在却返回 404;优先确认模型传入的是文件 id 或文件 URL,而不是裸文件名。

适用环境:Open WebUI 0.12.0(据正文称在 2026-10-17 的 main 及 v0.12.3 上仍存在);问题发生于启用内置图片工具、使用原生函数调用(native function calling)的聊天模型,并配置了兼容 OpenAI 的 /v1/images/edits 图片编辑连接。Issue 未给出操作系统、Python、CUDA 或显卡信息。

最快修复方案:暂无确认的一步修复方案。维护者称在开发分支上以文件 id、文件 URL、完整 URL 三种方式传图均可正常编辑,因此可优先尝试让模型改用文件 id 或文件 URL 传参,并选用原生工具调用可靠的模型。

注意事项:Issue 正文给出的补丁会按文件名搜索文件,可能命中同名的最新文件,从而编辑到错误的图片;该补丁还会绕开文件归属和共享权限检查,不建议直接照搬。只有在模型确实传入 id 或 URL 仍失败时,才应带着该次调用的服务端日志重新打开 Issue。

问题场景

在 Open WebUI 中启用内置图片工具,使用支持原生函数调用的聊天模型,并配置一个兼容 OpenAI 的 /v1/images/edits 图片编辑连接。用户在聊天中上传照片并请求编辑时,edit_image 工具返回 404;同一连接的文字生图正常,且同一文件在浏览器中访问返回 200。上报者称服务端从未收到发往编辑后端的请求。

报错原文

ERROR | open_webui.tools.builtin:edit_image:516 - edit_image error: 404: We could not find what you're looking for :/
Traceback (most recent call last):
  ...
  File ".../open_webui/tools/builtin.py", line 470, in edit_image
    images = await image_edits(...)
  File ".../open_webui/routers/images.py", line 971, in image_edits
    form_data.image = await load_url_image(form_data.image)
  File ".../open_webui/routers/images.py", line 957, in load_url_image
    file_response = await get_file_content_by_id(file_id, user)
  File ".../open_webui/routers/files.py", line 926, in get_file_content_by_id
    raise HTTPException(status_code=404, detail=ERROR_MESSAGES.NOT_FOUND)

原因分析

Issue 正文认为根因有两处:一是 routers/files.py 中 get_file_content_by_id 被定义了两次(约 806 行与 920 行),后一个 {file_name} 版本覆盖了模块级名称,导致 images.py 导入的是带文件名的版本,而 load_url_image 在请求上下文之外直接调用该路由函数,db 参数仍是 Depends 标记,Files.get_file_by_id 中的异常被吞掉(except Exception: return None),最终表现为无信息量的 404。

二是同一分支中 <attached_files> 标签会同时渲染上传文件名和 URL,模型若只传裸文件名,则完全不会触发按 id 的查找。维护者在关闭说明中给出的结论是:以 id、文件 URL 或完整 URL 传图都正常,唯一能复现该 404 的输入是文件名(例如 photo.png);模型本身已同时拿到文件名和 id,传文件名属于模型调用错误。

环境排查

  • Open WebUI 版本:确认是否为 0.12.0、v0.12.3 或受影响的 main 版本。
  • 模型能力:确认所用聊天模型是否启用并可靠支持原生函数调用。
  • 工具配置:确认内置图片工具已启用,且 /v1/images/edits 连接配置正确(文字生图可用可侧面验证连接)。
  • 模型实际传参:检查服务端日志或工具调用参数,确认 edit_image 收到的是文件 id、文件 URL 还是裸文件名。
  • Issue 未提供操作系统、Python、CUDA、PyTorch 或显卡信息,这些项目无需作为已知条件。

解决步骤

  1. 先在服务端日志中确认本次 edit_image 调用传给图片编辑接口的图片参数是什么。若为 photo.png 这类裸文件名,即命中 Issue 中唯一可复现的 404 场景。
  2. 可优先尝试让模型改用文件 id 或文件 URL 传图。维护者已在开发分支上验证以 id、文件 URL、完整 URL 三种方式传图均可完成编辑。
  3. 若使用的模型工具调用不稳定、容易把文件名当作引用,可优先尝试换用原生工具调用更可靠的模型,避免模型在文件名与 id 之间选错。
  4. 只有确认模型传入的是 id 或 URL 且仍然失败时,再收集该次调用的完整服务端日志并重新打开 Issue,而不是按文件名搜索补丁直接改代码。
  5. 不要直接套用 Issue 正文中的按文件名搜索补丁:它会选取同名最新文件,可能编辑错误图片,且缺少归属与共享权限校验。

验证方法

在同一个聊天中重新上传图片并发起编辑,同时查看服务端日志:确认 edit_image 收到的图片参数为文件 id 或文件 URL;编辑请求应被发送到配置的 /v1/images/edits 后端并返回编辑结果,而不是出现 404: We could not find what you’re looking for :/。若模型仍传文件名,则问题复现,说明需调整模型或工具调用行为。

参考来源

open-webui/open-webui #32714

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 29380

发表回复

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