Gemini yerel
İçerik Oluşturma Akışı (Stream)
Google Gemini API formatını kullanarak içerik oluşturma akışı sağlar
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
Model adı (örneğin, gemini-2.5-pro, gemini-3.5-flash).
Sorgu Parametreleri
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 -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"}]
}
]
}'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="")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 }));
}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
$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
{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{"text": "Once upon a time"}
]
}
}
]
}Yetkilendirme
BearerAuth 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 adı (ör. gemini-2.5-pro)
Sorgu parametreleri
API anahtarı (başlık kimlik doğrulamasına alternatif)
Başlıklar
İ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