Skip to main content
POST
Gemini OpenAI 格式(生图)
若使用 Gemini 原生 generateContent 生图,请参见 Gemini 原生(图像)。需要 extra_body.google 细粒度控制时,也可走 Gemini OpenAI 格式(对话)/v1/chat/completions 入口(见文末附录)。
Gemini imagine 系列(包含 Google 官方”nano banana”等可同时返回文本 + 图片的多模态生图模型)通过 Gravitex AI,可用 OpenAI 兼容的 /v1/images/generations/v1/images/edits 接口直接调用。 Base URLhttps://api.gravitex.ai

目录


认证

所有接口使用 Bearer Token 认证。在 Gravitex AI 控制台 创建令牌后,在请求头中添加:
所有请求均使用 JSON 格式:

模型列表

平台还会持续接入新的 imagine 系列模型,最新支持列表请在 Gravitex AI 控制台 模型页面查看。

接口总览

对 imagine 模型来说,/v1/images/generations/v1/images/edits 完全等价——传不传 image 字段决定是文生图还是图生图,而不是接口路径。选哪个看你用的 SDK 习惯(OpenAI Python SDK 中 images.generate vs images.edit)。

/v1/images/generations — 文生图 / 图生图

POST https://api.gravitex.ai/v1/images/generations

请求参数

image 字段格式

image 字段用于”图生图”——把一张或多张参考图喂给模型作为视觉上下文。支持以下两种 JSON 形态:
  • URL 形态:网关会自动 fetch 并校验图片类型;URL 必须可公网访问,建议用 https。
  • base64 / data URI 形态:网关自动 decode 并嗅探 MIME。
  • 支持的图片格式image/pngimage/jpegimage/jpgimage/webpimage/heicimage/heif
  • 不支持 multipart/form-data 上传文件——请把图片转成 base64 或先上传到对象存储拿到 URL。

size / quality 取值映射

imagine 模型的输出有限定档位(不像传统模型可任意指定像素),网关会自动把 OpenAI 风格的取值映射到模型支持的档位。

size → 宽高比

quality → 输出分辨率档位

响应格式

成功响应

Gemini imagine 模型在生成图片的同时常常会返回一段文字描述(“我帮您画了 X”),这段文字以 revised_prompt + metadata.text 形式返回,客户端可选择展示。 usage 字段格式与 OpenAI gpt-image-1 完全对齐,方便用 OpenAI SDK 的项目无缝接入。

错误响应

详见 错误处理 章节。

/v1/images/edits — 图片编辑

POST https://api.gravitex.ai/v1/images/edits 请求/响应格式与 /v1/images/generations 完全一致(同样接受 JSON + image 字段,返回相同结构)。区别仅在于 OpenAI Python SDK 中 images.editimages.generate 是两个不同的方法,部分用户习惯按”编辑”语义走 edits 入口。
⚠️ 与 OpenAI 官方 dall-e-2 的 /images/edits 不同:本接口不支持 multipart/form-data 上传 + mask 字段(imagine 模型靠 prompt 指挥编辑,不需要 mask)。image 字段同 generations。

使用场景与示例

1. 纯文生图

最基础的使用方式:只传 prompt

2. 图生图 / 风格迁移

把一张照片改成赛博朋克风格——image 字段传单张参考图。
也可以用 base64 / data URI 形式(适合本地图片):

3. 多图融合

把多张参考图合成到一张图里——image 字段传字符串数组。

4. /v1/images/edits 等价调用

下面这个请求和 场景 2 完全等价,只是入口换成 edits:

5. 用 Python (openai SDK) 调用

图生图(OpenAI SDK 的 images.edit 在我们这里也走 generations 协议;如要走 /v1/images/edits 入口,请用 client.images.edit(...)):

6. 用 Node.js (openai SDK) 调用

带参考图(图生图)——直接用 fetch 透传:

错误处理

请求失败时,HTTP 状态码 ≠ 200,响应体格式:

常见错误码

被安全策略拦截(prompt_blocked)通常是 prompt 涉及未成年人不适宜内容、政治敏感、版权人物等。换一种描述方式或避开敏感主题即可。

计费规则

  • 按”实际生成的图片张数”计费:上游真实返回了几张图就扣几张,请求里的 n 参数不影响计费(见 限制说明)。
  • 被 safety 拦截或返回零图时不计费
  • 不同模型 / quality 档位的单价请在 Gravitex AI 控制台 - 模型价格 页面查看。
  • 计费明细可在 令牌使用记录 页查看,每条记录包含 生成数量 N 字段。

限制说明


最佳实践

  1. prompt 写法:imagine 模型对自然语言描述非常敏感,多用具体形容词(风格、色调、构图、镜头视角),避免空泛词汇。
  2. 图生图先小图试:第一次调试时建议把参考图缩到 512×512 以下,调通 prompt 后再上原图。
  3. 多次重试:图像生成有随机性,同一 prompt 可能首次效果不理想,建议提供”重新生成”按钮让用户多试几次。
  4. 敏感主题降级:如果业务可能涉及人物 / 名人 / 品牌 logo,建议在产品上加入”换一张”和”举报”按钮,被 prompt_blocked 拦截时友好提示用户。
  5. 保存原始 base64:拿到 b64_json 后立即保存到您自己的存储(OSS / S3),不要重复请求 Gravitex AI 拉取——上游不缓存历史结果。
  6. 善用 revised_prompt:模型返回的描述文本是免费的”产品文案”,可以直接展示在生成图下方提升用户体验。
  7. sizequality 组合:先用 1K 出草稿,定稿后再用 2K 出最终成片,可显著节省成本。

常见问题

Q1:为什么我传了 n=4,只拿到 1 张图?

A:Gemini imagine 模型上游单次调用只产出 1 张图,平台会按实际产出张数计费。需要多张请客户端多次调用,每次单独计费。

Q2:图生图能精确控制要改哪些区域吗?

A:imagine 模型不接受 mask 字段,所有改动通过 prompt 描述(如”只把头发改成红色,其它保持不变”)。模型会理解 prompt 自动定位区域。

Q3:返回的 b64_json 没有 data:image/png;base64, 前缀,怎么用?

A:b64_json 是纯 base64 字符串,方便直接 decode 保存为文件。如果你要嵌入 HTML <img src>,自己拼接前缀即可:"data:image/png;base64," + b64_json

Q4:能让模型只返回图片不返回文字吗?

A:当前不能——imagine 模型的特色就是图文一起返回,revised_prompt/metadata.text 字段可以选择不展示,但请求层面无法关闭。

Q5:图生图和文生图收费一样吗?

A:是的——按”输出图片张数 + 输出 quality 档位”计费,与是否带 image 字段无关。

Q6:可以同时传文字 + 多张参考图吗?

A:可以。image 字段支持 string[],配合 prompt 描述融合方式,参考 场景 3:多图融合

Q7:/v1/images/generations/v1/chat/completions 调 imagine 模型有什么区别?

A:详见 附录。简单来说:
  • /v1/images/generations:协议简单(OpenAI Image API 标准),适合”我只要图片”的场景。
  • /v1/chat/completions:能控制 Gemini 原生参数(imageConfigsafetySettingsthinking_config 等),适合”需要细粒度控制”的场景。

附录:与 /v1/chat/completions 入口的对比

Gemini imagine 模型同时也可以走 OpenAI 的 /v1/chat/completions 接口(把 prompt 写成 message,把图片放进 content 数组)。两个入口对比: 切换示例(chat 入口 图生图):
返回的 choices[0].message.content 是数组: