模型API服务指南
模型API调用指南
图片生成 API文档
gemini-2.5-flash-image

gemini-2.5-flash-image( nano banana )

本文介绍 gemini-2.5-flash-image 模型调用 API 的输入输出参数,供您使用接口时查阅字段含义。


以下只展示部分使用到的字段说明,Gemini API 详细字段见Gemini 官网文档 (opens in a new tab)

请求参数

请求体

字段名类型是否必须默认值描述
contentsarray必须-请求的内容,包含一个或多个部分。
contents.rolestring必须"user"内容的角色,此处固定为 "user"。
contents.partsarray必须-内容的具体部分。
contents.parts.textstring可选-提示词文本。
contents.parts.inlineDataobject可选-内联数据(如图像)。
contents.parts.inlineData.mimeTypestring可选-数据的 MIME 类型。
contents.parts.inlineData.datastring可选-Base64 编码的数据。
contents.parts.fileDataobject可选-文件数据,支持 snake_case: file_data。
contents.parts.fileData.mimeTypestring可选-文件的 MIME 类型。
contents.parts.fileData.fileUristring可选-文件的 URI。
generationConfigobject可选-生成配置。
generationConfig.responseModalitiesarray可选["TEXT", "IMAGE"]期望的响应形式,可以是文本或图像。

响应参数

字段名类型描述
candidatesarray返回的候选内容列表。
candidates.contentobject候选内容。
candidates.content.partsarray内容的具体部分,可能包含文本和图像数据。
candidates.content.parts.textstring模型返回的文本描述。
candidates.content.parts.inlineDataobject内联的图像数据。
candidates.content.parts.inlineData.datastringBase64 编码的图像数据。
candidates.content.parts.inlineData.mimeTypestring数据的 MIME 类型,例如 "image/png"。
candidates.content.rolestring内容的角色,此处为 "model"。
candidates.finishReasonstring生成结束的原因,例如 "STOP"。
usageMetadataobjecttoken 使用情况的元数据。
usageMetadata.candidatesTokenCountinteger候选内容消耗的 token 数。
usageMetadata.promptTokenCountinteger提示词消耗的 token 数。
usageMetadata.totalTokenCountinteger总共消耗的 token 数。
errorObject错误信息对象
error.codestring错误码
error.messagestring错误提示信息
error.paramstring请求 id

示例

Gemini 兼容接口

我们兼容gemini的 {xxx}/v1beat/models接口,您可以直接使用官方SDK调用,例如 python-genai (opens in a new tab)

POST https://api.modelverse.cn/v1beta/models/gemini-2.5-flash-image:generateContent

图片生成(文本转图片)

⚠️ 注意:您必须在配置中添加 responseModalities: ["TEXT", "IMAGE"]。这些模型不支持仅图片输出。

** curl **
curl --location 'https://api.modelverse.cn/v1beta/models/gemini-2.5-flash-image:generateContent' \
--header "x-goog-api-key: $MODELVERSE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "contents": [
        {
            "role": "user",
            "parts": [
                {
                    "text": "Create a picture of a nano banana dish in a fancy restaurant with a Gemini theme"
                }
            ]
        }
    ],
    "generationConfig": {
        "responseModalities": [
            "TEXT",
            "IMAGE"
        ]
    }
}' | jq -r '.candidates[0].content.parts[1].inlineData.data' \
| base64 -d > modelverse_generated_image.png
** python **
from google import genai
from google.genai import types
from PIL import Image
from io import BytesIO
import os
 
 
client = genai.Client(
    api_key=os.getenv("Modelverse_API_KEY", "<UModelverse_API_KEY>"),  # 您的API_KEY
    http_options=types.HttpOptions(
        base_url="https://api.modelverse.cn"
    ),
)
 
contents = [
    {
        "text": "Create a picture of a nano banana dish in a fancy restaurant with a Gemini theme.",
    },
]
 
generation_config = types.GenerationConfig(
    response_modalities=["text", "image"],
)
 
response = client.models.generate_content(
    model="gemini-2.5-flash-image",
    contents=contents,
    config={
        "response_modalities": ["text", "image"],
    },
)
 
for part in response.candidates[0].content.parts:
    if part.text is not None:
        print(part.text)
    elif part.inline_data is not None:
        image = Image.open(BytesIO(part.inline_data.data))
        image.save("modelverse_generated_image.png")
)
 

图片编辑(文本和图片转图片)

** curl **
cat <<EOF | curl -X POST \
  --header "Authorization: Bearer ${MODELVERSE_API_KEY}" \
  --header "Content-Type: application/json" \
  --data @- \
  https://api.modelverse.cn/v1beta/models/gemini-2.5-flash-image:generateContent | jq -r '.candidates[0].content.parts[] | select(.inlineData) | .inlineData.data' | base64 --decode > modelverse_generated_image.png
{
  "contents": [
    {
      "role": "user",
      "parts": [
        {"text": "Convert this photo to black and white, in a cartoonish style."},
        {
          "inlineData": {
            "mimeType": "image/jpeg",
            "data": "$(curl -s https://umodelverse-inference.cn-wlcb.ufileos.com/ucloud-maxcot.jpg | base64 | tr -d '\n')"
          }
        }
      ]
    }
  ],
  "generationConfig": {
    "responseModalities": ["TEXT", "IMAGE"]
  }
}
EOF
** python **
from google import genai
from google.genai import types
from PIL import Image
from io import BytesIO
import os
 
client = genai.Client(
    api_key=os.getenv("Modelverse_API_KEY", "<UModelverse_API_KEY>"),  # 您的API_KEY
    http_options=types.HttpOptions(
        base_url="https://api.modelverse.cn"
    ),
)
 
response = client.models.generate_content(
    model="gemini-2.5-flash-image",
    contents=[
        types.Content(
            role="user",
            parts=[
                types.Part(
                    text="Convert this photo to black and white, in a cartoonish style."
                ),
                types.Part(
                    file_data=types.FileData(
                        mime_type="image/jpeg",
                        file_uri="https://umodelverse-inference.cn-wlcb.ufileos.com/ucloud-maxcot.jpg",
                    )
                ),
            ],
        )
    ],
    config=types.GenerateContentConfig(response_modalities=["TEXT", "IMAGE"]),
)
 
for part in response.candidates[0].content.parts:
    if part.text is not None:
        print(part.text)
    elif part.inline_data is not None:
        image = Image.open(BytesIO(part.inline_data.data))
        image.save("modelverse_generated_image.png")
 

响应示例

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": "That sounds incredibly unique! Here's a picture of a nano banana dish in a fancy restaurant with a Gemini theme:\n\n"
          },
          {
            "inlineData": {
              "data": "xxx",
              "mimeType": "image/png"
            }
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP"
    }
  ],
  "usageMetadata": {
    "candidatesTokenCount": 1315,
    "candidatesTokensDetails": [
      {
        "modality": "IMAGE",
        "tokenCount": 1290
      },
      {
        "modality": "TEXT",
        "tokenCount": 25
      }
    ],
    "promptTokenCount": 16,
    "promptTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 16
      }
    ],
    "totalTokenCount": 1331,
    "trafficType": "ON_DEMAND"
  }
}
{
  "error": {
    "message": "error_message",
    "type": "error_type",
    "param": "request_id",
    "code": "error_code"
  }
}
Copyright © 2025 沪ICP备12020087号-61