Skip to content

图片生成(Nano-banana2)

POST  v1/chat/completions

Gemini 也提供了图像生成能力,作为一种替代方案。与 Imagen 3.0 相比,Gemini 的图像生成更适合于需要上下文理解和推理的场景,而非追求极致的艺术表现和视觉质量。

更高的视觉质量 → 相比 exp 版,图像更锐利、更丰富、更清晰。

更准确的文本呈现 → 生成的视觉中,文本更加精准、干净、易读。

显著减少过滤拦截 → 得益于更智能、宽松的过滤机制,创作时几乎不再被打断。

说明:

模型 id:gemini-2.0-flash-preview-image-generation

费率(输入→输出):

0.1→0.1→0.4/M tokens

需要新增参数来体验新特性 "modalities":["text","image"]

图片以 Base64 编码形式传递与输出

作为实验模型,建议明确指出 “输出图片”,否则可能只有文本

输出图片的默认高度为 1024px

python 调用需要最新的 openai sdk 支持,请先运行 pip install -U openai

了解更多请访问 Gemini 官方文档

请求参数

Authorization

在 Header 添加参数 Authorization,其值为在 Bearer 之后拼接 Token。

Authorization: Bearer ******************

Header 参数

参数类型必填说明示例
Content-Typestring可选请求体的数据格式类型application/json
Acceptstring可选客户端期望接收的响应数据格式application/json

Body 参数

Content-Type: application/json

参数名类型必填说明
modelstring必需模型 ID。要使用的模型(如 gpt-3.5-turbo, gpt-4 等)。
messagesarray [object]必需聊天记录。包含对话历史的对象数组。
├─ rolestring可选角色类型,通常为 user(用户)、assistant(助手)或 system(系统)。
└─ contentstring可选具体的文本内容。
streamboolean必需流式输出。如果设置为 true,模型响应将通过服务器发送事件(SSE)流式传输。
extra_bodyobject必需扩展的请求体对象(通常用于传递特定平台的额外参数)。
googleobject必需针对 Google 模型或平台的特定配置对象。
temperaturenumber可选采样温度 (0-2)。值越高(如0.8)输出越随机,值越低(如0.2)输出越集中确定。建议只调整此参数或 top_p 其中之一。
top_pnumber可选核采样。例如 0.1 意味着只考虑概率质量前 10% 的 token。
ninteger可选生成数量。为每个输入消息生成多少个聊天补全选择。保持 n=1 可最大限度降低成本。
stopstring可选停止序列。API 遇到这些序列时将停止生成更多标记(最多支持 4 个)。注:最新的推理模型和 .o3、o4-mini 不支持此参数。
max_completion_tokensinteger可选最大生成长度。补全中可以生成的最大 token 数(包含可见输出和推理 token)。
presence_penaltynumber可选存在惩罚 (-2.0 到 2.0)。正值会根据新标记是否已出现来惩罚它们,增加模型讨论新话题的可能性。
frequency_penaltynumber可选频率惩罚 (-2.0 到 2.0)。正值会根据新标记的现有频率来惩罚它们,降低模型逐字重复同一行的可能性。
logit_biasstring可选对数偏差。通过 JSON 对象修改特定标记出现的概率(映射 token ID 到 -100 到 100 的偏差值)。
userstring可选用户标识。代表最终用户的唯一 ID,用于帮助 OpenAI 监控和检测滥用行为。

请求示例 (JSON)

{
    "model": "gemini-3-pro-image-preview",
    "stream": true,
    "messages": [
        {
            "role": "user",
            "content": "Generate an infographic of the current weather in Tokyo."
        }
    ],
    "extra_body": {
        "google": {
            "image_config": {
                "aspect_ratio": "16:9",
                "image_size": "2K"
            }
        }
    }
}

返回响应

200 成功

Content-Type: application/json

响应参数

参数类型必填说明
idstring必需聊天补全对象的唯一标识符。
objectstring必需对象类型,通常为 "chat.completion"。
createdinteger必需补全创建时的 Unix 时间戳(秒)。
modelstring必需用于生成此补全的模型。
choicesarray [object]必需模型生成的补全列表。
└─indexinteger可选此补全在其列表中的索引。
└─messageobject可选包含模型生成的响应消息的对象。
└─logprobsnull可选如果请求中设置了 logprobs,则包含标记的对数概率。
└─finish_reasonstring可选模型停止生成补全的原因。可能是 "stop"、"length" 或 "tool_calls"。
usageobject必需此补全请求使用的令牌统计信息。
└─prompt_tokensinteger必需提示中使用的令牌数量。
└─completion_tokensinteger必需补全中生成的令牌数量。
└─total_tokensinteger必需使用的总令牌数(提示 + 补全)。

响应示例

{
    "id": "chatcmpl-123",
    "object": "chat.completion",
    "created": 1677652288,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "\n\nHello there, how may I assist you today?"
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 12,
        "total_tokens": 21
    }
}

示例代码

python
import http.client
import json

conn = http.client.HTTPSConnection("nxaiapp.com")
payload = json.dumps({
   "model": "gemini-3-pro-image-preview",
   "stream": True,
   "messages": [
      {
         "role": "user",
         "content": "Generate an infographic of the current weather in Tokyo."
      }
   ],
   "extra_body": {
      "google": {
         "image_config": {
            "aspect_ratio": "16:9",
            "image_size": "2K"
         }
      }
   }
})
headers = {
   'Accept': 'application/json',
   'Authorization': 'Bearer <token>',
   'Content-Type': 'application/json'
}
conn.request("POST", "/v1/chat/completions", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))