issue: 400: [ERROR: Bad Request] when using image generation using LiteLLM openai-api

用户在 Open WebUI v0.9.6(Docker 部署,Ubuntu 22.04)中配置了图片生成功能: 在 Admin Panel → Settings → Images 中启用图片生成,引擎选择“Default (Open AI)” 将 OpenAI API Base URL 设置为 L

issue: 400: [ERROR: Bad Request] when using image generation using LiteLLM openai-api

issue: 400: [ERROR: Bad Request] when using image generation using LiteLLM openai-api

快速结论:该报错通常发生在 Open WebUI 通过 LiteLLM(作为 OpenAI 兼容 API 代理)生成图片时,请求被 LiteLLM 或其上游模型拒绝。优先排查 LiteLLM 是否支持 Open WebUI 发送的图片生成请求格式(如参数 sizequality 等)。

问题场景

用户在 Open WebUI v0.9.6(Docker 部署,Ubuntu 22.04)中配置了图片生成功能:

  • Admin Panel → Settings → Images 中启用图片生成,引擎选择“Default (Open AI)”
  • 将 OpenAI API Base URL 设置为 LiteLLM 的入口地址(如 https://litellm.example.com/v1)并填写 API Key
  • 在模型中开启 Native Function Calling

用户在聊天窗口发送图片生成指令后,模型调用图片生成工具但返回 HTTP 400 Bad Request。该问题在一次调试中未在 Open WebUI 容器日志中发现相关错误,即使开启 DEBUG 日志后也未显示与图片生成请求失败直接相关的日志条目。

报错原文

400: [ERROR: Bad Request]

(浏览器控制台或 HTTP 响应中可见此错误,但容器内日志未记录详细错误信息。)

原因分析

基于 Issue 讨论和已关闭的关联 Issue(如 #23611#24659),可能原因包括:

  • LiteLLM 作为中转代理转发给上游模型时,上游模型不支持 Open WebUI 发送的图片生成请求参数(例如 sizequality 等),LiteLLM 直接拒绝响应(返回 400)。
  • LiteLLM 配置中未正确透传 OpenAI 兼容的图片生成端点(/v1/images/generations)或模型映射错误。
  • Open WebUI 在 Native Function Calling 模式下生成的请求体格式与 LiteLLM 期望的格式不兼容(例如缺少某些必填字段或使用了非法参数值)。
  • 用户侧 LiteLLM 配置(如路由规则、模型白名单、API Key 权限)限制了图片生成请求。

注:Issue 中维护者回复“works for me, certainly misconfigured on your end”,因此该问题更可能属于用户端配置问题,而非 Open WebUI 缺陷。

环境排查

  • 确认 Open WebUI 版本:v0.9.6(已是最新版,且 Issue 已关闭于 commit 中)。
  • 确认 LiteLLM 版本及配置:检查 LiteLLM 是否已正确配置模型路由、API Key 及图片生成支持(如 image_generation: true 等)。
  • 检查 LiteLLM 日志:查看 LiteLLM 容器或进程日志,排查 400 错误的详细原因(通常会在该日志中)。
  • 确认上游模型支持图片生成:例如 DALL-E 3、Stable Diffusion 等模型,并检查其是否可通过 OpenAI 兼容 API 调用。
  • 网络/代理设置:确保 Open WebUI 可以顺利发送请求到 LiteLLM 的完整 URL,且无中间代理或防火墙拦截。

解决步骤

  1. 排查 LiteLLM 日志:最直接的排查方式是查看 LiteLLM 的运行时日志(非 Open WebUI 日志),通常在 LiteLLM 容器的标准输出或日志文件中可找到 400 错误的详细原因(如“invalid parameter: size”、“model not found”等)。
  2. 检查 LiteLLM 配置
    • 确认 LiteLLM 的 litellm_config.yaml 中已为图片生成模型配置了正确的路由(如 model_name: dall-e-3 映射到实际部署模型)。
    • 确保 LiteLLM 的 general_settings 或模型设置中已启用图片生成功能(若有该选项)。
  3. 检查 Open WebUI 图片生成请求参数:通过浏览器开发者工具(Network 面板)截获 Open WebUI 发往 LiteLLM 的请求体,对照 LiteLLM 的 API 文档确认参数是否兼容。常见不兼容参数包括:
    • size:某些模型仅支持固定尺寸(如 1024×1024),而 Open WebUI 可能发送其他尺寸。
    • qualitystyle:并非所有模型都支持。
    • n(生成数量)参数是否在范围内。

    可参考关联 Issue #23611 中关于 size 参数的修复方案(如果适用)。

  4. 在 LiteLLM 中测试直接调用:使用 curl 或 Postman 直接向 LiteLLM 的 /v1/images/generations 发送与 Open WebUI 相同格式的请求,验证是否能成功。例如:
    curl -X POST "https://litellm.example.com/v1/images/generations" \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"model": "dall-e-3", "prompt": "A cat", "n": 1, "size": "1024x1024"}'

    如果此时也返回 400,则问题锁定在 LiteLLM 或上游模型;如果返回 200,则问题可能在 Open WebUI 的请求格式上。

  5. (可优先尝试)升级 Open WebUI:该 Issue 已被标记为已解决(Closed),请确认是否使用了包含修复的版本。若仍使用 v0.9.6,建议升级到更新的版本(如 v0.9.7+)以获取可能的功能修正。
  6. 尝试禁用 Native Function Calling:切换到“默认”模式生成图片,排除 Native Function Calling 引起的格式差异。
  7. 检查环境变量或 Docker 配置:如有必要,在 Docker 部署中检查 .env 文件,确保 OPENAI_API_BASEOPENAI_API_KEY 设置正确且指向 LiteLLM。

验证方法

成功发送图片生成请求后,Open WebUI 聊天窗口应正确显示生成的图片,且无 400 错误。同时 LiteLLM 日志中应显示正常的 200 响应。也可通过浏览器开发者工具确认请求返回 HTTP 200 及图片数据。

参考来源

open-webui/open-webui #25989

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 7484

发表回复

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