بلاگ پر واپس جائیں

لاگت کی بہتریگائیڈ

درخواست بھیجنے سے پہلے ٹوکن گنیں: Python میں tiktoken

tiktoken کے ساتھ پرامپٹ کے ٹوکنز کا آف لائن تخمینہ لگائیں، اسے کانٹیکسٹ ونڈو سے جانچیں، قیمت لگائیں، اور API کی usage فیلڈ سے موازنہ کریں۔

از CheapTokens Teamشائع شدہ 6 منٹ کا مطالعہ

ٹرمینل میں pip install tiktoken اور ایک لائن کا ٹوکن کاؤنٹ دکھائی دے رہا ہے
اس صفحہ پر
  1. ٹوکن گننے والی پانچ لائنیں
  2. کیا پرامپٹ ونڈو میں فٹ ہوتا ہے؟
  3. اس کی لاگت کتنی ہوگی؟
  4. تخمینے کا usage سے موازنہ کریں

آپ اپنی مشین پر پرامپٹ کے ٹوکنز اس کے بھیجے جانے سے پہلے گن سکتے ہیں: tiktoken انسٹال کریں، متن کو انکوڈ کریں، نتیجے کا len() لیں۔ tiktoken اوپن اے آئی کا ٹوکنائزر ہے، اس لیے DeepSeek، GLM اور MiniMax ماڈلز کے لیے یہ تعداد ایک تخمینہ ہے۔ اصل عدد پہلی کال کے بعد usage.prompt_tokens میں واپس آتا ہے، اور دونوں کا موازنہ ایک اضافی لائن میں ہو جاتا ہے۔

یہ سب کیوں کریں؟ کیونکہ بل اور غلطیاں دونوں ان پٹ کے سائز سے شروع ہوتی ہیں۔ کسی اسکرپٹ میں ایک طویل معاہدہ پیسٹ کریں، اور آپ کو پتہ تب چلتا ہے کہ یہ بہت بڑا تھا جب API 400 کے ساتھ جواب دیتا ہے۔ پانچ ہزار ای میلز کا بیچ چلائیں، اور آپ کو لاگت کا پتہ تب چلتا ہے جب بیلنس کم ہو۔ پہلے گننا دونوں حیرتوں کو ایک ایسے عدد میں بدل دیتا ہے جو آپ پیشگی پڑھ سکتے ہیں۔

ٹوکن گننے والی پانچ لائنیں#

tiktoken README (1 نومبر 2026 کو چیک کیا گیا) پورا خیال دکھاتا ہے: ایک انکوڈنگ منتخب کریں، متن کو انکوڈ کریں، اور فہرست کی لمبائی ہی ٹوکن کی تعداد ہے۔

bash
pip install tiktoken
python
import tiktoken

enc = tiktoken.get_encoding('o200k_base')
text = 'Hello world'
tokens = enc.encode(text)
print(len(tokens))  # how many tokens the text is
estimate.py نامی فائل میں پانچ لائنیں
پورا کاؤنٹر: get_encoding، encode، len۔

enc.decode(tokens) اصل متن واپس دیتا ہے، جو ایک آسان سینیٹی چیک ہے کہ آپ وہی متن دیکھ رہے ہیں جو ماڈل دیکھے گا۔ README میں tiktoken.encoding_for_model('gpt-4o') کا بھی ذکر ہے، جو کسی مخصوص OpenAI ماڈل کے لیے ٹوکنائزر منتخب کرتا ہے۔ یہی وہ نکتہ ہے جو یاد رکھنے کے قابل ہے: ٹوکنائزر ماڈل خاندانوں سے تعلق رکھتے ہیں۔ README کا عمومی اصول یہ ہے کہ فی ٹوکن تقریباً چار بائٹس متن ہوتا ہے، اور یہ صرف OpenAI کے ٹوکنائزرز بیان کرتا ہے۔

تو DeepSeek ماڈل کے لیے کیا کریں؟ اسی گنتی کو کام کرنے والے تخمینے کے طور پر استعمال کریں، اور اسے کیلیبریٹ کریں، جیسا کہ نیچے دکھایا گیا ہے۔

نمبر کا اندازہ لگائیں

2,000 حروف کا انگریزی متن تقریباً کتنے ٹوکنز ہے؟

جواب دکھائیں

جواب: 500

تقریباً 500۔ README کے فی ٹوکن چار بائٹس کے عمومی اصول کے ساتھ، اور سادہ انگریزی متن تقریباً ایک بائٹ فی حرف، 2,000 ÷ 4 = 500۔ دیگر زبانیں اور ایموجی فی حرف زیادہ بائٹس لیتے ہیں، اس لیے اسی اصول کے مطابق وہی 2,000 حروف عام طور پر زیادہ ٹوکنز کے مترادف ہوتے ہیں۔

کیا پرامپٹ ونڈو میں فٹ ہوتا ہے؟#

ہر ماڈل کی ایک کانٹیکسٹ ونڈو ہوتی ہے، اور آپ کا ان پٹ جمع وہ جواب جس کی آپ اجازت دیتے ہیں اس میں فٹ ہونا چاہیے۔ ہماری فراہم کردہ ماڈلز کی ونڈوز: DeepSeek-V4-Flash 380K، GLM-5.3-Flash 390K، MiniMax-M2.7 180K ٹوکنز۔ سب سے طویل جواب DeepSeek-V4-Flash کے لیے 32,768 ٹوکنز اور باقی دو کے لیے 8,192 ہے (CheapTokens ماڈل فہرست، 1 نومبر 2026)۔

کال سے پہلے ایک گارڈ چار لائنوں کا ہے:

python
CONTEXT = {
    'deepseek-ai/DeepSeek-V4-Flash-0731': 380_000,
    'zai-org/GLM-5.3-Flash': 390_000,
    'MiniMaxAI/MiniMax-M2.7': 180_000,
}

def fits(prompt_tokens, max_tokens, model):
    return prompt_tokens + max_tokens <= CONTEXT[model]

فرض کریں آپ کے پاس 250,000 ٹوکنز کی دستاویز ہے۔ fits(250_000, 8_192, 'MiniMaxAI/MiniMax-M2.7') ہے False، تو آپ اس کام کو بڑی ونڈو والے ماڈل کی طرف بھیجیں یا دستاویز کو تقسیم کریں، اور 400 کبھی نہیں ہوتا۔ fits(250_000, 8_192, 'deepseek-ai/DeepSeek-V4-Flash-0731') ہے True۔ اگر آپ غلطی کی مکمل تفصیل چاہتے ہیں، تو request too long: 400 vs 413, context window and max_tokens اس پر تفصیل سے بات کرتا ہے۔

اس کی لاگت کتنی ہوگی؟#

اب بجٹ۔ ایک عام آئٹم لیں، اسے گنیں، اور ضرب دیں۔ فرض کریں آپ 5,000 آرڈر ای میلز کی درجہ بندی کرتے ہیں۔ آپ ایک نمائندہ ای میل گنتے ہیں اور تقریباً 800 ان پٹ ٹوکنز ملتے ہیں، اور آپ لیبل اور ایک مختصر وجہ کو 200 آؤٹ پٹ ٹوکنز پر محدود کرتے ہیں۔ مجموعے: 5,000 × 800 = 4,000,000 ان پٹ ٹوکنز اور 5,000 × 200 = 1,000,000 آؤٹ پٹ ٹوکنز۔

نیچے دیا گیا جدول بالکل اسی کام کی قیمت لائیو ریٹس پر لگاتا ہے، ان پٹ اور آؤٹ پٹ کو ملا کر گنا جاتا ہے:

ماڈل فی درخواست 5,000 درخواستیں OpenRouter، 5,000 درخواستیں
GLM-5.3-Flash $0.000024 $0.12 $0.217
DeepSeek-V4-Flash $0.000032 $0.16 $0.42
MiniMax-M2.7 $0.00007 $0.35 $4.20

فی درخواست 800 ان پٹ اور 200 آؤٹ پٹ ٹوکنز۔ فی 1M ٹوکنز کی قیمتیں موجودہ ہیں اور ہمارے ٹیرف کے ساتھ تبدیل ہوتی ہیں؛ OpenRouter کالم اسی ورک لوڈ کے لیے حوالہ جاتی قیمتیں دکھاتا ہے۔

مجموعی طور پر، ان پٹ اور آؤٹ پٹ کو ملا کر گننے پر، ان ماڈلز کے لیے CheapTokens کا کالم OpenRouter سے سستا ہے۔ تینوں اعداد کو اپنی گنتی سے بدل دیں اور آپ کے پاس پہلی درخواست سے پہلے بجٹ موجود ہوگا۔ بل کے دونوں پہلوؤں کے فرق کے لیے، input vs output tokens: what an AI API bills you for دیکھیں، اور حقیقی پیمائش شدہ مثالوں کے لیے how many tokens an API request uses۔ موجودہ قیمتیں ہمیشہ pricing page پر ہوتی ہیں۔

متن سے اصل usage گنتی تک تخمینے کا بہاؤ
آف لائن تخمینہ لگائیں، ونڈو کی حفاظت کریں، بھیجیں، پھر usage سے موازنہ کریں۔

تخمینے کا usage سے موازنہ کریں#

تخمینہ کسی اور کے ٹوکنائزر کے بارے میں ایک اندازہ ہے، اس لیے اسے ایک بار جوابی کلید سے جانچ لیں۔ ہر جواب میں ایک usage فیلڈ ہوتی ہے، اور usage.prompt_tokens وہ ہے جو API نے آپ کے ان پٹ کے لیے گنا۔ دونوں اعداد کو ساتھ رکھیں اور تقسیم کریں۔

قدم بہ قدم

موازنہ چلائیں

سیٹ اپ

پیکیجز انسٹال کریں اور کلید کو ایک ماحولیاتی متغیر میں رکھیں۔ اسے کبھی اسکرپٹ میں پیسٹ نہ کریں۔

bash
pip install tiktoken openai
export CHEAPTOKENS_API_KEY='your-key-here'

اسکرپٹ چلائیں

اسے compare.py کے طور پر محفوظ کریں۔ یہ مقامی طور پر گنتا ہے، درخواست https://api.cheaptokens.dev/v1 کو بھیجتا ہے، اور دونوں اعداد پرنٹ کرتا ہے۔ ماڈل آئی ڈی CheapTokens ماڈل فہرست سے مکمل والی ہے، کیونکہ مختصر نام قبول نہیں کیے جاتے۔

python
import os
import tiktoken
from openai import OpenAI

MODEL = 'deepseek-ai/DeepSeek-V4-Flash-0731'
enc = tiktoken.get_encoding('o200k_base')
messages = [{'role': 'user',
             'content': 'Classify this email as order, refund or other: Hi, my parcel from last Tuesday has not arrived yet.'}]

estimate = sum(len(enc.encode(m['content'])) for m in messages)

client = OpenAI(base_url='https://api.cheaptokens.dev/v1',
                api_key=os.environ['CHEAPTOKENS_API_KEY'])
r = client.chat.completions.create(model=MODEL, messages=messages, max_tokens=200)

real = r.usage.prompt_tokens
print(f'estimate {estimate}, usage.prompt_tokens {real}, ratio {real / estimate:.2f}')

فرق پڑھیں

آخری لائن تین اعداد پرنٹ کرتی ہے۔ فرض کریں یہ estimate 24, usage.prompt_tokens 31, ratio 1.29 دکھاتی ہے۔ پھر بجٹ بنانے سے پہلے اپنے مستقبل کے تخمینوں کو اس تناسب سے ضرب دیں۔ اصل پرامپٹ چیٹ فارمیٹنگ میں بھی لپٹا ہوتا ہے، اس لیے اصل گنتی سادہ متن کے تخمینے سے تھوڑی زیادہ آ سکتی ہے۔ اسے ایک نہیں، چند عام پرامپٹس پر چلائیں، اور اوسط تناسب استعمال کریں۔

اس کے بعد معمول یہ ہے: مقامی طور پر تخمینہ لگائیں، ونڈو کی حفاظت کریں، بجٹ پر اپنا تناسب لاگو کریں، اور ہر جواب میں usage آپ کو ایماندار رکھے۔ اگر آپ پورے کام کا رننگ ٹوٹل بھی چاہتے ہیں، تو track AI agent token cost in Python اسی فیلڈ پر اسے بناتا ہے۔ خود کنکشن میں نئے ہیں؟ Your first API request with CheapTokens اس کا احاطہ کرتا ہے، اور docs میں باقی سب کچھ ہے۔

جوڑے ملائیں

ہر نام کو اس سے ملائیں جو یہ آپ کو بتاتا ہے

  • len(enc.encode(text))ان پٹ کے سائز کا آپ کا مقامی تخمینہ
  • usage.prompt_tokensان پٹ کا سائز جیسا API نے گنا
  • usage.completion_tokensجواب کا سائز، جو آؤٹ پٹ کی طرف قیمت پاتا ہے
  • max_tokensجواب کی لمبائی کی حد جو آپ ونڈو چیک میں محفوظ رکھتے ہیں

گننا سستا، مقامی اور چند سیکنڈ کا کام ہے۔ اسے پیسے خرچ کرنے والی کال سے پہلے کریں۔