حساب الرموز المميزة لـ GPT وClaude وLlama في واجهة برمجة تطبيقات واحدة
قم بإحصاء واقتطاع الرموز المميزة عبر 15 نموذجًا من نماذج LLM بطلب POST واحد. منع تجاوزات نافذة السياق وتقدير التكاليف قبل كل استدعاء لواجهة برمجة التطبيقات.
تقوم بإرسال مطالبة إلى GPT-4o ويقطع الرد منتصف الجملة. يمكنك التحقق من فاتورتك والعثور عليها استهلكت مهمة مجمعة 40 دولارًا لأن الإدخال كان أكبر بثلاثة أضعاف مما كنت تتوقعه. قمت بلصق طويلة المستند إلى Claude ويحصل على خطأ: تم تجاوز نافذة السياق. كل واحدة من هذه المشاكل تتبع العودة إلى نفس السبب الجذري؛ لم تكن تعرف عدد الرموز المميزة التي يحتوي عليها النص الخاص بك قبل إرساله.
يعد حساب الرموز المميزة بمثابة فحص ما قبل الرحلة لكل احتياجات تكامل LLM. عدد الأحرف لن يساعدك. عدد الكلمات يجعلك في الملعب، ولكن الرموز المميزة تقسم النص بشكل مختلف اعتمادًا على النموذج. أنت بحاجة إلى العدد الدقيق للطراز الذي تتصل به.
لماذا عدد الأحرف ليس عددا رمزيا
لا تقوم LLMs بمعالجة الأحرف الأولية. يقومون بتقسيم النص إلى رموز باستخدام رمز مميز، وهو مفردات قطع الكلمات الفرعية المدربة على مجموعة كبيرة. التعيين من النص إلى الرموز المميزة هو غير واضحة ومحددة بالنموذج.
بعض الأمثلة التي توضح سبب تضليلك عند حساب الأحرف:
-
"لا أستطبع" ينقسم إلى 3 رموز في GPT-4:
I,can,'t. هذا 7 أحرف ولكن 3 رموز. - "مناهضة التفكيكية" هي كلمة واحدة ولكن 6-8 الرموز اعتمادا على نموذج. يقوم الرمز المميز بتقسيمها إلى أجزاء من الكلمات الفرعية التي يتعرف عليها.
- "مرحبًا" هو 1 رمز مميز. " مرحبًا" (مع مسافات بادئة) قد يكون رمزان لأن المسافة البيضاء تحصل على رمز مميز خاص بها.
- مقتطفات من التعليمات البرمجية رمزية مختلفة عن النثر. الأقواس المتعرجة، والفواصل المنقوطة، و المسافة البادئة لكل تستهلك الرموز. يمكن أن تكلف وظيفة مكونة من 500 حرف أكثر من 200 رمز مميز بسهولة.
تستخدم نماذج GPT BPE (تشفير زوج البايت) مع مفردات cl100k_base أو o200k_base. يستخدم كلود رمز BPE مشابه ولكنه متميز. يستخدم اللاما SentencePiece. نفس الفقرة تنتج مختلفة عدد الرموز المميزة في جميع الثلاثة.
عد الرموز المميزة باستدعاء واجهة برمجة التطبيقات (API) واحد
أرسل النص الخاص بك إلى botoi /v1/token/count نقطة النهاية مع النموذج المستهدف. واجهة برمجة التطبيقات
تقوم بإرجاع عدد الرموز المميزة بالإضافة إلى عدد الأحرف والكلمات.
curl -X POST https://api.botoi.com/v1/token/count \\
-H "Content-Type: application/json" \\
-d '{
"text": "The quick brown fox jumps over the lazy dog. This sentence is used to test tokenizers across different language models.",
"model": "gpt-4o"
}'
إجابة:
{
"success": true,
"data": {
"tokens": 24,
"model": "gpt-4o",
"method": "estimated",
"characters": 116,
"words": 20
}
}
يخبرك الرد أن هذه الجملة المكونة من 20 كلمة تكلف 24 رمزًا في GPT-4o. يمكنك أيضا الحصول على
characters و words للرجوع إليها بسرعة. ال method المجال
يشير إلى نهج العد المستخدم.
عدد الرموز المميزة حسب النموذج
ينتج النص نفسه أعدادًا مختلفة من الرموز المميزة اعتمادًا على النموذج الذي تستهدفه. ال
model تقبل المعلمة 15 نموذجًا عبر العائلات الكبرى. وإليك كيفية المقارنة
لنفس الإدخال:
| نموذج | رمز مميز | نافذة السياق | الرموز (نفس النص) |
|---|---|---|---|
| gpt-4o | o200k_base (BPE) | 128 ألف | 24 |
| gpt-3.5-توربو | cl100k_base (BPE) | 16 ك | 24 |
| كلود 3.5 السوناتة | كلود بي بي اي | 200 ألف | 25 |
| قريب من 4 عمل | كلود بي بي اي | 200 ألف | 25 |
| اللاما-3.2 | SentencePiece | 128 ألف | 24 |
| الجوزاء-2.0-فلاش | SentencePiece | 1 م | 24 |
| ميسترال | قطعة الجملة (BPE) | 32K | 24 |
تكون الاختلافات صغيرة بالنسبة للجمل الإنجليزية القصيرة ولكنها تنمو مع زيادة طول الإدخال. غير الإنجليزية يمكن أن يُظهر النص والتعليمات البرمجية والبيانات المنظمة (JSON وXML) تباينًا أكبر. قم دائمًا بحساب الرموز باستخدام نموذج محدد تخطط للاتصال به.
اقتطاع النص إلى حد الرمز المميز
عندما يتجاوز الموجه الخاص بك نافذة السياق، فإنك تحتاج إلى قصها دون كسر منتصف الكلمة.
ال /v1/token/truncate تقوم نقطة النهاية بقص النص إلى عدد الرموز المميزة المستهدفة عند حد الكلمة.
curl -X POST https://api.botoi.com/v1/token/truncate \\
-H "Content-Type: application/json" \\
-d '{
"text": "You are a helpful assistant. Summarize the following document in three bullet points. The document discusses the impact of renewable energy adoption on global carbon emissions over the past decade, with specific focus on solar and wind installations in Europe and Southeast Asia.",
"max_tokens": 20,
"model": "claude-3.5-sonnet"
}'
إجابة:
{
"success": true,
"data": {
"truncated": "You are a helpful assistant. Summarize the following document in three bullet points. The",
"tokens": 18,
"was_truncated": true,
"model": "claude-3.5-sonnet",
"max_tokens": 20,
"original_tokens": 48
}
}
كان الموجه الأصلي 48 رمزًا. قامت واجهة برمجة التطبيقات (API) باقتطاعها إلى 18 رمزًا (ضمن ميزانية 20 رمزًا)
عند حدود الكلمة النظيفة. ال was_truncated يخبرك العلم بما إذا كان النص قد تم تعديله أم لا.
ال original_tokens يعرض الحقل عدد الرموز المميزة التي يحتوي عليها النص الكامل.
يعد هذا مفيدًا لملاءمة مطالبات النظام مع ميزانيات الرموز المميزة المحدودة، وتقليص سجل الدردشة للبقاء داخل نافذة السياق، وتقسيم المستندات قبل إرسالها إلى واجهة برمجة تطبيقات التضمين.
قم بإنشاء فحص ما قبل الرحلة لمكالمات LLM
التكامل ذو القيمة الأعلى: دالة تحسب الرموز المميزة وتقارن بسياق النموذج نافذة، ويتم اقتطاعها إذا كانت المطالبة طويلة جدًا. وهذا يمنع كلاً من الاقتطاع الصامت وأخطاء API.
const MODEL_LIMITS = {
"gpt-4o": 128000,
"gpt-4o-mini": 128000,
"claude-3.5-sonnet": 200000,
"claude-4-sonnet": 200000,
"llama-3.2": 128000,
};
async function countTokens(text, model = "gpt-4o") {
const res = await fetch("https://api.botoi.com/v1/token/count", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ text, model }),
});
const { data } = await res.json();
return data.tokens;
}
async function truncateText(text, maxTokens, model = "gpt-4o") {
const res = await fetch("https://api.botoi.com/v1/token/truncate", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ text, max_tokens: maxTokens, model }),
});
const { data } = await res.json();
return data;
}
async function preflightCheck(prompt, model = "gpt-4o") {
const limit = MODEL_LIMITS[model];
if (!limit) throw new Error("Unknown model: " + model);
const tokens = await countTokens(prompt, model);
// Reserve 20% of the context window for the model's response
const inputBudget = Math.floor(limit * 0.8);
if (tokens <= inputBudget) {
return { safe: true, tokens, limit, model };
}
// Truncate to fit within the input budget
const result = await truncateText(prompt, inputBudget, model);
return {
safe: false,
original_tokens: tokens,
truncated_tokens: result.tokens,
truncated_text: result.truncated,
limit,
model,
};
}
// Usage
const prompt = buildPromptFromChatHistory(messages);
const check = await preflightCheck(prompt, "claude-3.5-sonnet");
if (!check.safe) {
console.log(
"Prompt truncated from " +
check.original_tokens + " to " +
check.truncated_tokens + " tokens"
);
prompt = check.truncated_text;
}
const response = await callLLM(prompt, "claude-3.5-sonnet");
تحتفظ الوظيفة بـ 20% من نافذة السياق لاستجابة النموذج. إذا كان الإدخال مناسبًا، فهو يمر دون تغيير. إذا كانت كبيرة جدًا، فسيتم اقتطاعها من ميزانية المدخلات. أنت دائما تعرف بالضبط عدد الرموز التي ترسلها.
لف هذا حول كل مكالمة LLM في طلبك. يضيف طلب HTTP واحدًا (اثنين إذا كان الاقتطاع المطلوبة) ويزيل فئة كاملة من فشل الإنتاج.
حالات الاستخدام في العالم الحقيقي
- تقدير التكلفة قبل استدعاءات API. عد الرموز المميزة في مجموعة من المطالبات، واضربها حسب سعر النموذج لكل رمز، واعرف التكلفة الإجمالية قبل الالتزام. وظيفة Node.js هذه يفعل ذلك في بضعة أسطر:
async function estimateCost(text, model = "gpt-4o") {
const tokens = await countTokens(text, model);
// Price per 1M input tokens (March 2026 pricing)
const rates = {
"gpt-4o": 2.50,
"gpt-4o-mini": 0.15,
"claude-3.5-sonnet": 3.00,
"claude-4-sonnet": 4.00,
"llama-3.2": 0.00, // self-hosted
};
const rate = rates[model] || 0;
const cost = (tokens / 1_000_000) * rate;
return {
tokens,
model,
estimated_cost_usd: cost.toFixed(6),
};
}
// Check cost before sending a large document
const estimate = await estimateCost(longDocument, "gpt-4o");
console.log(estimate);
// { tokens: 14320, model: "gpt-4o", estimated_cost_usd: "0.035800" }
- التحقق من الحجم الفوري. رفض أو قطع المطالبات المقدمة من المستخدم والتي تتجاوز ميزانية الرمز المميز للتطبيق. منع إدخال طويل واحد من استهلاك الحد الأقصى للمعدل الخاص بك بالكامل.
- تقطيع المستندات للتضمين. قم بتقسيم المستندات الطويلة إلى أجزاء مناسبة ضمن حد الرمز المميز لنموذج التضمين الخاص بك (عادةً 512 أو 8192 رمزًا). عد الرموز لكل قطعة لضمان عدم تجاوز الحد الأقصى.
- إدارة سجل الدردشة. ومع نمو المحادثات، تزيد الرسائل القديمة من العدد الإجمالي عدد الرموز المميزة بعد نافذة السياق. حساب إجمالي الرمز المميز التراكمي بعد كل رسالة و قم بإسقاط الرسائل الأقدم عندما تقترب من الحد الأقصى.
- حراس خطوط الأنابيب CI/CD. أضف خطوة عدد الرموز المميزة إلى مسار النشر الخاص بك. إذا يتجاوز قالب المطالبة حدًا محددًا، ويفشل في الإنشاء قبل أن يصل إلى مرحلة الإنتاج.
النقاط الرئيسية
- يختلف عدد الرموز حسب الطراز. GPT وClaude وLlama يرمزون إلى نفس النص بشكل مختلف. حدد دائمًا النموذج المستهدف عند العد.
-
تغطي نقطتا النهاية سير العمل بالكامل.
/v1/token/countيخبرك الحجم./v1/token/truncateالديكورات لتناسب. كلاهما يدعم 15 نموذجًا. - تمنع فحوصات ما قبل الرحلة فشل الإنتاج. عد الرموز قبل كل LLM استدعاء لتجنب الاستجابات المقتطعة، وأخطاء نافذة السياق، والتكاليف المفاجئة.
- لا يوجد حساب مطلوب. تسمح الطبقة المجانية بـ 5 طلبات في الدقيقة بدون تسجيل. احصل على مفتاح API لزيادة الحجم في botoi.com/api.
ال مستندات API الكاملة قم بتغطية القائمة الكاملة للنماذج المدعومة ونقاط نهاية الأداة المساعدة الإضافية للمطورين.
FAQ
- كم عدد الرموز الموجودة في الكلمة؟
- في المتوسط، كلمة إنجليزية واحدة تساوي حوالي 1.3 رمزًا. الكلمات الشائعة القصيرة مثل "the" أو "is" هي أحد الرموز المميزة. الكلمات الأطول أو غير الشائعة مثل "المصادقة" مقسمة إلى 2-4 كلمات فرعية. يعتمد العدد الدقيق على رمز النموذج.
- ما هو الرمز المميز في GPT؟
- الرمز المميز هو جزء من النص يعالجه النموذج كوحدة واحدة. تستخدم نماذج GPT رمزًا مميزًا لترميز زوج البايت (BPE) الذي يقسم النص إلى أجزاء من الكلمات الفرعية. تظل الكلمات الشائعة كاملة، بينما تنقسم الكلمات النادرة أو الطويلة إلى أجزاء أصغر. يتم أيضًا ترميز علامات الترقيم والمسافات البيضاء.
- كيف يمكنني حساب الرموز المميزة قبل استدعاء API؟
- أرسل النص الخاص بك إلى POST https://api.botoi.com/v1/token/count مع معلمة نموذج اختيارية (gpt-4o، claude-3.5-sonnet، llama-3، وما إلى ذلك). تقوم واجهة برمجة التطبيقات (API) بإرجاع عدد الرموز المميزة وعدد الكلمات وعدد الأحرف في استجابة واحدة.
- هل تقوم LLMs المختلفة بترميز النص بنفس الطريقة؟
- لا. تستخدم نماذج GPT ترميز cl100k_base أو o200k_base. يستخدم كلود رمز BPE مشابهًا ولكن متميزًا. يستخدم اللاما SentencePiece. تنتج الجملة نفسها أعدادًا مختلفة من الرموز المميزة عبر النماذج. قم دائمًا بحساب الرموز المميزة للنموذج المحدد الذي تخطط للاتصال به.
- ماذا يحدث عندما تتجاوز نافذة سياق النموذج؟
- تُرجع معظم واجهات برمجة تطبيقات LLM خطأً عندما يتجاوز الإدخال نافذة السياق. يقوم البعض باقتطاع الإدخال بصمت، مما قد يؤدي إلى قطع التعليمات أو السياق المهم. يؤدي التحقق المسبق من عدد الرموز المميزة والاقتطاع إلى الملاءمة إلى منع وضعي الفشل.
ابدأ البناء مع botoi
أكثر من 150 نقطة نهاية API للبحث ومعالجة النصوص وتوليد الصور وأدوات المطورين. باقة مجانية، بدون بطاقة ائتمان.