图片生成(Nano-banana2)
POST v1/chat/completionsGemini 也提供了图像生成能力,作为一种替代方案。与 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-Type | string | 可选 | 请求体的数据格式类型 | application/json |
| Accept | string | 可选 | 客户端期望接收的响应数据格式 | application/json |
Body 参数
Content-Type: application/json
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | 必需 | 模型 ID。要使用的模型(如 gpt-3.5-turbo, gpt-4 等)。 |
| messages | array [object] | 必需 | 聊天记录。包含对话历史的对象数组。 |
| ├─ role | string | 可选 | 角色类型,通常为 user(用户)、assistant(助手)或 system(系统)。 |
| └─ content | string | 可选 | 具体的文本内容。 |
| stream | boolean | 必需 | 流式输出。如果设置为 true,模型响应将通过服务器发送事件(SSE)流式传输。 |
| extra_body | object | 必需 | 扩展的请求体对象(通常用于传递特定平台的额外参数)。 |
| object | 必需 | 针对 Google 模型或平台的特定配置对象。 | |
| temperature | number | 可选 | 采样温度 (0-2)。值越高(如0.8)输出越随机,值越低(如0.2)输出越集中确定。建议只调整此参数或 top_p 其中之一。 |
| top_p | number | 可选 | 核采样。例如 0.1 意味着只考虑概率质量前 10% 的 token。 |
| n | integer | 可选 | 生成数量。为每个输入消息生成多少个聊天补全选择。保持 n=1 可最大限度降低成本。 |
| stop | string | 可选 | 停止序列。API 遇到这些序列时将停止生成更多标记(最多支持 4 个)。注:最新的推理模型和 .o3、o4-mini 不支持此参数。 |
| max_completion_tokens | integer | 可选 | 最大生成长度。补全中可以生成的最大 token 数(包含可见输出和推理 token)。 |
| presence_penalty | number | 可选 | 存在惩罚 (-2.0 到 2.0)。正值会根据新标记是否已出现来惩罚它们,增加模型讨论新话题的可能性。 |
| frequency_penalty | number | 可选 | 频率惩罚 (-2.0 到 2.0)。正值会根据新标记的现有频率来惩罚它们,降低模型逐字重复同一行的可能性。 |
| logit_bias | string | 可选 | 对数偏差。通过 JSON 对象修改特定标记出现的概率(映射 token ID 到 -100 到 100 的偏差值)。 |
| user | string | 可选 | 用户标识。代表最终用户的唯一 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
响应参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 必需 | 聊天补全对象的唯一标识符。 |
| object | string | 必需 | 对象类型,通常为 "chat.completion"。 |
| created | integer | 必需 | 补全创建时的 Unix 时间戳(秒)。 |
| model | string | 必需 | 用于生成此补全的模型。 |
| choices | array [object] | 必需 | 模型生成的补全列表。 |
| └─index | integer | 可选 | 此补全在其列表中的索引。 |
| └─message | object | 可选 | 包含模型生成的响应消息的对象。 |
| └─logprobs | null | 可选 | 如果请求中设置了 logprobs,则包含标记的对数概率。 |
| └─finish_reason | string | 可选 | 模型停止生成补全的原因。可能是 "stop"、"length" 或 "tool_calls"。 |
| usage | object | 必需 | 此补全请求使用的令牌统计信息。 |
| └─prompt_tokens | integer | 必需 | 提示中使用的令牌数量。 |
| └─completion_tokens | integer | 必需 | 补全中生成的令牌数量。 |
| └─total_tokens | integer | 必需 | 使用的总令牌数(提示 + 补全)。 |
响应示例
{
"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"))