सामग्रीमा जानुहोस्
टोकन गणना

टोकन गणना

टेक्स्ट वा पूरै अनुरोध पठाउनु अघि त्यसका टोकन गन्नुहोस्।

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
}

यो पेजका जवाफहरूमा भएका संख्याहरू उदाहरण हुन्। उही टेक्स्टले फरक मोडलमा फरक गणना दिन्छ।

च्याट अनुरोध गन्ने

/v1/chat/completions मा जसरी पठाउनुहुन्छ त्यसै गरी model र messages पठाउनुहोस्, अनुरोधमा tools भए तिनीसहित। जवाफ पूरै इनपुटको आकार हो।

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 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 आवश्यक। होस्ट गरिएको ओपन-वेट मोडल 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 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> होस्ट गरिएको ओपन-वेट id नभएको model सहित /v1/tokenize।
400 invalid_request_error count_tokens is available for the hosted open models; unknown model: <model> होस्ट गरिएको ओपन-वेट 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"
  }
}