Gemini 图片生成
概述
AIone 已支持 Gemini 图片生成模型,并统一通过 OpenAI Compatible 的 /v1/chat/completions 端点访问。
这一组模型在网关内部会自动切换到 Gemini 原生图片生成链路,再转换回 OpenAI 兼容响应格式。因此你的请求方式仍然保持统一,但可以额外使用图片生成相关参数。
图片模型一览
| 模型 | 最大分辨率 | 速度 | 特点 | 指定分辨率方式 |
|---|---|---|---|---|
gemini-3.1-flash-image-preview |
4K (4096×4096) | 快 | 性价比最高,支持 512/1K/2K/4K 四档 | image_size 参数 |
gemini-3-pro-image-preview |
1K (1024×1024) | 中 | 默认 1K,质量稳定 | 默认即可 |
gemini-3-pro-image-preview-2k |
2K (2048×2048) | 中 | Pro 质量 + 2K 分辨率 | 模型名自带 |
gemini-3-pro-image-preview-4k |
4K (4096×4096) | 慢 | Pro 质量 + 4K 分辨率 | 模型名自带 |
gemini-2.5-flash-image |
1K (1024×1024) | 快 | 上一代 Flash,仅 1K | — |
如果你不确定模型名,请以
GET https://api.openbili.com/v1/models和 Portal 模型列表页为准。
Gemini 3.1 Flash Image 接入指南
gemini-3.1-flash-image-preview 是目前性价比最高的图片生成模型,支持 4 档分辨率(512 ~ 4K),通过 image_size 参数控制。
默认 1K 分辨率
不传 image_size 时默认生成 1K (1024×1024) 图片:
curl https://api.openbili.com/v1/chat/completions \
-H "Authorization: Bearer sk-nex-your-key-here" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.1-flash-image-preview",
"messages": [
{"role": "user", "content": "画一只可爱的猫咪"}
],
"max_tokens": 4096
}'生成 2K 高清图片
curl https://api.openbili.com/v1/chat/completions \
-H "Authorization: Bearer sk-nex-your-key-here" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.1-flash-image-preview",
"messages": [
{"role": "user", "content": "画一只可爱的猫咪"}
],
"max_tokens": 4096,
"image_size": "2K"
}'生成 4K 超高清图片
curl https://api.openbili.com/v1/chat/completions \
-H "Authorization: Bearer sk-nex-your-key-here" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.1-flash-image-preview",
"messages": [
{"role": "user", "content": "画一只可爱的猫咪"}
],
"max_tokens": 4096,
"image_size": "4K"
}'注意: 4K 图片生成时间较长(可达 2-3 分钟)。强烈建议使用
"stream": true,网关会每 10 秒发送 keepalive 心跳,防止中间网络设备因空闲断开连接。同时请将客户端 HTTP 超时设置为 ≥ 600 秒。
自定义宽高比 + 分辨率
aspect_ratio 和 image_size 可以组合使用:
curl https://api.openbili.com/v1/chat/completions \
-H "Authorization: Bearer sk-nex-your-key-here" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.1-flash-image-preview",
"messages": [
{"role": "system", "content": "你是一名插画师,请输出适合做横幅封面的图片"},
{"role": "user", "content": "画一只可爱的猫咪"}
],
"max_tokens": 4096,
"image_size": "2K",
"aspect_ratio": "16:9",
"temperature": 0.8
}'OpenAI Python SDK 示例
from openai import OpenAI
client = OpenAI(
api_key="sk-nex-your-key-here",
base_url="https://api.openbili.com/v1",
)
# 生成 2K 图片
response = client.chat.completions.create(
model="gemini-3.1-flash-image-preview",
messages=[{"role": "user", "content": "画一只可爱的猫咪"}],
max_tokens=4096,
extra_body={
"image_size": "2K",
"aspect_ratio": "16:9",
},
)
# 处理返回结果
# content 是字符串(可能包含 markdown 格式的内嵌图片)
print(response.choices[0].message.content)
# 图片数据通过独立的 images 字段返回(纯文本响应无此字段)
images = getattr(response.choices[0].message, "images", None)
if images:
for img in images:
base64_data = img["image_url"]["url"] # data:image/jpeg;base64,...OpenAI Node.js SDK 示例
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "sk-nex-your-key-here",
baseURL: "https://api.openbili.com/v1",
});
const response = await client.chat.completions.create({
model: "gemini-3.1-flash-image-preview",
messages: [{ role: "user", content: "画一只可爱的猫咪" }],
max_tokens: 4096,
// @ts-ignore — 非标准参数通过 extra body 传递
image_size: "2K",
aspect_ratio: "16:9",
});
const content = response.choices[0].message.content;
// content 是 string(可能包含 markdown 格式的内嵌图片)
// 如需程序化提取图片,使用 response.choices[0].message.images图片参数详解
image_size — 分辨率
控制生成图片的分辨率。注意大写 K,小写会被拒绝。
| 值 | 像素(正方形时) | 适用模型 | 说明 |
|---|---|---|---|
"512" |
512×512 | gemini-3.1-flash-image-preview |
仅 3.1 Flash 支持,缩略图/草稿场景 |
"1K" |
1024×1024 | 所有图片模型 | 默认值,不传时使用此分辨率 |
"2K" |
2048×2048 | gemini-3.1-flash-image-preview、gemini-3-pro-image-preview-2k |
高清 |
"4K" |
4096×4096 | gemini-3.1-flash-image-preview、gemini-3-pro-image-preview-4k |
超高清,生成时间较长 |
Gemini 3 Pro Image 的区别:
gemini-3-pro-image-preview-2k和-4k是预设了分辨率的独立模型名,无需传image_size参数。而gemini-3.1-flash-image-preview通过image_size参数动态切换分辨率。
aspect_ratio — 宽高比
控制生成图片的宽高比。不传时由模型自动决定(通常为 1:1)。
支持以下宽高比:
1:1、3:2、2:3、3:4、4:3、4:5、5:4、9:16、16:9、21:9、1:4、4:1、1:8、8:1
通用请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model |
string | 是 | 图片模型 ID |
messages |
array | 是 | 对话消息数组,遵循 OpenAI Chat Completions 格式 |
max_tokens |
integer | 建议 | 映射到 Gemini 原生的 maxOutputTokens,建议设为 4096 |
image_size |
string | 否 | 分辨率,见上表 |
aspect_ratio |
string | 否 | 宽高比,见上表 |
temperature |
number | 否 | 生成温度 |
top_p |
number | 否 | 核采样概率 |
top_k |
integer | 否 | Top-K 采样 |
stream |
boolean | 否 | 伪流式,图片生成完毕后一次性返回 |
参考图输入
如果你需要传参考图,可以使用 OpenAI 风格的多模态 messages.content:
{
"model": "gemini-3.1-flash-image-preview",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "参考这张图的构图,画一只坐在窗边的猫"},
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,iVBORw0KGgoAAA..."
}
}
]
}
],
"max_tokens": 4096,
"image_size": "2K"
}注意:
- 支持
data:URI(base64)和https://公网 URL 两种格式 - 公网 URL 会由网关自动下载并转换为 Gemini 原生图片输入(30 秒超时)
- 推荐使用 base64 格式:部分 CDN(如阿里云)可能存在防盗链或格式转换问题,base64 最稳定
返回结果说明
图片模型的响应包含两个字段:content(字符串)和 images(数组)。
纯文本响应
如果模型只返回文字(没有生成图片),响应与普通文本模型一致:
{
"choices": [{
"message": {
"role": "assistant",
"content": "这是模型的文字回复"
}
}]
}含图片的响应
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"model": "gemini-3.1-flash-image-preview",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "这是为你生成的图片:\n\n",
"images": [
{
"type": "image_url",
"index": 0,
"image_url": {
"url": "data:image/jpeg;base64,/9j/4AAQ...",
"detail": "auto"
}
}
]
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 123,
"completion_tokens": 456,
"total_tokens": 579
}
}两个字段的作用:
| 字段 | 类型 | 说明 |
|---|---|---|
content |
string | Markdown 格式,文字和图片混排(),符合 OpenAI spec |
images |
array | 结构化的图片数据,方便程序提取。纯文本响应不含此字段 |
content始终是字符串,适合直接展示给用户- 如需程序化处理图片(保存、转发等),请使用
images字段 - 图片格式通常为 JPEG(
data:image/jpeg;base64,...),实际取决于模型返回的 MIME 类型 usage字段仍然会返回,便于你在控制台和响应结果中核对消耗
限制与注意事项
- 仅支持
/v1/chat/completions:Gemini 图片模型不支持/v1/messages(Anthropic 格式) - 流式模式为伪流式:支持
stream: true,但图片会在生成完毕后一次性以 SSE 事件返回(非逐 token 流式),等待期间每 10 秒会收到 keepalive 心跳 - 图片通过
images字段返回:content始终是字符串。如需程序化处理图片,请使用message.images字段,不要解析content中的 markdown - 模型权限:请确认你的 API Key 有权访问对应图片模型
- 超时与连接保活:4K 图片生成可能需要 2-3 分钟。强烈建议 4K 请求使用
"stream": true——网关会每 10 秒发送 keepalive 心跳,防止中间网络设备(NAT/防火墙/代理)因 TCP 空闲而断开连接。同时将客户端 HTTP 超时设置为 ≥ 600 秒 image_size大小写:必须使用大写 K("2K"、"4K"),小写"2k"会被拒绝;512 不带 K 后缀- 分辨率选择方式区别:
gemini-3.1-flash-image-preview:通过image_size参数指定("512"/"1K"/"2K"/"4K")gemini-3-pro-image-preview:通过模型名后缀指定(-2k/-4k),或使用基础模型名默认 1K