عدد التوكنات الدقيق: دقيق لأي نص وبأي ترميز؟
قد تعطي عدادات مختلفة أرقامًا مختلفة للنص نفسه دون أن يكون أحدها معطلًا. قبل مقارنة الرقم، اسأل عن الترميز وما إذا كان العداد يقيس النص وحده أم الرسالة بكل ما يحيط بها.
حدد وحدة القياس قبل الاعتماد على الرقم
عدد الكلمات يصف النص بطريقة مفيدة للقارئ، وحجم UTF-8 يصف تمثيله بالبايتات. أما التوكنات فتتبع تقسيم ترميز معين؛ لا توجد مساواة ثابتة تصلح لكل نص بين كلمة أو حرف وتوكن.
عداد ToolRoof يحسب النص الحرفي بترميز cl100k_base، ويعرض عدد التوكنات والبايتات. دقته تخص هذا الترميز، لا كل النماذج؛ تغيير اسم النموذج في تطبيقك لا يغيّر طريقة هذا العداد.
النص المرئي ليس الطلب كله
قد يحتوي طلب API على أدوار الرسائل وتعريفات أدوات وملفات وعناصر أخرى غير النص الذي نسخته. لذلك قد يكون عد الفقرة صحيحًا، لكنه ليس قياسًا كافيًا لاستهلاك الطلب الكامل.
عند الاقتراب من حد مزود، استخدم قياس الطلب المناسب له أو بيانات استخدامه. لا تضف هامشًا ثابتًا وتعتبره ضمانًا؛ ما ينقص العد المحلي يعتمد على تركيب الطلب.
المراجع: OpenAI — Plain-text counts versus complete request token counts
لا تغيّر النص خفية لتجميل العدد
المسافات ونهايات الأسطر وطريقة تمثيل الحروف جزء من المدخل. قد تبدو سلسلتان متطابقتين على الشاشة بينما تختلف رموزهما. احفظ النسخة التي قستها لتكون المقارنة قابلة للتكرار.
العداد المحلي لا يوحّد Unicode تلقائيًا ولا يبدّل أرقام المستخدم. يقبل حتى 20000 وحدة UTF-16، وليس وعدًا بقبول هذا العدد من الحروف المرئية أو التوكنات. النص غير السليم يُرفض بدل تغييره بصمت.
مثال: الشكل المتشابه لا يعني العدد نفسه
في cl100k_base، النص الحرفي hello world حجمه 11 بايت UTF-8 ويعطي 2 توكن. هذه ثلاثة أشياء مختلفة: العبارة، حجم تمثيلها، وتقسيمها في الترميز المحدد.
الحرف é المكتوب كرمز U+00E9 يعطي 1 توكن و2 بايت. كتابة e ثم العلامة U+0301 تبدو شبيهة به، لكنها تعطي 2 توكن و3 بايت. لا يعني الفرق أن إحداهما لغة أفضل للنموذج؛ بل يبين أهمية حفظ النص والترميز مع نتيجة القياس.