TokenLab

Gemini natif

Génération de contenu en streaming

Génère du contenu en streaming en utilisant le format de l'API Google Gemini

POST
/v1beta/models/{model}:streamGenerateContent

Version SSE de Gemini generateContent. Les événements peuvent contenir seulement des métadonnées ou du contenu intermédiaire sans finishReason. Le flux se termine à EOF sans ajouter de marqueur [DONE].

Paramètres de chemin

modelstringpathrequis

Nom du modèle (par ex., gemini-2.5-pro, gemini-3.5-flash).

Paramètres de requête

keystringquery

Clé API (alternative à l'authentification par en-tête).

Corps de la requête

Identique à Générer du contenu.

La prise en charge de generationConfig.candidateCount, des outils, des types de médias et des autres champs facultatifs dépend du modèle choisi.

Réponse

Retourne un flux d'objets JSON, chacun contenant une réponse partielle.

Requête

cURL
curl -N -X POST "https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:streamGenerateContent?key=sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "parts": [{"text": "Tell me a story"}]
      }
    ]
  }'
Python
import google.generativeai as genai

genai.configure(
    api_key="sk-your-api-key",
    transport="rest",
    client_options={"api_endpoint": "api.tokenlab.sh"}
)

model = genai.GenerativeModel("gemini-2.5-pro")
response = model.generate_content("Tell me a story", stream=True)

for chunk in response:
    for candidate in chunk.candidates:
        for part in candidate.content.parts:
            if part.text:
                print(part.text, end="")
JavaScript
const response = await fetch(
  'https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:streamGenerateContent?key=sk-your-api-key',
  {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      contents: [{ parts: [{ text: 'Tell me a story' }] }]
    })
  }
);

const reader = response.body.getReader();
const decoder = new TextDecoder();

while (true) {
  const { done, value } = await reader.read();
  if (done) break;
  console.log(decoder.decode(value, { stream: true }));
}
Go
package main

import (
    "bufio"
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    payload := map[string]interface{}{
        "contents": []map[string]interface{}{
            {"parts": []map[string]string{{"text": "Tell me a story"}}},
        },
    }

    jsonData, _ := json.Marshal(payload)
    req, _ := http.NewRequest("POST",
        "https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:streamGenerateContent?key=sk-your-api-key",
        bytes.NewBuffer(jsonData))
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, _ := client.Do(req)
    defer resp.Body.Close()

    scanner := bufio.NewScanner(resp.Body)
    for scanner.Scan() {
        fmt.Println(scanner.Text())
    }
}
PHP
<?php
$payload = [
    'contents' => [
        ['parts' => [['text' => 'Tell me a story']]]
    ]
];

$ch = curl_init('https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:streamGenerateContent?key=sk-your-api-key');

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode($payload),
    CURLOPT_WRITEFUNCTION => function($ch, $data) {
        echo $data;
        return strlen($data);
    }
]);

curl_exec($ch);
curl_close($ch);

Exemple d’entrée visuelle

Les requêtes de vision en streaming utilisent la même structure contents[].parts[] que le point de terminaison non streaming.

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

Réponse

Fragment de flux
{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {"text": "Once upon a time"}
        ]
      }
    }
  ]
}

Autorisation

BearerAuth
AuthorizationBearer <token>

Authentification par clé API. Créez ou gérez vos clés API dans Dashboard > API > API Keys.

Emplacement: header

Paramètres de chemin

model*string

Nom du modèle (par ex., gemini-2.5-pro)

Paramètres de requête

key?string

Clé API (alternative à l'authentification par en-tête)

En-têtes

X-TokenLab-Delivery-Policy?string

Politique de livraison par requête. Remplace les valeurs par défaut de la clé API et de l'espace de travail. Tente automatiquement TokenLab Verified en premier et peut basculer une fois vers Official uniquement avant la sortie, l'acceptation de la requête ou la création de ressource persistante.

Valeurs possibles

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

Corps de la requête

application/json

Requête native Gemini GenerateContent. Les noms ProtoJSON lowerCamelCase et proto snake_case originaux sont tous deux acceptés et préservés, y compris les requêtes mixtes. Si les deux orthographes d'un champ sont présentes, TokenLab ne les fusionne pas et ne choisit pas de priorité locale. Les champs inconnus sont transmis au mieux.

Réponse

text/event-stream

application/json

application/json

application/json

application/json

application/json