فهم الرموز المميّزة وعدّها

تعالج نماذج الذكاء الاصطناعي التوليدي، مثل Gemini، المدخلات والمخرجات بدقة تُعرف باسم الرمز المميز.

في نماذج Gemini، يعادل الرمز المميز الواحد 4 أحرف تقريبًا. ويعادل 100 رمز مميز حوالي 60 إلى 80 كلمة باللغة الإنجليزية.

لمحة عن الرموز المميّزة

يمكن أن تكون الرموز المميزة أحرفًا مفردة مثل z أو كلمات كاملة مثل cat. يتم تقسيم الكلمات الطويلة إلى عدة رموز مميزة. تُعرف مجموعة جميع الرموز المميّزة التي يستخدمها النموذج باسم "المفردات"، وتُعرف عملية تقسيم النص إلى رموز مميّزة باسم الترميز.

عند تفعيل الفوترة، يتم تحديد تكلفة طلب البيانات من Gemini API جزئيًا من خلال عدد الرموز المميزة للإدخال والإخراج، لذا قد يكون من المفيد معرفة كيفية عدّ الرموز المميزة.

يمكنك تجربة احتساب الرموز المميزة في Colab.

عرض على ai.google.dev تجربة ورقة ملاحظات Colab عرض ورقة الملاحظات على GitHub

عدد الرموز المميّزة

يتم تحويل جميع المدخلات والمخرجات من Gemini API إلى رموز مميزة، بما في ذلك النصوص وملفات الصور والوسائط الأخرى غير النصية.

يمكنك احتساب الرموز المميزة بالطرق التالية:

  • استدعاء count_tokens مع إدخال الطلب
    تعرض هذه الدالة إجمالي عدد الرموز المميّزة في البيانات المُدخَلة فقط. يمكنك إجراء هذا الطلب قبل إرسال الإدخال إلى النموذج للتحقّق من حجم طلباتك.

  • استخدِم السمة usage_metadata في العنصر response بعد استدعاء generate_content.
    تعرض هذه السمة إجمالي عدد الرموز المميزة في كلّ من الإدخال والإخراج: total_token_count.
    تعرض أيضًا عدد الرموز المميّزة للإدخال والإخراج بشكل منفصل: prompt_token_count (رموز الإدخال المميّزة) وcandidates_token_count (رموز الإخراج المميّزة).

    إذا كنت تستخدم نموذجًا مفكِّرًا، يتم عرض الرموز المميّزة المستخدَمة أثناء عملية التفكير في thoughts_token_count. وإذا كنت تستخدم ميزة التخزين المؤقت للسياق، سيظهر عدد الرموز المميّزة المخزّنة مؤقتًا في cached_content_token_count.

احتساب الرموز المميّزة للنص

إذا طلبت count_tokens باستخدام إدخال نصي فقط، سيعرض عدد الرموز المميزة للنص في الإدخال فقط (total_tokens). يمكنك إجراء هذا الطلب قبل طلب generate_content للتحقّق من حجم طلباتك.

هناك خيار آخر وهو الاتصال بـ generate_content ثم استخدام السمة usage_metadata في الكائن response للحصول على ما يلي:

  • عدد الرموز المميزة المنفصلة للإدخال (prompt_token_count) والمحتوى المخزّن مؤقتًا (cached_content_token_count) والناتج (candidates_token_count)
  • عدد الرموز المميّزة لعملية التفكير (thoughts_token_count)
  • إجمالي عدد الرموز المميزة في كل من الطلب والرد (total_token_count)

Python

from google import genai

client = genai.Client()
prompt = "The quick brown fox jumps over the lazy dog."

total_tokens = client.models.count_tokens(
    model="gemini-3.8-flash", contents=prompt
)
print("total_tokens: ", total_tokens)

response = client.models.generate_content(
    model="gemini-3.8-flash", contents=prompt
)

print(response.usage_metadata)

JavaScript

import { GoogleGenAI } from '@google/genai';

const ai = new GoogleGenAI({});
const prompt = "The quick brown fox jumps over the lazy dog.";

async function main() {
  const countTokensResponse = await ai.models.countTokens({
    model: "gemini-3.8-flash",
    contents: prompt,
  });
  console.log(countTokensResponse.totalTokens);

  const generateResponse = await ai.models.generateContent({
    model: "gemini-3.8-flash",
    contents: prompt,
  });
  console.log(generateResponse.usageMetadata);
}

await main();

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, nil)

// Convert prompt to a slice of *genai.Content using the helper.
contents := []*genai.Content{
  genai.NewContentFromText(prompt, genai.RoleUser),
}
countResp, err := client.Models.CountTokens(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
  return err
}
fmt.Println("total_tokens:", countResp.TotalTokens)

response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
  log.Fatal(err)
}
usageMetadata, err := json.MarshalIndent(response.UsageMetadata, "", "  ")
if err != nil {
  log.Fatal(err)
}
fmt.Println(string(usageMetadata))
    ```

احتساب الرموز المميّزة المتعدّدة الدورات (المحادثة)

إذا استدعيت count_tokens مع سجلّ المحادثات، ستعرض إجمالي عدد الرموز المميّزة للنص من كل دور في المحادثة (total_tokens).

هناك خيار آخر وهو الاتصال بـ send_message ثم استخدام السمة usage_metadata في الكائن response للحصول على ما يلي:

  • عدد الرموز المميّزة المنفصلة للإدخال (prompt_token_count) والمحتوى المخزّن مؤقتًا (cached_content_token_count) والناتج (candidates_token_count)
  • عدد الرموز المميّزة لعملية التفكير (thoughts_token_count)
  • إجمالي عدد الرموز المميّزة في كل من الطلب والرد (total_token_count)

لفهم حجم دورك التالي في المحادثة، عليك إضافته إلى السجلّ عند استدعاء count_tokens.

Python

from google import genai
from google.genai import types

client = genai.Client()

chat = client.chats.create(
    model="gemini-3.8-flash",
    history=[
        types.Content(
            role="user", parts=[types.Part(text="Hi my name is Bob")]
        ),
        types.Content(role="model", parts=[types.Part(text="Hi Bob!")]),
    ],
)

print(
    client.models.count_tokens(
        model="gemini-3.8-flash", contents=chat.get_history()
    )
)

response = chat.send_message(
    message="In one sentence, explain how a computer works to a young child."
)
print(response.usage_metadata)

extra = types.UserContent(
    parts=[
        types.Part(
            text="What is the meaning of life?",
        )
    ]
)
history = [*chat.get_history(), extra]
print(client.models.count_tokens(model="gemini-3.8-flash", contents=history))

JavaScript

import { GoogleGenAI } from '@google/genai';

const ai = new GoogleGenAI({});

async function main() {
  const history = [
    { role: "user", parts: [{ text: "Hi my name is Bob" }] },
    { role: "model", parts: [{ text: "Hi Bob!" }] },
  ];
  const chat = ai.chats.create({
    model: "gemini-3.8-flash",
    history: history,
  });

  const countTokensResponse = await ai.models.countTokens({
    model: "gemini-3.8-flash",
    contents: chat.getHistory(),
  });
  console.log(countTokensResponse.totalTokens);

  const chatResponse = await chat.sendMessage({
    message: "In one sentence, explain how a computer works to a young child.",
  });
  console.log(chatResponse.usageMetadata);

  const extraMessage = {
    role: "user",
    parts: [{ text: "What is the meaning of life?" }],
  };
  const combinedHistory = [...chat.getHistory(), extraMessage];
  const combinedCountTokensResponse = await ai.models.countTokens({
    model: "gemini-3.8-flash",
    contents: combinedHistory,
  });
  console.log(
    "Combined history token count:",
    combinedCountTokensResponse.totalTokens,
  );
}

await main();

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, nil)

history := []*genai.Content{
  {Role: genai.RoleUser, Parts: []*genai.Part({Text: "Hi my name is Bob"})},
  {Role: genai.RoleModel, Parts: []*genai.Part({Text: "Hi Bob!"})},
}
chat, err := client.Chats.Create(ctx, "gemini-3.8-flash", nil, history)
if err != nil {
  log.Fatal(err)
}

firstTokenResp, err := client.Models.CountTokens(ctx, "gemini-3.8-flash", chat.History(false), nil)
if err != nil {
  log.Fatal(err)
}
fmt.Println(firstTokenResp.TotalTokens)

resp, err := chat.SendMessage(ctx, genai.NewPartFromText("In one sentence, explain how a computer works to a young child."))
if err != nil {
  log.Fatal(err)
}
fmt.Printf("%#v\n", resp.UsageMetadata)

extra := genai.NewContentFromText("What is the meaning of life?", genai.RoleUser)
hist := chat.History(false)
hist = append(hist, extra)

secondTokenResp, err := client.Models.CountTokens(ctx, "gemini-3.8-flash", hist, nil)
if err != nil {
  log.Fatal(err)
}
fmt.Println(secondTokenResp.TotalTokens)

احتساب الرموز المميّزة المتعدّدة الوسائط

يتم تحويل جميع المدخلات إلى Gemini API إلى رموز مميّزة، بما في ذلك النصوص وملفات الصور وغيرها من الوسائط غير النصية. يُرجى ملاحظة النقاط الرئيسية التالية حول تحويل الإدخال المتعدد الوسائط إلى رموز مميزة أثناء معالجته بواسطة Gemini API:

  • يتم احتساب مدخلات الصور التي يقل فيها كلا البُعدين عن 384 بكسل أو يساويهما على أنّها 258 رمزًا مميزًا. يتم اقتصاص الصور الأكبر حجمًا في أحد البُعدَين أو كليهما وتغيير حجمها حسب الحاجة إلى مربّعات بحجم 768×768 بكسل، ويتم احتساب كل منها على أنّها 258 رمزًا مميزًا.

  • يتم تحويل ملفات الفيديو والصوت إلى رموز مميزة بالأسعار الثابتة التالية: الفيديو: 263 رمزًا مميزًا في الثانية، والصوت: 32 رمزًا مميزًا في الثانية. تنطبق هذه النسبة على المعالجة الثابتة (الإعداد التلقائي). بالنسبة إلى المعالجة المستندة إلى الوكلاء، يختلف استخدام الرموز المميّزة. اطّلِع على استخدام الرموز المميزة للفيديو حسب وضع المعالجة.

درجات دقة الوسائط

توفّر نماذج Gemini 3 تحكّمًا دقيقًا في معالجة الرؤية المتعدّدة الوسائط باستخدام المَعلمة media_resolution. تحدّد المَعلمة media_resolution الحدّ الأقصى لعدد الرموز المميزة المخصّصة لكل صورة إدخال أو إطار فيديو. تؤدي درجات الدقة الأعلى إلى تحسين قدرة النموذج على قراءة النصوص الدقيقة أو تحديد التفاصيل الصغيرة، ولكنها تزيد من استخدام الرموز المميّزة ووقت الاستجابة.

لمزيد من التفاصيل حول المَعلمة وكيفية تأثيرها في عمليات احتساب الرموز المميّزة، يُرجى الاطّلاع على دليل دقة الوسائط.

ملفات الصور

إذا استدعيت count_tokens باستخدام نص وصورة كمدخلات، سيعرض عدد الرموز المميزة المجمّع للنص والصورة في المدخلات فقط (total_tokens). يمكنك إجراء هذا الاستدعاء قبل استدعاء generate_content للتحقّق من حجم طلباتك. يمكنك أيضًا استدعاء count_tokens على النص والملف بشكل منفصل.

هناك خيار آخر وهو استدعاء generate_content ثم استخدام السمة usage_metadata في الكائن response للحصول على ما يلي:

  • عدد الرموز المميزة المنفصلة للإدخال (prompt_token_count) والمحتوى المخزّن مؤقتًا (cached_content_token_count) والناتج (candidates_token_count)
  • عدد الرموز المميّزة لعملية التفكير (thoughts_token_count)
  • إجمالي عدد الرموز المميزة في كل من الطلب والرد (total_token_count)

مثال يستخدم صورة تم تحميلها من File API:

Python

from google import genai

client = genai.Client()
prompt = "Tell me about this image"
your_image_file = client.files.upload(file=media / "organ.jpg")

print(
    client.models.count_tokens(
        model="gemini-3.8-flash", contents=[prompt, your_image_file]
    )
)

response = client.models.generate_content(
    model="gemini-3.8-flash", contents=[prompt, your_image_file]
)
print(response.usage_metadata)

JavaScript

import { GoogleGenAI } from '@google/genai';

const ai = new GoogleGenAI({});
const prompt = "Tell me about this image";

async function main() {
  const organ = await ai.files.upload({
    file: path.join(media, "organ.jpg"),
    config: { mimeType: "image/jpeg" },
  });

  const countTokensResponse = await ai.models.countTokens({
    model: "gemini-3.8-flash",
    contents: createUserContent([
      prompt,
      createPartFromUri(organ.uri, organ.mimeType),
    ]),
  });
  console.log(countTokensResponse.totalTokens);

  const generateResponse = await ai.models.generateContent({
    model: "gemini-3.8-flash",
    contents: createUserContent([
      prompt,
      createPartFromUri(organ.uri, organ.mimeType),
    ]),
  });
  console.log(generateResponse.usageMetadata);
}

await main();

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, nil)

file, err := client.Files.UploadFromPath(
  ctx, 
  filepath.Join(getMedia(), "organ.jpg"), 
  &genai.UploadFileConfig{
    MIMEType : "image/jpeg",
  },
)
if err != nil {
  log.Fatal(err)
}
parts := []*genai.Part{
  genai.NewPartFromText("Tell me about this image"),
  genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
  genai.NewContentFromParts(parts, genai.RoleUser),
}

tokenResp, err := client.Models.CountTokens(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
  log.Fatal(err)
}
fmt.Println("Multimodal image token count:", tokenResp.TotalTokens)

response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
  log.Fatal(err)
}
usageMetadata, err := json.MarshalIndent(response.UsageMetadata, "", "  ")
if err != nil {
  log.Fatal(err)
}
fmt.Println(string(usageMetadata))

مثال يقدّم الصورة كبيانات مضمّنة:

Python

from google import genai
import PIL.Image

client = genai.Client()
prompt = "Tell me about this image"
your_image_file = PIL.Image.open(media / "organ.jpg")

print(
    client.models.count_tokens(
        model="gemini-3.8-flash", contents=[prompt, your_image_file]
    )
)

response = client.models.generate_content(
    model="gemini-3.8-flash", contents=[prompt, your_image_file]
)
print(response.usage_metadata)

JavaScript

import { GoogleGenAI } from '@google/genai';

const ai = new GoogleGenAI({});
const prompt = "Tell me about this image";
const imageBuffer = fs.readFileSync(path.join(media, "organ.jpg"));

const imageBase64 = imageBuffer.toString("base64");

const contents = createUserContent([
  prompt,
  createPartFromBase64(imageBase64, "image/jpeg"),
]);

async function main() {
  const countTokensResponse = await ai.models.countTokens({
    model: "gemini-3.8-flash",
    contents: contents,
  });
  console.log(countTokensResponse.totalTokens);

  const generateResponse = await ai.models.generateContent({
    model: "gemini-3.8-flash",
    contents: contents,
  });
  console.log(generateResponse.usageMetadata);
}

await main();

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, nil)

imageBytes, err := os.ReadFile("organ.jpg")
if err != nil {
    log.Fatalf("Failed to read image file: %v", err)
}
parts := []*genai.Part{
  genai.NewPartFromText("Tell me about this image"),
  {
        InlineData: &genai.Blob{
              MIMEType: "image/jpeg",
              Data:     imageBytes,
        },
  },
}
contents := []*genai.Content{
  genai.NewContentFromParts(parts, genai.RoleUser),
}

tokenResp, err := client.Models.CountTokens(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
  log.Fatal(err)
}
fmt.Println("Multimodal image token count:", tokenResp.TotalTokens)

response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
  log.Fatal(err)
}
usageMetadata, err := json.MarshalIndent(response.UsageMetadata, "", "  ")
if err != nil {
  log.Fatal(err)
}
fmt.Println(string(usageMetadata))

ملفات الفيديو أو الملفات الصوتية

يتم تحويل كل من الصوت والفيديو إلى رموز مميّزة بالمعدلات الثابتة التالية:

  • الفيديو: 263 رمزًا مميزًا في الثانية
  • الصوت: 32 رمزًا مميزًا في الثانية

إذا طلبت count_tokens باستخدام إدخال نص وفيديو/صوت، فسيتم عرض عدد الرموز المجمّعة للنص وملف الفيديو/الصوت في الإدخال فقط (total_tokens). يمكنك إجراء هذا الطلب قبل طلب generate_content للتحقّق من حجم طلباتك. يمكنك أيضًا استدعاء count_tokens على النص والملف بشكل منفصل.

هناك خيار آخر وهو استدعاء generate_content ثم استخدام السمة usage_metadata في الكائن response للحصول على ما يلي:

  • عدد الرموز المميزة المنفصلة للإدخال (prompt_token_count) والمحتوى المخزّن مؤقتًا (cached_content_token_count) والناتج (candidates_token_count)
  • عدد الرموز المميّزة لعملية التفكير (thoughts_token_count)
  • إجمالي عدد الرموز المميّزة في كل من الطلب والرد (total_token_count).

Python

from google import genai
import time

client = genai.Client()
prompt = "Tell me about this video"
your_file = client.files.upload(file=media / "Big_Buck_Bunny.mp4")

while not your_file.state or your_file.state.name != "ACTIVE":
    print("Processing video...")
    print("File state:", your_file.state)
    time.sleep(5)
    your_file = client.files.get(name=your_file.name)

print(
    client.models.count_tokens(
        model="gemini-3.8-flash", contents=[prompt, your_file]
    )
)

response = client.models.generate_content(
    model="gemini-3.8-flash", contents=[prompt, your_file]
)
print(response.usage_metadata)

JavaScript

import { GoogleGenAI } from '@google/genai';

const ai = new GoogleGenAI({});
const prompt = "Tell me about this video";

async function main() {
  let videoFile = await ai.files.upload({
    file: path.join(media, "Big_Buck_Bunny.mp4"),
    config: { mimeType: "video/mp4" },
  });

  while (!videoFile.state || videoFile.state.toString() !== "ACTIVE") {
    console.log("Processing video...");
    console.log("File state: ", videoFile.state);
    await sleep(5000);
    videoFile = await ai.files.get({ name: videoFile.name });
  }

  const countTokensResponse = await ai.models.countTokens({
    model: "gemini-3.8-flash",
    contents: createUserContent([
      prompt,
      createPartFromUri(videoFile.uri, videoFile.mimeType),
    ]),
  });
  console.log(countTokensResponse.totalTokens);

  const generateResponse = await ai.models.generateContent({
    model: "gemini-3.8-flash",
    contents: createUserContent([
      prompt,
      createPartFromUri(videoFile.uri, videoFile.mimeType),
    ]),
  });
  console.log(generateResponse.usageMetadata);
}

await main();

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, nil)

file, err := client.Files.UploadFromPath(
  ctx,
  filepath.Join(getMedia(), "Big_Buck_Bunny.mp4"),
  &genai.UploadFileConfig{
    MIMEType : "video/mp4",
  },
)
if err != nil {
  log.Fatal(err)
}

for file.State == genai.FileStateUnspecified || file.State != genai.FileStateActive {
  fmt.Println("Processing video...")
  fmt.Println("File state:", file.State)
  time.Sleep(5 * time.Second)

  file, err = client.Files.Get(ctx, file.Name, nil)
  if err != nil {
    log.Fatal(err)
  }
}

parts := []*genai.Part{
  genai.NewPartFromText("Tell me about this video"),
  genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
  genai.NewContentFromParts(parts, genai.RoleUser),
}

tokenResp, err := client.Models.CountTokens(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
  log.Fatal(err)
}
fmt.Println("Multimodal video/audio token count:", tokenResp.TotalTokens)
response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
  log.Fatal(err)
}
usageMetadata, err := json.MarshalIndent(response.UsageMetadata, "", "  ")
if err != nil {
  log.Fatal(err)
}
fmt.Println(string(usageMetadata))

استخدام الرموز المميّزة للفيديو حسب وضع المعالجة

يعتمد استخدام الرموز المميّزة للفيديو على وضع المعالجة:

وضع المعالجة احتساب الرموز المميزة الاستخدام العادي
ثابتة (تلقائي) ‫~100 رمز مميّز في الثانية تلقائيًا (دقة منخفضة) أو ~300 رمز مميّز في الثانية (دقة عالية). يتم أخذ عيّنات من جميع اللقطات بمعدّل لقطة واحدة في الثانية. يمكن توقّعها وتتناسب مع مدة الفيديو.
حلول مستندة إلى الذكاء الاصطناعي الوكيل يختلف حسب مدى تعقيد المحتوى. يحمّل النموذج فقط النص و/أو اللقطات و/أو الصوت اللازم للردّ على الطلب. استخدام رموز مميّزة أقل بنسبة تصل إلى% 88 للمحتوى الطويل

عند استخدام المعالجة المستندة إلى الوكلاء، قد تستهلك محاضرة مدتها ساعة واحدة حوالي 108 آلاف رمز مميّز، حسب الطلب والمحتوى، مقارنةً بحوالي 1.08 مليون رمز مميّز في الوضع الثابت.

للاطّلاع على الاستخدام الفعلي للرموز المميزة في طلب معيّن، استخدِم الحقل usage_metadata في الردّ. في UsageMetadata، يتم تسجيل الرموز المميزة للفيديوهات التي تم إنشاؤها بالذكاء الاصطناعي الوكيل في الحقول التالية:

  • الطلب الأولي (الفيديو المرجعي + طلب المستخدم): prompt_token_count
  • التفكير في التنقّل: thoughts_token_count
  • تحميل النص والإطارات والصوت عند الطلب: tool_use_prompt_token_count
  • الإجابة النهائية: candidates_token_count

عدد الرموز المميّزة للاستدلال

عند تفعيل ميزة "التفكير"، يكون سعر الردّ هو مجموع الرموز المميزة للناتج والرموز المميزة للتفكير. يمكنك استرداد إجمالي عدد الرموز المميزة للتفكير التي تم إنشاؤها من الحقل thoughtsTokenCount (أو ما يعادله في حزمة تطوير البرامج).

Python

# ...
print("Thoughts tokens:", response.usage_metadata.thoughts_token_count)
print("Output tokens:", response.usage_metadata.candidates_token_count)

JavaScript

// ...
console.log(`Thoughts tokens: ${response.usageMetadata.thoughtsTokenCount}`);
console.log(`Output tokens: ${response.usageMetadata.candidatesTokenCount}`);

Go

// ...
fmt.Println("Thoughts tokens:", response.UsageMetadata.ThoughtsTokenCount)
fmt.Println("Output tokens:", response.UsageMetadata.CandidatesTokenCount)

تُنشئ النماذج المفكِّرة أفكارًا كاملة لتحسين جودة الردّ النهائي، ثم تعرض ملخّصات لتقديم نظرة عامة على عملية التفكير. لذلك، تستند واجهة برمجة التطبيقات في التسعير إلى الرموز المميّزة الكاملة للأفكار التي ينشئها النموذج لإنشاء ملخّص، على الرغم من أنّ واجهة برمجة التطبيقات لا تعرض سوى الملخّص.

يمكنك الاطّلاع على مزيد من المعلومات حول كيفية ضبط ميزة "المفكّر" في دليل Gemini Thinking.

قدرات الاستيعاب

تتضمّن النماذج المتاحة من خلال Gemini API قدرات استيعاب يتم قياسها بالرموز المميزة. تحدّد قدرة الاستيعاب حجم الإدخال الذي يمكنك تقديمه وحجم الناتج الذي يمكن للنموذج إنشاؤه. يمكنك تحديد حجم قدرة الاستيعاب من خلال طلب نقطة النهاية models.get أو من خلال الاطّلاع على مستندات النماذج.

  • نماذج Gemini 4‏ (gemini-4-argon): تشارك قدرة استيعاب واحدة تبلغ مليون رمز مميّز (1,048,576 رمز مميّز) بين رموز الإدخال والتفكير والإخراج. يبلغ الحدّ الأقصى للطلبات الفردية 65,536 رمزًا مميزًا للناتج في البث (streamGenerateContent) و32,768 رمزًا مميزًا للناتج في غير البث (generateContent)، أو يمكنك إنشاء ما يصل إلى 1,048,576 رمز مميز باستخدام فك التشفير الطويل. إذا تجاوز عدد الرموز المميزة في الإدخال بالإضافة إلى max_output_tokens عدد 1,048,576 رمزًا مميزًا، ستفرض واجهة برمجة التطبيقات تلقائيًا حدًا أقصى على عدد الرموز المميزة في الإخراج يساوي المساحة المتبقية في نافذة السياق (1,048,576 ناقص عدد الرموز المميزة في الإدخال).
  • نماذج Gemini 3 و2.5: استخدام ميزانيات منفصلة للإدخال (رموز 1,048,576) والإخراج (رموز 65,536)

Python

from google import genai

client = genai.Client()
model_info = client.models.get(model="gemini-3.8-flash")
print(f"{model_info.input_token_limit=}")
print(f"{model_info.output_token_limit=}")

JavaScript

import { GoogleGenAI } from '@google/genai';

const ai = new GoogleGenAI({});

async function main() {
  const modelInfo = await ai.models.get({model: 'gemini-3.8-flash'});
  console.log(modelInfo.inputTokenLimit);
  console.log(modelInfo.outputTokenLimit);
}

await main();

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
  log.Fatal(err)
}
modelInfo, err := client.ModelInfo(ctx, "models/gemini-3.8-flash")
if err != nil {
  log.Fatal(err)
}
fmt.Println("input token limit:", modelInfo.InputTokenLimit)
fmt.Println("output token limit:", modelInfo.OutputTokenLimit)