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

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

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

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

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

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


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

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

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

نوافذ السياق

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

في المثال التالي، يمكنك ملاحظة أنّ نموذج gemini-1.5-flash لديه حدّ أقصى يبلغ حوالي 1,000,000 رمز مميّز للإدخال وحدّ أقصى يبلغ حوالي 8,000 رمز مميّز للإخراج، ما يعني أنّ قدرة الاستيعاب تبلغ 1,000,000 رمز مميّز.

from google import genai

client = genai.Client()
model_info = client.models.get(model="gemini-2.0-flash")
print(f"{model_info.input_token_limit=}")
print(f"{model_info.output_token_limit=}")
# ( e.g., input_token_limit=30720, output_token_limit=2048 )

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

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

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

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

from google import genai

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

# Count tokens using the new client method.
total_tokens = client.models.count_tokens(
    model="gemini-2.0-flash", contents=prompt
)
print("total_tokens: ", total_tokens)
# ( e.g., total_tokens: 10 )

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

# The usage_metadata provides detailed token counts.
print(response.usage_metadata)
# ( e.g., prompt_token_count: 11, candidates_token_count: 73, total_token_count: 84 )

احتساب الرموز المميزة للمحادثات المتعددة الجولات

from google import genai
from google.genai import types

client = genai.Client()

chat = client.chats.create(
    model="gemini-2.0-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!")]),
    ],
)
# Count tokens for the chat history.
print(
    client.models.count_tokens(
        model="gemini-2.0-flash", contents=chat.get_history()
    )
)
# ( e.g., total_tokens: 10 )

response = chat.send_message(
    message="In one sentence, explain how a computer works to a young child."
)
print(response.usage_metadata)
# ( e.g., prompt_token_count: 25, candidates_token_count: 21, total_token_count: 46 )

# You can count tokens for the combined history and a new message.
extra = types.UserContent(
    parts=[
        types.Part(
            text="What is the meaning of life?",
        )
    ]
)
history = chat.get_history()
history.append(extra)
print(client.models.count_tokens(model="gemini-2.0-flash", contents=history))
# ( e.g., total_tokens: 56 )

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

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

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

  • يتم تحويل ملفات الفيديو والصوت إلى رموز مميزة بالأسعار الثابتة التالية: الفيديو: 263 رمزًا مميزًا في الثانية، والصوت: 32 رمزًا مميزًا في الثانية.

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

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

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

ملفات الصور

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

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-2.0-flash", contents=[prompt, your_image_file]
    )
)
# ( e.g., total_tokens: 263 )

response = client.models.generate_content(
    model="gemini-2.0-flash", contents=[prompt, your_image_file]
)
print(response.usage_metadata)
# ( e.g., prompt_token_count: 264, candidates_token_count: 80, total_token_count: 345 )

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

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

# Count tokens for combined text and inline image.
print(
    client.models.count_tokens(
        model="gemini-2.0-flash", contents=[prompt, your_image_file]
    )
)
# ( e.g., total_tokens: 263 )

response = client.models.generate_content(
    model="gemini-2.0-flash", contents=[prompt, your_image_file]
)
print(response.usage_metadata)
# ( e.g., prompt_token_count: 264, candidates_token_count: 80, total_token_count: 345 )

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

يتم تحويل الصوت والفيديو إلى رموز مميزة بالأسعار الثابتة التالية:

  • الفيديو: 263 رمزًا مميزًا في الثانية
  • الصوت: 32 رمزًا مميزًا في الثانية
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")

# Poll until the video file is completely processed (state becomes ACTIVE).
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-2.0-flash", contents=[prompt, your_file]
    )
)
# ( e.g., total_tokens: 300 )

response = client.models.generate_content(
    model="gemini-2.0-flash", contents=[prompt, your_file]
)
print(response.usage_metadata)
# ( e.g., prompt_token_count: 301, candidates_token_count: 60, total_token_count: 361 )

تعليمات النظام والأدوات

يتم أيضًا احتساب تعليمات وأدوات النظام ضمن إجمالي عدد الرموز المميّزة للطلب.

في حال استخدام تعليمات النظام، يزداد عدد total_tokens ليعكس إضافة system_instruction.

إذا كنت تستخدم ميزة "استدعاء الدوال"، سيزيد عدد الرموز total_tokens ليعكس إضافة الرمز tools.