TokenLab

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 key(標頭驗證的替代方案)。

驗證

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

安全過濾器設定。

回應

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": "請描述這張圖片。" },
        {
          "inlineData": {
            "mimeType": "image/jpeg",
            "data": "/9j/4AAQSkZJRgABAQ..."
          }
        }
      ]
    }
  ]
}

使用圖片 URL:

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "請描述這張圖片。" },
        {
          "fileData": {
            "mimeType": "image/jpeg",
            "fileUri": "https://example.com/demo.jpg"
          }
        }
      ]
    }
  ]
}

音訊輸入範例

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "請轉寫並摘要這段音訊。" },
        {
          "file_data": {
            "mime_type": "audio/mpeg",
            "file_uri": "https://example.com/sample.mp3"
          }
        }
      ]
    }
  ]
}

影片輸入範例

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "請簡要描述這段影片。" },
        {
          "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
  }
}

影片輸入範例

{
  "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"
          }
        }
      ]
    }
  ]
}

授權

BearerAuth
AuthorizationBearer <token>

API Key 驗證。請在 Dashboard > API > API Keys 建立或管理 API 金鑰。

位置: header

路徑參數

model*string

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

查詢參數

key?string

API 金鑰 (標頭驗證的替代方案)

請求標頭

X-TokenLab-Delivery-Policy?string

單次請求傳遞策略。會覆寫 API key 與 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