Gemini 原生

生成内容

使用 Google Gemini API 格式生成内容

POST
/v1beta/models/{model}:generateContent

使用 Gemini Models API 返回的模型,以 Gemini 请求和响应格式调用。支持 ProtoJSON lowerCamelCase 和对应的 proto snake_case 字段名;可选字段和取值以所选模型为准。

路径参数

modelstringpath必填

模型名称(例如:gemini-2.5-pro,gemini-3.5-flash)。

查询参数

keystringquery

API 密钥(可替代请求头身份验证)。

身份验证

Gemini 端点支持多种身份验证方法:

  • ?key=YOUR_API_KEY 查询参数
  • x-goog-api-key: YOUR_API_KEY 请求头
  • Authorization: Bearer YOUR_API_KEY 请求头

请求体

contentsarray必填

对话内容,包含 parts 和可选的 role。媒体字段使用 inlineData / inline_data 或 fileData / file_data。TokenLab 创建的 Files 和 Cache ID 只能在所属工作区使用。

systemInstructionobject

模型的系统指令。

generationConfigobject

生成设置包括 temperature、topP、topK、maxOutputTokens、stopSequences、candidateCount、responseModalities、responseMimeType、responseSchema 和 thinkingConfig,也支持对应的 snake_case 名称。取值范围与组合以所选模型为准。

safetySettingsarray

安全过滤设置。

上面列出的每个 lowerCamelCase 字段也可以使用官方 proto snake_case 写法,例如 system_instruction、generation_config、safety_settings、tool_config、cached_content、file_data.file_uri 和 inline_data.mime_type。

支持的方法

Gemini 兼容 API 包含模型列表/获取、generateContent、streamGenerateContent、countTokens、embedContent 和 batchEmbedContents。Gemini Interactions 和 Live 不可用。

响应

candidatesarray

生成的候选内容。

usageMetadataobject

Token 使用信息。

请求

curl -X POST "https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:generateContent?key=sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "parts": [{"text": "Hello, Gemini!"}]
      }
    ],
    "generationConfig": {
      "temperature": 0.7,
      "maxOutputTokens": 1024
    }
  }'

多模态输入示例

对于 Gemini 多模态请求,请把媒体放进 contents[].parts[],可以使用内联字节或基于 URL 的文件引用。

公开 Gemini 请求格式支持的媒体类型:

  • 图片
  • 音频
  • 视频

内联媒体使用 inlineData 或 inline_data,并传入 Base64 编码的文件字节。

URL 媒体使用 fileData 或 file_data,并传入可公开访问的 https URL。

视频输入示例

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Please describe this video." },
        {
          "fileData": {
            "mimeType": "video/mp4",
            "fileUri": "https://example.com/demo.mp4"
          }
        }
      ]
    }
  ]
}

音频输入示例

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Please describe this audio." },
        {
          "fileData": {
            "mimeType": "audio/mpeg",
            "fileUri": "https://example.com/demo.mp3"
          }
        }
      ]
    }
  ]
}

图片输入示例

使用内联图片字节:

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Please describe this image." },
        {
          "inlineData": {
            "mimeType": "image/jpeg",
            "data": "/9j/4AAQSkZJRgABAQ..."
          }
        }
      ]
    }
  ]
}

使用图片 URL:

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Please describe this image." },
        {
          "fileData": {
            "mimeType": "image/jpeg",
            "fileUri": "https://example.com/demo.jpg"
          }
        }
      ]
    }
  ]
}

音频输入示例

使用音频 URL:

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Transcribe and summarize this audio." },
        {
          "file_data": {
            "mime_type": "audio/mpeg",
            "file_uri": "https://example.com/sample.mp3"
          }
        }
      ]
    }
  ]
}

视频输入示例

使用视频 URL:

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Describe this video briefly." },
        {
          "fileData": {
            "mimeType": "video/mp4",
            "fileUri": "https://example.com/sample.mp4"
          }
        }
      ]
    }
  ]
}

响应

Response
{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {"text": "Hello! How can I assist you today?"}
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {"category": "HARM_CATEGORY_HARASSMENT", "probability": "NEGLIGIBLE"}
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 5,
    "candidatesTokenCount": 10,
    "totalTokenCount": 15
  }
}

关联接口

调用另一种接口前先读取所选模型的当前详情;可用性与请求字段取决于模型。

HTTPAPI
POST/v1beta/models/{model}:countTokens
POST/v1beta/models/{model}:embedContent
POST/v1beta/models/{model}:batchEmbedContents

Token 计数需要 API 密钥且不收费。返回的输入数量用于请求规划;实际费用以最终响应 usage 和账单记录为准。

countTokens: contents / generateContentRequest

embedContent: content, taskType, title, outputDimensionality

batchEmbedContents: requests

授权

BearerAuth
AuthorizationBearer <token>

API Key 身份验证。在 Dashboard > API > API Keys 中创建或管理 API Key。

位置: header

路径参数

model*string

模型名称 (例如 gemini-2.5-pro)

查询参数

key?string

API 密钥 (请求头身份验证的替代方案)

请求头

X-TokenLab-Delivery-Policy?string

单次请求的交付策略。覆盖 API 密钥和 Workspace 的默认设置。自动优先尝试 TokenLab Verified,并在输出、请求接受或持久资源创建之前,可能会切换一次至仅限 Official。

可选值

  • "auto"
  • "verified"
  • "official"

请求体

application/json

原生的 Gemini GenerateContent 请求。ProtoJSON 的 lowerCamelCase 和原始 proto 的 snake_case 名称均被接受并保留,包括混合请求。如果一个字段的两种拼写方式同时存在,TokenLab 不会合并它们或选择本地优先级。未知字段将尽力转发。

响应

application/json

application/json

application/json

application/json

application/json

application/json