跳到主要内容

Generate Content

Google Gemini 原生内容生成接口,支持文本、图片、音频、视频多模态输入。

POST /v1beta/models/{model}:generateContent

请求示例

curl https://gw.opentoken.io/v1beta/models/gemini-3.1-flash-image:generateContent \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPEN_TOKEN_KEY" \
-d '{
"contents": [{"parts": [{"text": "什么是机器学习?用简单的话解释。"}]}],
"generationConfig": {"temperature": 0.7, "maxOutputTokens": 10000}
}'

请求参数

参数类型必填描述
contentsarray对话内容列表;模型名不写在请求体中,而是写在 URL 的 {model} 位置。
contents[].rolestring内容角色,用户输入通常为 user
contents[].partsarray内容片段,可包含 textinlineDatafileData 等对象。
contents[].parts[].inlineDataobject内联媒体数据,格式为 {"mimeType":"image/png","data":"<BASE64>"}
generationConfigobject生成配置,可设置 temperaturetopPtopKmaxOutputTokens 等。
generationConfig.responseModalitiesarray图片生成时建议显式填写期望的输出类型。本页图片生成示例使用 ["TEXT", "IMAGE"],具体可用模态以所选模型能力为准。
generationConfig.imageConfigobject图片输出配置,仅对支持图片生成的模型有效。
generationConfig.imageConfig.aspectRatiostring请求的图片比例,例如 16:9;可用值以当前模型能力为准。
generationConfig.imageConfig.imageSizestring请求的图片尺寸档位,例如 1K2K4K;可用值以当前模型能力为准。
safetySettingsarray安全过滤设置
toolsarray工具/函数调用定义

gemini-3.1-flash-image 图像理解

curl https://gw.opentoken.io/v1beta/models/gemini-3.1-flash-image:generateContent \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPEN_TOKEN_KEY" \
-d '{
"contents": [
{
"parts": [
{
"text": "描述这张图片中的内容。"
},
{
"inlineData": {
"mimeType": "image/jpeg",
"data": "<BASE64_IMAGE_DATA>"
}
}
]
}
],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 10000
}
}'

<BASE64_IMAGE_DATA> 替换为图片文件的 Base64 编码内容。

例如 macOS 下可以执行:

base64 -i ~/Downloads/original.jpeg | tr -d '\n'

然后将输出结果复制到 data 字段中。

注意:

  1. data 字段只填写纯 Base64 内容;
  2. 不要包含 data:image/jpeg;base64, 前缀;
  3. 不要填写图片路径,例如 /Users/xxx/original.jpeg
  4. 不要保留示例里的省略号 ...
  5. mimeType 需要和图片真实格式一致,例如 image/jpegimage/png

gemini-3.1-flash-image-preview 文本生成图片

curl "https://gw.opentoken.io/v1beta/models/gemini-3.1-flash-image-preview:generateContent" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPEN_TOKEN_KEY" \
-d '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "生成一张未来感城市夜景海报,蓝紫色霓虹灯光,电影感构图。"
}
]
}
],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": {
"aspectRatio": "16:9",
"imageSize": "2K"
}
}
}'

gemini-3.1-flash-image-preview 参考图编辑

curl "https://gw.opentoken.io/v1beta/models/gemini-3.1-flash-image-preview:generateContent" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPEN_TOKEN_KEY" \
-d '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "保留参考图中的主体和构图,将背景改为蓝紫色霓虹城市夜景。"
},
{
"inlineData": {
"mimeType": "image/jpeg",
"data": "<BASE64_REFERENCE_IMAGE>"
}
}
]
}
],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": {
"aspectRatio": "16:9",
"imageSize": "2K"
}
}
}'

gemini-3-pro-image-preview 文本生成图片

curl "https://gw.opentoken.io/v1beta/models/gemini-3-pro-image-preview:generateContent" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPEN_TOKEN_KEY" \
-d '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "生成一张高细节商业海报,玻璃质感香水瓶,棚拍灯光,黑色背景。"
}
]
}
],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": {
"aspectRatio": "16:9",
"imageSize": "4K"
}
}
}'

gemini-3-pro-image-preview 参考图编辑

curl "https://gw.opentoken.io/v1beta/models/gemini-3-pro-image-preview:generateContent" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPEN_TOKEN_KEY" \
-d '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "保留参考图中的产品外形和标签,将场景改为黑色高级感棚拍背景,增加轮廓光。"
},
{
"inlineData": {
"mimeType": "image/jpeg",
"data": "<BASE64_REFERENCE_IMAGE>"
}
}
]
}
],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": {
"aspectRatio": "16:9",
"imageSize": "4K"
}
}
}'

imageSize 是 Gemini 原生接口的图片尺寸档位。示例中 gemini-3.1-flash-image-preview 使用 2Kgemini-3-pro-image-preview 使用 4K

响应结构

文本响应

{
"candidates": [{
"content": {
"parts": [{"text": "机器学习是人工智能的一个分支..."}],
"role": "model"
},
"finishReason": "STOP"
}],
"usageMetadata": {
"promptTokenCount": 10,
"candidatesTokenCount": 25,
"totalTokenCount": 35
}
}

Gemini 图片模型响应

gemini-3.1-flash-image-previewgemini-3-pro-image-preview 均按下面的 Gemini 原生结构返回。parts 是一个数组,可能包含文本、图片,或同时包含两者。图片通常位于 candidates[].content.parts[].inlineData

{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"inlineData": {
"mimeType": "image/jpeg",
"data": "<BASE64_GENERATED_IMAGE>"
}
}
]
},
"finishReason": "STOP"
}
]
}

响应可能只有图片,也可能包含文本。不要假设 parts[0] 的类型或顺序,应遍历 parts,分别检查 textinlineData。图片格式以 inlineData.mimeType 为参考;如需严格校验,应在 Base64 解码后检查文件头。

结果校验与排错

HTTP 200 只表示这次 HTTP 调用成功返回,不能单独证明每个请求字段都已生效,也不能代替对生成结果的检查。图片生成请求完成后至少检查:

  1. candidates 是否存在且非空;
  2. candidates[].content.parts[] 中是否存在 inlineData.data
  3. inlineData.mimeType 是否为预期的图片类型;
  4. finishReasonpromptFeedback 和安全拦截信息是否异常;
  5. Base64 解码后的图片像素尺寸是否符合预期。

如果响应中只有 text、没有 inlineData,优先检查模型是否支持图片输出,以及 responseModalitiesimageConfig 是否使用了本页规定的 camelCase 写法。如果参考图未生效,同时检查 inlineData.data 是否为完整 Base64,且 mimeType 是否与图片真实格式一致。

Copyright © 2026 OpenToken.