Gemini الأصلي
بث توليد المحتوى
يقوم ببث توليد المحتوى باستخدام تنسيق Google Gemini API
نسخة SSE من Gemini generateContent. قد تحتوي الأحداث على بيانات وصفية فقط أو محتوى وسيط دون finishReason. ينتهي البث عند EOF ولا يضيف علامة [DONE].
معلمات المسار
اسم النموذج (على سبيل المثال، gemini-2.5-pro، gemini-3.5-flash).
معلمات الاستعلام
مفتاح API (بديل للمصادقة عبر الترويسة).
جسم الطلب
نفس توليد المحتوى.
يعتمد دعم generationConfig.candidateCount والأدوات وأنواع الوسائط والحقول الاختيارية الأخرى على النموذج المحدد.
الاستجابة
يُرجع دفقاً من كائنات JSON، يحتوي كل منها على استجابة جزئية.
الطلب
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);مثال على إدخال الرؤية
تستخدم طلبات الرؤية المتدفقة نفس بنية contents[].parts[] مثل نقطة النهاية غير المتدفقة.
{
"contents": [
{
"role": "user",
"parts": [
{ "text": "Please describe this image." },
{
"inline_data": {
"mime_type": "image/jpeg",
"data": "/9j/4AAQSkZJRgABAQ..."
}
}
]
}
]
}الاستجابة
{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{"text": "Once upon a time"}
]
}
}
]
}التفويض
BearerAuth مصادقة مفتاح API. قم بإنشاء أو إدارة مفاتيح API في Dashboard > API > API Keys.
الموضع: header
معاملات المسار
اسم النموذج (مثال: gemini-2.5-pro)
معاملات الاستعلام
مفتاح API (بديل لمصادقة الرأس)
الترويسات
سياسة التسليم لكل طلب. تتجاوز إعدادات API key و Workspace الافتراضية. يحاول النظام تلقائياً استخدام TokenLab Verified أولاً، وقد ينتقل مرة واحدة إلى Official فقط قبل المخرجات، أو قبول الطلب، أو إنشاء مورد دائم.
القيم المتاحة
- "auto"
- "verified"
- "official"
جسم الطلب
application/json
طلب Gemini GenerateContent الأصلي. يتم قبول والحفاظ على كل من أسماء ProtoJSON بصيغة lowerCamelCase وأسماء proto الأصلية بصيغة snake_case، بما في ذلك الطلبات المختلطة. إذا كان كلا تهجئتي الحقل موجودتين، فإن TokenLab لا تقوم بدمجهما أو اختيار أولوية محلية. يتم إعادة توجيه الحقول غير المعروفة على أساس بذل أفضل جهد.
الاستجابة
text/event-stream
application/json
application/json
application/json
application/json
application/json