الانتقال إلى المحتوى الرئيسي
يدعم TokenLab تنسيق Google Gemini API الأصلي لنماذج Gemini. يتيح ذلك التوافق المباشر مع Google AI SDKs.

معلمات المسار

model
string
مطلوب
اسم النموذج (على سبيل المثال، gemini-2.5-pro، gemini-3.5-flash).للتكاملات الإنتاجية، فضّل أجزاء الوسائط المعتمدة على URL من fileData / file_data مع عنوان URL عام يبدأ بـ https. سيوجه TokenLab القنوات الأصلية المدعومة من Gemini عبر المسار الأصلي عندما يكون ذلك ممكنًا، وسيتراجع تلقائيًا إلى مسار التحويل الداخلي المتوافق عندما لا يتوفر مسار جاهز أصليًا لذلك الطلب متعدد الوسائط.

معلمات الاستعلام

key
string
مفتاح API (بديل للمصادقة عبر الترويسة).

المصادقة

تدعم نقاط نهاية Gemini طرق مصادقة متعددة:
  • ?key=YOUR_API_KEY معلمة استعلام
  • x-goog-api-key: YOUR_API_KEY ترويسة
  • Authorization: Bearer YOUR_API_KEY ترويسة

جسم الطلب

contents
array
مطلوب
محتويات المحادثة.يحتوي كل كائن محتوى على:
  • role (string): user أو model
  • parts (array): أجزاء المحتوى. يدعم TokenLab حالياً:
    • أجزاء نصية: { "text": "..." }
    • أجزاء وسائط مضمّنة: inlineData / inline_data
    • أجزاء ملفات معتمدة على URL: fileData / file_data
بالنسبة إلى أجزاء الوسائط، يقبل TokenLab حالياً أنواع MIME الخاصة بالصور والصوت والفيديو ويمررها عبر تفاصيل النموذج المتوافق مع Gemini.تتم مطابقة قيم الدور user وmodel بدون حساسية لحالة الأحرف. يتم قبول inlineData / inline_data مع application/octet-stream فقط عندما يستطيع TokenLab التعرف على بايتات صورة أو فيديو مدعومة؛ وإلا يفشل الطلب قبل التوجيه. في طلبات إخراج الصور الأصلية، تُقبل فقط عائلة أدوات Google search/maps، وتفشل تركيبات الأدوات غير المدعومة قبل إعادة المحاولة مع المزود.
systemInstruction
object
تعليمات النظام للنموذج.
generationConfig
object
تكوين الإنشاء:
  • temperature (number): درجة حرارة أخذ العينات
  • topP (number): احتمالية أخذ عينات النواة (Nucleus sampling)
  • topK (integer): أخذ عينات Top-K
  • maxOutputTokens (integer): الحد الأقصى لـ tokens المخرجات
  • stopSequences (array): تسلسلات التوقف
  • candidateCount (integer): عدد المرشحين للإنشاء غير المتدفق. يجب حذفها في طلبات البث أو إبقاؤها عند 1.
  • responseModalities (array): أنماط الإخراج المطلوبة للمسارات الأصلية المتوافقة.
  • responseMimeType (string): نوع MIME للإخراج، مثل text/plain أو application/json.
  • responseSchema (object): JSON schema للإخراج المنظم عندما يطلب responseMimeType JSON.
  • thinkingConfig / thinking_config (object): خيارات ميزانية التفكير للنماذج المتوافقة.
safetySettings
array
إعدادات فلاتر الأمان.

الاستجابة

candidates
array
مرشحو المحتوى الذي تم إنشاؤه.
usageMetadata
object
معلومات استخدام الـ 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
    }
  }'
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("Hello, Gemini!")

print(response.text)
import { GoogleGenerativeAI } from "@google/generative-ai";

const genAI = new GoogleGenerativeAI("sk-your-api-key", {
  baseUrl: "https://api.tokenlab.sh"
});

const model = genAI.getGenerativeModel({ model: "gemini-2.5-pro" });
const result = await model.generateContent("Hello, Gemini!");

console.log(result.response.text());
package main

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

func main() {
    payload := map[string]interface{}{
        "contents": []map[string]interface{}{
            {
                "parts": []map[string]string{
                    {"text": "Hello, Gemini!"},
                },
            },
        },
        "generationConfig": map[string]interface{}{
            "temperature":    0.7,
            "maxOutputTokens": 1024,
        },
    }

    jsonData, _ := json.Marshal(payload)
    req, _ := http.NewRequest("POST",
        "https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:generateContent?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()

    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
}
<?php
$payload = [
    'contents' => [
        [
            'parts' => [
                ['text' => 'Hello, Gemini!']
            ]
        ]
    ],
    'generationConfig' => [
        'temperature' => 0.7,
        'maxOutputTokens' => 1024
    ]
];

$ch = curl_init('https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:generateContent?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)
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
echo $data['candidates'][0]['content']['parts'][0]['text'];

أمثلة الإدخال متعدد الوسائط

في طلبات Gemini متعددة الوسائط، ضع الوسائط داخل contents[].parts[] باستخدام بايتات مضمّنة أو مراجع ملفات عبر URL. فئات الوسائط المدعومة حالياً في تفاصيل النموذج لـ Gemini:
  • صورة
  • صوت
  • فيديو
بالنسبة إلى الوسائط المضمّنة، استخدم inlineData أو inline_data ومرّر بايتات الملف بترميز Base64. بالنسبة إلى الوسائط عبر URL، استخدم fileData أو file_data ومرّر عنوان https عاماً يمكن الوصول إليه.

مثال إدخال صورة

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "يرجى وصف هذه الصورة." },
        {
          "inlineData": {
            "mimeType": "image/jpeg",
            "data": "/9j/4AAQSkZJRgABAQ..."
          }
        }
      ]
    }
  ]
}

مثال إدخال صوت

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