ספירת טוקנים: למה tiktoken נותן לכם מספר שגוי
הטוקנייזר של OpenAI לא מתאים לקלוד, והפער גדול במיוחד בעברית ובקוד. יש נקודת קצה שמחזירה את המספר האמיתי.
כמעט כל מי שבנה מחשבון עלות או מנגנון קיצוץ הקשר עשה את זה עם tiktoken. זו הספרייה הזמינה, היא מהירה, והיא רצה מקומית בלי קריאת רשת.
והיא לא נכונה לקלוד. היא הטוקנייזר של OpenAI. על טקסט אנגלי רגיל היא מחסירה בערך חמישה עשר עד עשרים אחוז, ועל קוד או טקסט שאינו אנגלית הפער גדול בהרבה.
למה זה קריטי בעברית
טוקנייזר מפרק טקסט למקטעים שראה הרבה באימון. אנגלית מקבלת יחס טוב, לפעמים מילה שלמה לטוקן. עברית מקבלת יחס גרוע: מילה מתפרקת לשניים, שלושה ולפעמים ארבעה טוקנים, תלוי בנטייה, בכתיב ובסימני הפיסוק סביבה.
המשמעות המעשית לשירות שעובד בעברית היא שכל אומדן שנלקח מדוגמה באנגלית שגוי בכיוון היקר. חלון ההקשר מחזיק פחות טקסט ממה שנראה, והעלות לכל אלף מילים גבוהה יותר.
כלל אצבע מסוג "ארבעה תווים לטוקן" נשבר על עברית, על JSON ועל קוד. הוא נגזר מטקסט אנגלי רץ ואין סיבה שיחזיק במקום אחר.
מה כן לעשות
יש נקודת קצה לספירת טוקנים. שולחים אליה את אותה בקשה שהייתם שולחים לייצור, כולל ההודעות, הנחיות המערכת והכלים, ומקבלים את מספר טוקני הקלט המדויק.
היא תלוית מודל. אותו טקסט מחזיר מספר שונה במודלים שונים, ולכן צריך להעביר את אותו מזהה מודל שישמש בפועל. הפרש של עשרות אחוזים בין דורות אינו נדיר.
הקריאה הזאת חינמית מבחינת טוקנים ויש לה מגבלת קצב משלה. לספירה של מיליוני מחרוזות בלולאה היא לא הכלי, לכיול מחשבון על מדגם מייצג היא בדיוק הכלי.
מתי באמת צריך את זה
שלושה מצבים. הראשון, כשמחשבים עלות משוערת ומציגים אותה למשתמש. השני, כשמחליטים אם בקשה נכנסת לחלון או צריכה כיווץ. השלישי, כשמודדים תוכן: כמה טוקנים מוסיף קובץ הנחיות, כמה עולה תיאור כלי, מה המחיר של ההיסטוריה.
בשלושתם מספר שגוי בעשרים אחוז הוא הבדל בין החלטה נכונה ללא נכונה.
מה קורה בהחלפת מודל
טוקנייזרים משתנים בין דורות. מעבר למודל חדש יכול לשנות את ספירת הטוקנים על אותו טקסט בדיוק, גם כשהמחיר לטוקן לא זז. בדור אחד המעבר הוסיף בערך שליש.
לכן מיגרציה כוללת מדידה מחדש: להריץ את הספירה מול המודל הישן ומול החדש על מדגם אמיתי, ולהשוות. מכפיל גורף שמוחל על כל התוכן הוא ניחוש, כי היחס משתנה לפי סוג התוכן.
מה שכדאי לבדוק אחרי מיגרציה: תקרות max_tokens שכוילו למודל הישן, ספי כיווץ, ולוחות מחוונים של עלות. שלושתם מכוילים למספרים שכבר לא נכונים.
מה שאין
אין ספרייה מקומית רשמית שמחשבת את זה בלי קריאת רשת. למי שצריך אומדן במיליוני קריאות, הדרך היחידה היא לכייל מקדם משלו מול נקודת הקצה ולהחיל אותו על סוג התוכן שנמדד. זה עובד, כל עוד זוכרים שהמקדם נכון לאותו סוג תוכן ולאותו מודל בלבד.
מקורות
- Token counting · Anthropic · 24 ביוני 2026