Skip to content

修复 Gemini 和第三方异步生图接口的兼容性问题 - #125

Open
Hiro674 wants to merge 3 commits into
hero8152:mainfrom
Hiro674:main
Open

修复 Gemini 和第三方异步生图接口的兼容性问题#125
Hiro674 wants to merge 3 commits into
hero8152:mainfrom
Hiro674:main

Conversation

@Hiro674

@Hiro674 Hiro674 commented Jun 25, 2026

Copy link
Copy Markdown

本次修改主要用于修复在线生图在 Gemini 协议和第三方异步协议接口下的图片生成兼容性问题,并优化 Gemini 协议下的图片传入逻辑以达到能够理解图片的效果。

问题说明

  1. 部分 Gemini 协议返回的图片内容无法被正确解析,导致前端提示生成结果为空*‌¹。

  2. 在 API 提供商支持异步协议的前提下,部分第三方异步生图接口虽然可以正常返回任务 ID,但最终生成结果可能与提示词或参考图不相关。经核实,目前原有异步生图接口格式主要适配 APIMart,不适用于其他第三方异步协议接口*‌²。

  3. Gemini 多图参考场景下,虽然图片已传入接口,但多图传入结构对部分接口不够稳定,可能导致接口无法正确识别图片顺序或参考图内容*‌³。

主要修改:

  1. 增强 Gemini 图片结果解析
    扩展 Gemini 返回结果的解析兼容性,支持以下图片返回格式:
  • 兼容 inlineData / inline_data
  • 兼容 fileData.fileUri / file_data.file_uri
  • 兼容返回文本或 Markdown 中包含图片 URL 的情况

通过以上兼容处理,降低 Gemini 图片结果无法被识别、前端显示为空的概率。

  1. 增强异步任务 ID 提取
    扩展异步任务 ID 的识别范围,兼容更多第三方接口返回字段,包括:
  • 兼容 task_id
  • 兼容 taskId
  • 兼容 job_id
  • 兼容 request_id
  • 兼容 generation_id
  • 支持从 dataresulttaskjoboutput 等嵌套结构中提取任务 ID,提升不同异步接口返回结构下的兼容性。
  1. 增强第三方异步生图请求兼容性
    针对非 APIMart 的第三方异步生图接口,新增更通用的 OpenAI-compatible JSON 请求格式。
  • 增加通用 OpenAI-compatible JSON 请求格式
  • 同时传入 promptinputimageimage_urlsimages
  • 避免部分第三方中转站只识别其中一种字段,导致提示词或参考图没有实际生效。
  1. 保留 APIMart 原有异步格式
    本修改未移除 APIMart 的原有异步请求格式。
  • 如果是真 APIMart 域名,仍优先使用 APIMart 格式
  • 如果是第三方异步接口,则优先使用更通用的 OpenAI-compatible JSON 第三方兼容格式

这样既保证 APIMart 平台的原有逻辑不受影响,也提升了第三方异步接口的可用性。

  1. 增强异步任务查询兼容性
  • 兼容 /v1/tasks/{task_id}
  • 兼容 /v1/images/tasks/{task_id}

以适配不同第三方接口的任务查询路径。

  1. 调整 Gemini 多图传入结构
  • 将每张参考图作为独立 content 传入。
  • 调整传入顺序,先传入参考图片,最后传入用户提示词。
  • 解决部分 Gemini 接口无法稳定识别多图顺序的问题。
  • 让模型更容易理解参考图片与提示词之间的关系。

本地测试情况:

  • OpenAI-compatible 生图接口正常
  • 第三方异步生图接口正常
  • 异步接口可以正确使用提示词和参考图
  • Gemini 接口可以正常解析图片结果
  • Gemini 多图参考可以正常传入
  • APIMart 格式仍保留给 APIMart 平台使用
  • main.py 已检查语法正确性

这次修改没有针对某个固定模型或固定平台做硬编码,主要是增强不同中转接口和不同返回格式的兼容性。

*‌‌¹
修改前结果(实际上是有返回的,本地因为兼容问题无法捕获报错,上游渠道成功捕获并正确返回了生成图片图片)
1

修改后结果
11

*‌²
修改前结果
2

修改后结果
22

*‌³
修改前结果(无法判别图片顺序)
11

修改后结果(经过测试,绝大多情况下gemini协议的模型可以理清图片顺序,这里我直接使用旧版模型也能理解)
33

修改后结果2(这种方法的约束力更强,输出结果第一张是修改前结果,无法理解图片顺序和蒙版生成,第二张是修改后能够正确理解各个图片的关系)
44

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant