跳到主要内容

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是内容片段,可包含 text、inlineData、fileData 等对象。
contents[].parts[].inlineDataobject否内联媒体数据,格式为 {"mimeType":"image/png","data":"<BASE64>"}。
generationConfigobject否生成配置,可设置 temperature、topP、topK、maxOutputTokens 等。
generationConfig.responseModalitiesarray图片生成时建议显式填写期望的输出类型。本页图片生成示例使用 ["TEXT", "IMAGE"],具体可用模态以所选模型能力为准。
generationConfig.imageConfigobject否图片输出配置,仅对支持图片生成的模型有效。
generationConfig.imageConfig.aspectRatiostring否请求的图片比例,例如 16:9;可用值以当前模型能力为准。
generationConfig.imageConfig.imageSizestring否请求的图片尺寸档位,例如 1K、2K 或 4K;可用值以当前模型能力为准。
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/jpeg、image/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 使用 2K,gemini-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-preview 和 gemini-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,分别检查 text 和 inlineData。图片格式以 inlineData.mimeType 为参考;如需严格校验,应在 Base64 解码后检查文件头。

结果校验与排错​

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

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

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

Copyright © 2026 OpenToken.