Gemini yerel

İçerik Oluşturma Akışı (Stream)

Google Gemini API formatını kullanarak içerik oluşturma akışı sağlar

POST
/v1beta/models/{model}:streamGenerateContent

Gemini generateContent işleminin SSE sürümü. Olaylar yalnızca metadata veya finishReason içermeyen ara içerik barındırabilir. Akış EOF ile sona erer ve [DONE] işareti eklenmez.

Yol Parametreleri

modelstringpathzorunlu

Model adı (örneğin, gemini-2.5-pro, gemini-3.5-flash).

Sorgu Parametreleri

keystringquery

API anahtarı (header kimlik doğrulamasına alternatif).

İstek Gövdesi

İçerik Oluşturma ile aynıdır.

generationConfig.candidateCount, araçlar, medya türleri ve diğer isteğe bağlı alanların desteği seçilen modele bağlıdır.

Yanıt

Her biri kısmi bir yanıt içeren bir JSON nesneleri akışı döndürür.

İstek

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);

Görsel Girdi Örneği

Akışlı vision istekleri, akış olmayan uç nokta ile aynı contents[].parts[] yapısını kullanır.

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

Yanıt

Akış Parçası
{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {"text": "Once upon a time"}
        ]
      }
    }
  ]
}

Yetkilendirme

BearerAuth
AuthorizationBearer <token>

API Anahtarı kimlik doğrulaması. API anahtarlarını Dashboard > API > API Keys bölümünden oluşturun veya yönetin.

Konum: header

Yol parametreleri

model*string

Model adı (ör. gemini-2.5-pro)

Sorgu parametreleri

key?string

API anahtarı (başlık kimlik doğrulamasına alternatif)

Başlıklar

X-TokenLab-Delivery-Policy?string

İstek bazlı Teslimat politikası. API anahtarı ve Çalışma Alanı varsayılanlarını geçersiz kılar. Otomatik olarak önce TokenLab Verified dener ve çıktı, istek kabulü veya kalıcı kaynak oluşturma öncesinde bir kez Official seçeneğine geçiş yapabilir.

Geçerli değerler

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

İstek gövdesi

application/json

Yerel Gemini GenerateContent isteği. ProtoJSON lowerCamelCase ve orijinal proto snake_case isimlerinin her ikisi de kabul edilir ve korunur; karma istekler dahil. Bir alanın her iki yazımı da mevcutsa, TokenLab bunları birleştirmez veya yerel bir öncelik belirlemez. Bilinmeyen alanlar en iyi çaba esasına göre iletilir.

Yanıt

text/event-stream

application/json

application/json

application/json

application/json

application/json