مواد پر جائیں
ٹوکن گنتی

ٹوکن گنتی

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

POST https://api.shannon-ai.com/v1/tokenize

POST https://api.shannon-ai.com/v1/messages/count_tokens

دونوں اینڈ پوائنٹس اس ماڈل کے ٹوکنائزر سے گنتی کرتے ہیں جس کا آپ نام دیں، اور کوئی ماڈل نہیں چلتا۔ یہ ہوسٹڈ اوپن ویٹ ماڈلز کے لیے ہیں۔ /v1/tokenize سادہ متن یا Chat Completions کی گفتگو لیتا ہے۔ /v1/messages/count_tokens Anthropic Messages فارمیٹ کی درخواست لیتا ہے، یعنی وہی کال جو Anthropic SDK اور Claude Code کرتے ہیں۔

گنتی مفت ہے۔ کال کو آپ کی API کلید چاہیے، آپ کے بیلنس سے کچھ نہیں لیتی اور آپ کے usage لاگ میں نظر نہیں آتی۔

متن کی گنتی

model اور text بھیجیں۔ متن جیسا ہے ویسا ہی گنا جاتا ہے، اس کے گرد چیٹ فارمیٹنگ کے بغیر۔

import requests

response = requests.post(
    "https://api.shannon-ai.com/v1/tokenize",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
        "model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
        "text": "Hello, world",
    },
)
print(response.json()["tokens"])
200 جواب
{
  "model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
  "tokens": 3
}

اس صفحے کے جوابات میں اعداد مثالیں ہیں۔ وہی متن مختلف ماڈل پر مختلف گنتی دیتا ہے۔

چیٹ درخواست کی گنتی

model اور messages بھیجیں، اور اگر درخواست میں ٹولز ہوں تو tools بھی، بالکل ویسے جیسے آپ انہیں /v1/chat/completions کو بھیجتے۔ جواب پورے ان پٹ کا سائز ہے۔

import requests

request = {
    "model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
    "messages": [
        {"role": "system", "content": "You are a concise assistant."},
        {"role": "user", "content": "What is the weather in Paris?"},
    ],
    "tools": [
        {
            "type": "function",
            "function": {
                "name": "get_weather",
                "description": "Current weather for a city",
                "parameters": {
                    "type": "object",
                    "properties": {"city": {"type": "string"}},
                    "required": ["city"],
                },
            },
        }
    ],
}

response = requests.post(
    "https://api.shannon-ai.com/v1/tokenize",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json=request,
)
print(response.json()["tokens"])
200 جواب
{
  "model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
  "tokens": 164
}

/v1/tokenize کے فیلڈز

فیلڈ قسم تفصیل
model string لازمی۔ ہوسٹڈ اوپن ویٹ ماڈل کا id۔ بڑے اور چھوٹے حروف میں فرق نہیں کیا جاتا۔
text string ایسا متن جو چیٹ فارمیٹنگ کے بغیر جیسا ہے ویسا گنا جائے۔ زیادہ سے زیادہ 4,000,000 بائٹس۔ text یا messages بھیجیں؛ دونوں ہوں تو text گنا جاتا ہے۔
messages array Chat Completions فارمیٹ میں چیٹ پیغامات۔ انہیں درخواست کے پورے ان پٹ کے طور پر گنا جاتا ہے: ہر پیغام اس فارمیٹنگ کے ساتھ جو ماڈل کا چیٹ ٹیمپلیٹ اس کے گرد لگاتا ہے۔
tools array ٹول کی تعریفیں جو گنتی میں شامل ہوں۔ messages کے ساتھ استعمال ہوتی ہیں۔

جواب ایک JSON آبجیکٹ ہے جس کے فیلڈز یہ ہیں:

فیلڈ قسم تفصیل
model string وہ ماڈل id جس کے لیے گنتی کی گئی، اپنی شائع شدہ ہجے میں۔
tokens integer text کے ساتھ: متن کے ٹوکنز۔ messages کے ساتھ: تصاویر سمیت پورے ان پٹ کے ٹوکنز۔

Messages درخواست کی گنتی

وہی باڈی بھیجیں جو آپ /v1/messages کو بھیجتے: model، messages، اور system اور tools جب آپ انہیں استعمال کریں۔ سرکاری Anthropic SDKs اس endpoint کو messages.count_tokens کے ذریعے کال کرتے ہیں۔

import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com",
)

count = client.messages.count_tokens(
    model="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
    system="You are a concise assistant.",
    messages=[
        {"role": "user", "content": "Summarise the attached report."}
    ],
)
print(count.input_tokens)
200 جواب
{
  "input_tokens": 21
}

/v1/messages/count_tokens کے درخواستی فیلڈز

فیلڈ قسم تفصیل
model string لازمی۔ ہوسٹڈ اوپن ویٹ ماڈل id۔
messages array لازمی۔ Anthropic Messages فارمیٹ میں پیغامات۔ text، image، tool_use اور tool_result بلاکس گنے جاتے ہیں۔
system string | array سسٹم پرامپٹ: ایک سٹرنگ یا ٹیکسٹ بلاکس کی ارے۔
tools array name، description اور input_schema والی ٹول تعریفیں۔

ہم آہنگی کے لیے قبول، گنتی پر کسی اثر کے بغیر: tool_choice, max_tokens, temperature, top_p, stop_sequences, stream, thinking۔ آپ اصل درخواست کی باڈی بغیر تبدیلی کے دے سکتے ہیں۔

جواب ایک JSON آبجیکٹ ہے جس کے فیلڈز یہ ہیں:

فیلڈ قسم تفصیل
input_tokens integer پورے ان پٹ کے ٹوکنز: سسٹم پرامپٹ، پیغامات، ٹولز اور تصاویر۔

معاون ماڈلز

دونوں اینڈ پوائنٹس ہوسٹڈ اوپن ویٹ ماڈلز کے لیے گنتی کرتے ہیں۔ GET /v1/models ہر اس ماڈل کے endpoints میں /v1/tokenize اور /v1/messages/count_tokens درج کرتا ہے جو انہیں سپورٹ کرتا ہے۔ کسی بھی دوسری model قدر پر، Shannon کے ids سمیت، 400 ملتا ہے۔

  • DeepSeek-V4-Pro-0813-3BIT-REAP
  • GLM-5.2-3BIT-REAP
  • Kimi-K3-3BIT-REAP
  • Nemotron3Ultra-3BIT-REAP
  • MiniMax-M3-3BIT-REAP
  • DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP
  • Kimi-K2.6-W4A16-AUTOROUND-REAP
  • Laguna-S-2.1-W4A16-AUTOROUND-REAP
  • inkling-W4A16-AUTOROUND-REAP
  • MiMo-V2.5-Pro-W8A16
  • MiMo-V2.5-W8A16
  • Hy3-W8A16

Shannon ماڈل کے ٹوکنز کی تعداد جواب کے usage آبجیکٹ سے پڑھیں۔

گنتی کیسے کی جاتی ہے

ہر ماڈل کی گنتی اس کے اپنے ٹوکنائزر اور اپنے چیٹ ٹیمپلیٹ سے کی جاتی ہے۔ حروف یا الفاظ کی بنیاد پر کوئی اندازہ استعمال نہیں ہوتا۔

کیا گنا جاتا ہے اصول
متن سٹرنگ کے ٹوکنز، جیسی وہ بھیجی گئی ہو۔ خالی سٹرنگ کے 0 گنے جاتے ہیں۔
پیغامات پیغامات اور ٹولز کو ماڈل کے اپنے چیٹ ٹیمپلیٹ کے مطابق ترتیب دیا جاتا ہے، اس مقام تک جہاں سے جواب شروع ہوتا ہے، اور وہ پورا پرامپٹ گنا جاتا ہے۔
رولز system، user، assistant اور tool پیغامات گنے جاتے ہیں۔ developer کو system کی طرح گنا جاتا ہے۔ جس پیغام میں نہ مواد ہو نہ ٹول کال، وہ کچھ شامل نہیں کرتا۔
ٹول کالز اور نتائج پچھلے assistant مراحل کی ٹول کالز اور ان کے نتائج دونوں اینڈ پوائنٹس پر گنتی کا حصہ ہیں۔
تصاویر باڈی کے اندر بھیجی گئی تصویر (base64 یا data: URL) ہر 28 × 28 پکسل کے پیچ پر ایک ٹوکن شامل کرتی ہے: ceil(width / 28) × ceil(height / 28)۔ http(s) URL کے طور پر دی گئی تصویر یہ اینڈ پوائنٹس ڈاؤن لوڈ نہیں کرتے اور اسے 1,024 گنا جاتا ہے۔

مثال: 1,024 × 768 پکسل کی تصویر کے ceil(1024 / 28) × ceil(768 / 28) = 37 × 28 = 1,036 ٹوکنز گنے جاتے ہیں۔

گنتی اور درخواست پر کیا چارج لگتا ہے

پوری درخواست کی گنتی اسی طرح کی جاتی ہے جیسے اسی ماڈل، پیغامات اور ٹولز والی اصل درخواست کی ان پٹ گنتی۔ جواب یہ عدد Chat Completions پر usage.prompt_tokens کے طور پر، Responses پر usage.input_tokens کے طور پر، اور Messages پر usage.input_tokens جمع usage.cache_read_input_tokens کے طور پر رپورٹ کرتا ہے۔

  • گنتی کیشڈ ان پٹ کی رعایت سے پہلے کا ان پٹ ہے۔ اصل درخواست اس ان پٹ کا کچھ حصہ کیش سے پڑھ سکتی ہے اور اس حصے کا بل کیشڈ نرخ پر بنا سکتی ہے۔ پرامپٹ کیشنگ
  • http(s) URL کے طور پر دی گئی تصویر یہاں 1,024 گنی جاتی ہے۔ اصل درخواست تصویر ڈاؤن لوڈ کرتی ہے اور اسے پکسلز میں اس کے سائز سے گنتی ہے، اس لیے دونوں اعداد مختلف ہو سکتے ہیں۔ وہی عدد پانے کے لیے تصویر base64 کے طور پر بھیجیں۔
  • آؤٹ پٹ گنتی کا حصہ نہیں۔ اصل درخواست کے جواب کا بل اوپر سے آؤٹ پٹ ٹوکنز کے طور پر بنتا ہے، reasoning سمیت۔
  • text کی گنتی میں چیٹ فارمیٹنگ نہیں ہوتی۔ اسے دستاویز یا پرامپٹ کا حصہ ناپنے کے لیے استعمال کریں، اور درخواست ناپنے کے لیے messages کی شکل۔

گنتی کو لاگت میں بدلنے کے لیے اسے ماڈل کی فی 1M ٹوکنز ان پٹ قیمت سے ضرب دیں۔ ماڈلز اور قیمتیں

حدود

حد قدر اس سے اوپر
text کی لمبائی 4,000,000 بائٹس (UTF-8) پیغام text too long کے ساتھ 413
درخواست کی باڈی 32 MiB 413
فی درخواست ایک متن یا ایک گفتگو کئی متن گننے کے لیے ہر متن کی الگ درخواست بھیجیں۔

گنتی کی کالز فی منٹ 120 درخواستوں کی حد میں شمار نہیں ہوتیں۔ حدود اور بیلنس

ایررز

اسٹیٹس قسم پیغام کب
400 invalid_request_error tokenize is available for the hosted open models; unknown model: <model> /v1/tokenize ایسے model کے ساتھ جو ہوسٹڈ اوپن ویٹ id نہیں ہے۔
400 invalid_request_error count_tokens is available for the hosted open models; unknown model: <model> /v1/messages/count_tokens ایسے model کے ساتھ جو ہوسٹڈ اوپن ویٹ id نہیں ہے، یا model کے بغیر۔
400 invalid_request_error send `text` or `messages` /v1/tokenize نہ text کے ساتھ اور نہ messages کے ساتھ۔
401 authentication_error Missing authentication / Invalid API key کوئی کلید نہیں بھیجی گئی، یا کلید درست نہیں۔
413 invalid_request_error text too long text 4,000,000 بائٹس سے لمبا ہے۔ 32 MiB سے بڑی باڈی کا جواب بھی 413 سے دیا جاتا ہے۔
415 invalid_request_error Expected request with `Content-Type: application/json` درخواست میں JSON content type نہیں ہے۔
422 invalid_request_error Failed to deserialize the JSON body into the target type: … کوئی لازمی فیلڈ غائب ہے (/v1/tokenize پر model، /v1/messages/count_tokens پر messages) یا کسی فیلڈ کی قسم غلط ہے۔
503 api_error token counting is temporarily unavailable for this model اس وقت اس ماڈل کے لیے گنتی نہیں ہو سکتی۔ بعد میں دوبارہ کوشش کریں۔

/v1/tokenize ایررز OpenAI کی شکل میں لوٹاتا ہے۔ /v1/messages/count_tokens پر خود endpoint کے ایررز (ماڈل کے لیے 400، 503) Anthropic کی شکل میں آتے ہیں، اور 401، 413، 415 اور 422 OpenAI کی شکل میں آتے ہیں۔ پہلے اسٹیٹس کوڈ پڑھیں، پھر error.type اور error.message، جو دونوں شکلوں میں موجود ہیں۔

400 /v1/tokenize
{
  "error": {
    "type": "invalid_request_error",
    "message": "tokenize is available for the hosted open models; unknown model: shannon-3"
  }
}
400 /v1/messages/count_tokens
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "count_tokens is available for the hosted open models; unknown model: shannon-3"
  }
}