Skip to main content

Nano Banana 图片生成

使用文本生成图片,或提供参考图进行编辑、风格转换和多图合成。平台提供同步图片入口、异步任务入口和 Gemini 原生入口。

模型与接口

请求中使用平台模型名:gemini-nano-banana-2.1、nano-banana-2 或 nano-banana-pro。可调用的模型以你的 API Key 查询 /v1/models 的结果为准。 参考图编辑同样使用 /v1/images/generations 的 image 字段。本页的 Gemini 图片入口不支持 /v1/images/edits 或 multipart 请求。 本文示例使用 https://model-api.skyengine.com.cn。使用公司平台入口时,可将地址替换为 https://model-api.skyengine.com.cn,并使用该入口对应的 API Key。

同步文生图

以下示例使用 Nano Banana 2.1,生成一张 1K 正方形图片。

参考图编辑与多图合成

image 可使用一张图片的字符串,或多张图片的字符串数组。支持公开可访问的 HTTPS URL、data:image/png;base64,... 形式的 Data URL,以及图片的裸 base64。使用 Data URL 可以明确图片格式。
将示例 URL 替换为实际图片地址。需要鉴权、已过期或无法由平台访问的链接不适合作为参考图;建议改传 Data URL。编辑时直接在 prompt 中描述需要保留和改变的内容,不使用 mask。

参数矩阵

下表说明同步与异步图片入口的当前参数行为。原生 generateContent 使用后文的 Gemini 参数结构。

比例与分辨率

常用比例:1:1、2:3、3:2、3:4、4:3、4:5、5:4、9:16、16:9、21:9。 Nano Banana 2 和 2.1 还支持 1:4、4:1、1:8、8:1。Pro 使用常用比例。 ratio 控制画面形状,size 控制分辨率档位。例如 ratio="16:9" 与 size="2K" 可以组合使用。实际像素宽高由模型按比例和档位确定,不能把 2K 理解为每条边都等于 2048 像素。
不要在 Gemini 图片请求中用 size="1024x1024" 指定像素。当前平台仅识别分辨率档位,像素尺寸、auto 和其他未识别的值会被忽略,由模型选择默认档位。新模型 2.1 不支持 512;需要较小图片时请使用 nano-banana-2。

思考与搜索

当前图片入口显式设置思考强度时,建议使用 thinking_level="high",或省略此参数保留模型默认行为。Nano Banana 2.1 默认使用 medium;Nano Banana 2 默认使用 minimal。high 可能增加生成耗时和思考用量,不保证每次请求都会提高图片质量。 此图片入口暂不提供显式 minimal 或 medium 的准确映射:minimal / low 会作为 LOW 发送,medium 不会覆盖模型默认值。请勿用这些值来控制新模型的强度。 image_search=true 让模型可以参考 Google Search 的搜索结果,不保证每次请求都会实际搜索,也不等于调用专用图片搜索。搜索是否可用取决于模型和接入资源。

响应与用量

同步响应示例,图片内容以占位字符串展示,不能直接解码此占位值:
普通文本输出量为 output_tokens - output_tokens_details.image_tokens - output_tokens_details.text_tokens。上例分别是图片 1120、普通文本 5、思考 7 token。 计费时,普通文本输入为 60 - 20 = 40 token,普通图片输入为 40 - 10 = 30 token;文本缓存 20 和图片缓存 10 分别按缓存价格计算,不会再次按普通输入计费。缓存命中由实际 usage 确认,重复发送提示词不保证命中。若上游只提供缓存总量,平台会保留总量并在输入数量范围内补齐拆分,不能据此判断缓存的精确来源。 不同模型及分辨率的图片 token 量可能不同;以上数字仅演示字段和计算关系,不代表固定单张价格。实际单价使用平台模型页面展示的价格。

异步调用

将请求路径改为 /v1/images/generations/async,图片参数保持一致。提交后用 GET /v1/images/generations/{task_id} 查询状态;任务完成后从 data[].url 下载图片。 完整提交、轮询和保存示例见异步图片生成。Gemini 单张生成的 n=1 限制和分辨率要求同样适用。

Gemini 原生入口

需要原生消息结构或多轮上下文时,使用 generateContent。原生响应与同步图片入口的响应结构不同,不能从原生响应读取 data[].b64_json。
原生图片位于 candidates[].content.parts[].inlineData.data,格式由 inlineData.mimeType 给出。选取最终图片时排除 thought=true 的部分;不要假定第一段内容一定是图片。 原生参考图使用 parts[].inlineData:mimeType 填图片 MIME 类型,data 填裸 base64。多轮编辑时通过 contents 提交完整历史,保留模型返回的图片和其他必要内容,不仅发送上一轮的文字描述。

常见问题

  • HTTP 400:检查模型名、非空 prompt、n=1、未启用流式,以及模型支持的分辨率和比例。不要给 2.1 传 512。
  • HTTP 401 / 403:检查 API Key 和目标入口是否匹配、Key 是否有权限。
  • HTTP 501「未实现」:当前接入资源尚未支持该入口,请联系平台支持;更换 size 或重复请求不能解决。
  • 没有图片或缺少 usage:不能作为成功生图处理;平台会返回错误。安全限制或仅返回文字也可能导致没有图片。
  • 请求耗时较长:复杂构图、参考图、高分辨率或高思考强度可能增加耗时。同步示例设置了 300 秒客户端超时;需要持续获取结果时使用异步接口,避免盲目重复提交造成多次生成。

参考文档