Gemini ומודלים אחרים של AI גנרטיבי מעבדים קלט ופלט ברמת פירוט שנקראת טוקן.
במודלים של Gemini, טוקן שווה בערך ל-4 תווים. 100 טוקנים שווים בערך ל-60-80 מילים באנגלית.
מידע על טוקנים
אסימונים יכולים להיות תווים בודדים כמו z או מילים שלמות כמו cat. מילים ארוכות
מפוצלות לכמה טוקנים. קבוצת כל האסימונים שבהם נעשה שימוש במודל נקראת אוצר מילים, והתהליך של פיצול טקסט לאסימונים נקרא tokenization.
כשמופעל חיוב, העלות של קריאה ל-Gemini API נקבעת בין היתר לפי מספר הטוקנים של הקלט והפלט, ולכן כדאי לדעת איך לספור טוקנים.
איך סופרים טוקנים ב-Colab
אפשר לנסות לספור טוקנים באמצעות Colab.
|
|
ניסיון של notebook של Colab
|
הצגת ה-notebook ב-GitHub
|
חלונות הקשר
חלונות ההקשר של המודלים שזמינים דרך Gemini API נמדדים בטוקנים. חלון ההקשר מגדיר כמה קלט אפשר לספק וכמה פלט המודל יכול ליצור. כדי לקבוע את גודל חלון ההקשר, אפשר לקרוא לנקודת הקצה getModels או לעיין במאמרי העזרה של המודלים.
בדוגמה הבאה אפשר לראות שלמודל gemini-2.0-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 )
ספירת טוקנים של multimodal
כל הקלט ל-Gemini API עובר טוקניזציה, כולל טקסט, קובצי תמונה וסוגים אחרים של נתונים שאינם טקסט. הנה כמה נקודות חשובות ברמה גבוהה לגבי טוקניזציה של קלט מולטימודאלי במהלך העיבוד על ידי Gemini API:
עם Gemini 2.0, תמונות קלט ששני הממדים שלהן הם <=384 פיקסלים נספרות כ-258 טוקנים. תמונות Google שגדולות יותר באחד מהממדים או בשניהם נחתכות ומשתנות בהתאם לצורך לאריחים בגודל 768x768 פיקסלים, וכל אחת מהן נספרת כ-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.
ניסיון של notebook של Colab
הצגת ה-notebook ב-GitHub