Μετάβαση στο περιεχόμενο
Καταμέτρηση tokens

Καταμέτρηση tokens

Μετρήστε τα tokens ενός κειμένου ή ενός ολόκληρου αιτήματος πριν το στείλετε.

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

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

Και τα δύο endpoints μετρούν με τον tokenizer του μοντέλου που ονομάζετε, και δεν τρέχει κανένα μοντέλο. Καλύπτουν τα φιλοξενούμενα μοντέλα ανοιχτών βαρών. Το /v1/tokenize δέχεται απλό κείμενο ή μια συνομιλία Chat Completions. Το /v1/messages/count_tokens δέχεται αίτημα στη μορφή Anthropic Messages, που είναι η κλήση που κάνουν το SDK της Anthropic και το Claude Code.

Η μέτρηση είναι δωρεάν. Μια κλήση χρειάζεται το κλειδί API σας, δεν αφαιρεί τίποτα από το υπόλοιπό σας και δεν εμφανίζεται στο ιστορικό χρήσης σας.

Μέτρηση ενός κειμένου

Στείλτε model και text. Το κείμενο μετράται ως έχει, χωρίς μορφοποίηση chat γύρω του.

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
}

Οι αριθμοί στις απαντήσεις αυτής της σελίδας είναι παραδείγματα. Το ίδιο κείμενο δίνει διαφορετική μέτρηση σε διαφορετικό μοντέλο.

Μέτρηση ενός αιτήματος chat

Στείλτε 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 Ένα κείμενο που μετράται ως έχει, χωρίς μορφοποίηση chat. Έως 4,000,000 bytes. Στείλτε text ή messages· όταν υπάρχουν και τα δύο, μετράται το text.
messages array Μηνύματα chat στη μορφή Chat Completions. Μετρώνται ως η πλήρης είσοδος ενός αιτήματος: κάθε μήνυμα με τη μορφοποίηση που βάζει γύρω του το πρότυπο chat του μοντέλου.
tools array Ορισμοί εργαλείων που θα συμπεριληφθούν στη μέτρηση. Χρησιμοποιούνται μαζί με το messages.

Η απάντηση είναι αντικείμενο JSON με αυτά τα πεδία:

Πεδίο Τύπος Περιγραφή
model string Το id μοντέλου για το οποίο έγινε η μέτρηση, στη δημοσιευμένη γραφή του.
tokens integer Με text: τα tokens του κειμένου. Με messages: τα tokens ολόκληρης της εισόδου, με τις εικόνες.

Μέτρηση ενός αιτήματος Messages

Στείλτε το σώμα που θα στέλνατε στο /v1/messages: model, messages, και system και tools όταν τα χρησιμοποιείτε. Τα επίσημα SDK της Anthropic καλούν αυτό το 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
}

Πεδία αιτήματος του endpoint /v1/messages/count_tokens

Πεδίο Τύπος Περιγραφή
model string Υποχρεωτικό. Ένα id φιλοξενούμενου μοντέλου ανοιχτών βαρών.
messages array Υποχρεωτικό. Μηνύματα στη μορφή Anthropic Messages. Μετρώνται τα blocks text, image, tool_use και tool_result.
system string | array Το system prompt: string ή πίνακας από blocks κειμένου.
tools array Ορισμοί εργαλείων με name, description και input_schema.

Γίνονται δεκτά για συμβατότητα, χωρίς επίδραση στη μέτρηση: tool_choice, max_tokens, temperature, top_p, stop_sequences, stream, thinking. Μπορείτε να περάσετε το σώμα ενός πραγματικού αιτήματος αμετάβλητο.

Η απάντηση είναι αντικείμενο JSON με αυτά τα πεδία:

Πεδίο Τύπος Περιγραφή
input_tokens integer Τα tokens ολόκληρης της εισόδου: system prompt, μηνύματα, εργαλεία και εικόνες.

Υποστηριζόμενα μοντέλα

Και τα δύο endpoints μετρούν για τα φιλοξενούμενα μοντέλα ανοιχτών βαρών. Το GET /v1/models απαριθμεί τα /v1/tokenize και /v1/messages/count_tokens στα endpoints κάθε μοντέλου που τα υποστηρίζει. Οποιαδήποτε άλλη τιμή model, και τα ids Shannon, απαντάται με 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, διαβάστε τον αριθμό tokens από το αντικείμενο usage μιας απάντησης.

Πώς γίνεται η μέτρηση

Κάθε μοντέλο μετράται με τον δικό του tokenizer και το δικό του πρότυπο chat. Δεν χρησιμοποιείται εκτίμηση από χαρακτήρες ή λέξεις.

Τι μετράται Κανόνας
Ένα κείμενο Τα tokens του string όπως στάλθηκε. Ένα κενό string μετρά 0.
Μηνύματα Τα μηνύματα και τα εργαλεία τοποθετούνται με το δικό του πρότυπο chat του μοντέλου, μέχρι το σημείο όπου αρχίζει η απάντηση, και μετράται ολόκληρο αυτό το prompt.
Ρόλοι Μετρώνται τα μηνύματα system, user, assistant και tool. Το developer μετράται ως system. Ένα μήνυμα χωρίς περιεχόμενο και χωρίς κλήση εργαλείου δεν προσθέτει τίποτα.
Κλήσεις και αποτελέσματα εργαλείων Οι κλήσεις εργαλείων προηγούμενων γύρων του assistant και τα αποτελέσματά τους είναι μέρος της μέτρησης, και στα δύο endpoints.
Εικόνες Μια εικόνα που στέλνεται μέσα στο σώμα (base64 ή data: URL) προσθέτει ένα token ανά τμήμα 28 × 28 pixel: ceil(width / 28) × ceil(height / 28). Μια εικόνα που δίνεται ως URL http(s) δεν κατεβαίνει από αυτά τα endpoints και μετρά 1,024.

Παράδειγμα: μια εικόνα 1,024 × 768 pixels μετρά ceil(1024 / 28) × ceil(768 / 28) = 37 × 28 = 1,036 tokens.

Η μέτρηση και τι χρεώνεται ένα αίτημα

Η μέτρηση ολόκληρου αιτήματος γίνεται με τον ίδιο τρόπο όπως η μέτρηση εισόδου ενός πραγματικού αιτήματος με το ίδιο μοντέλο, μηνύματα και εργαλεία. Μια απάντηση αναφέρει αυτόν τον αριθμό ως usage.prompt_tokens στα Chat Completions, ως usage.input_tokens στο Responses, και ως usage.input_tokens συν usage.cache_read_input_tokens στο Messages.

  • Η μέτρηση είναι η είσοδος πριν από την έκπτωση της cached εισόδου. Ένα πραγματικό αίτημα μπορεί να διαβάσει μέρος αυτής της εισόδου από το cache και να χρεώσει εκείνο το μέρος με την τιμή cached. Caching ερωτημάτων
  • Μια εικόνα που δίνεται ως URL http(s) μετρά εδώ 1,024. Ένα πραγματικό αίτημα κατεβάζει την εικόνα και τη μετρά από το μέγεθός της σε pixels, οπότε οι δύο αριθμοί μπορεί να διαφέρουν. Στείλτε την εικόνα ως base64 για να πάρετε τον ίδιο αριθμό.
  • Η έξοδος δεν ανήκει στη μέτρηση. Η απάντηση ενός πραγματικού αιτήματος χρεώνεται επιπλέον ως tokens εξόδου, με τον συλλογισμό συμπεριλαμβανόμενο.
  • Η μέτρηση text δεν έχει μορφοποίηση chat. Χρησιμοποιήστε την για να μετρήσετε ένα έγγραφο ή ένα τμήμα prompt, και τη μορφή messages για να μετρήσετε ένα αίτημα.

Για να μετατρέψετε μια μέτρηση σε κόστος, πολλαπλασιάστε την με την τιμή εισόδου του μοντέλου ανά 1M tokens. Μοντέλα & τιμές

Όρια

Όριο Τιμή Πάνω από αυτό
Μήκος του text 4,000,000 bytes (UTF-8) 413 με το μήνυμα text too long
Σώμα αιτήματος 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 bytes. Ένα σώμα πάνω από 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: … Λείπει ένα υποχρεωτικό πεδίο (model στο /v1/tokenize, messages στο /v1/messages/count_tokens) ή ένα πεδίο έχει λάθος τύπο.
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"
  }
}