मजकुराकडे जा
टोकन मोजणी

टोकन मोजणी

मजकुराची किंवा संपूर्ण रिक्वेस्टची टोकन्स ती पाठवण्यापूर्वी मोजा.

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

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

दोन्ही एंडपॉइंट्स तुम्ही नाव दिलेल्या मॉडेलच्या टोकनायझरने मोजतात, आणि कोणतेही मॉडेल चालत नाही. ते होस्ट केलेल्या open-weight मॉडेल्सना लागू आहेत. /v1/tokenize साधा मजकूर किंवा Chat Completions संभाषण घेते. /v1/messages/count_tokens Anthropic Messages फॉरमॅटमधील रिक्वेस्ट घेते, जो कॉल Anthropic SDK आणि Claude Code करतात.

मोजणी मोफत आहे. कॉलला तुमची API की लागते, तुमच्या बॅलन्समधून काहीही घेतले जात नाही आणि ती तुमच्या वापर लॉगमध्ये दिसत नाही.

मजकूर मोजा

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 आवश्यक. होस्ट केलेल्या open-weight मॉडेलचा 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 SDK हा एंडपॉइंट 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 आवश्यक. होस्ट केलेल्या open-weight मॉडेलचा 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 संपूर्ण इनपुटची टोकन्स: सिस्टम प्रॉम्प्ट, संदेश, टूल्स आणि इमेज.

समर्थित मॉडेल्स

दोन्ही एंडपॉइंट्स होस्ट केलेल्या open-weight मॉडेल्ससाठी मोजतात. GET /v1/models ज्या मॉडेल्सना /v1/tokenize आणि /v1/messages/count_tokens चे समर्थन आहे त्यांच्या endpoints मध्ये ते दाखवते. इतर कोणत्याही model मूल्याला, Shannon id सह, 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 म्हणून मोजले जाते. मजकूर आणि टूल कॉल नसलेला संदेश काहीही जोडत नाही.
टूल कॉल्स आणि निकाल आधीच्या असिस्टंट टर्न्समधील टूल कॉल्स आणि त्यांचे निकाल दोन्ही एंडपॉइंट्सवर मोजणीचा भाग असतात.
इमेज बॉडीमध्ये पाठवलेली इमेज (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 म्हणून पाठवा.
  • आउटपुट मोजणीचा भाग नाही. खऱ्या रिक्वेस्टचे उत्तर वर आउटपुट टोकन्स म्हणून बिल केले जाते, रीझनिंगसह.
  • 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> होस्ट केलेल्या open-weight id नसलेल्या model सह /v1/tokenize.
400 invalid_request_error count_tokens is available for the hosted open models; unknown model: <model> होस्ट केलेल्या open-weight id नसलेल्या model सह, किंवा model शिवाय /v1/messages/count_tokens.
400 invalid_request_error send `text` or `messages` text किंवा messages दोन्ही नसलेले /v1/tokenize.
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 नाही.
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 वर एंडपॉइंटच्या स्वतःच्या त्रुटी (मॉडेलसाठी 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"
  }
}