Tokenen kontaketa
Kontatu testu baten edo eskaera oso baten tokenak bidali aurretik.
POST https://api.shannon-ai.com/v1/tokenize
POST https://api.shannon-ai.com/v1/messages/count_tokens
Bi endpointek izendatzen duzun modeloaren tokenizer-arekin kontatzen dute, eta ez da modelorik exekutatzen. Pisu irekiko modelo ostatatuak hartzen dituzte. /v1/tokenize-k testu soil bat edo Chat Completions elkarrizketa bat hartzen du. /v1/messages/count_tokens-ek Anthropic Messages formatuko eskaera bat hartzen du, hau da, Anthropic SDKak eta Claude Code-k egiten duten deia.
Kontatzea doakoa da. Dei batek zure API giltza behar du, ez du ezer kentzen zure saldotik eta ez da agertzen zure erabilera-erregistroan.
Testu bat kontatu
Bidali model eta text. Testua dagoen bezala kontatzen da, txat-formaturik gabe.
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"]) const response = await fetch("https://api.shannon-ai.com/v1/tokenize", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
text: "Hello, world",
}),
});
const { tokens } = await response.json();
console.log(tokens); curl https://api.shannon-ai.com/v1/tokenize \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
"text": "Hello, world"
}' {
"model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
"tokens": 3
} Orri honetako erantzunetako zenbakiak adibideak dira. Testu berak kontaketa desberdina ematen du beste modelo batean.
Txat-eskaera bat kontatu
Bidali model eta messages, eta tools eskaerak baditu, /v1/chat/completions-era bidaliko zenituzkeen bezala. Erantzuna sarrera osoaren tamaina da.
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"]) const 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"],
},
},
},
],
};
const response = await fetch("https://api.shannon-ai.com/v1/tokenize", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify(request),
});
const { tokens } = await response.json();
console.log(tokens); curl https://api.shannon-ai.com/v1/tokenize \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"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"]
}
}
}
]
}' {
"model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
"tokens": 164
} /v1/tokenize-ren eremuak
| Eremua | Mota | Deskribapena |
|---|---|---|
model | string | Derrigorrezkoa. Pisu irekiko modelo ostatatu baten id-a. Maiuskulak eta minuskulak berdin tratatzen dira. |
text | string | Dagoen bezala kontatzeko testu bat, txat-formaturik gabe. 4,000,000 byte arte. Bidali text edo messages; biak daudenean, text kontatzen da. |
messages | array | Txat-mezuak Chat Completions formatuan. Eskaera baten sarrera osoa balitz bezala kontatzen dira: mezu bakoitza modeloaren txat-txantiloiak inguruan jartzen duen formatuarekin. |
tools | array | Kontaketan sartzeko tresna-definizioak. messages-ekin batera erabiltzen dira. |
Erantzuna eremu hauek dituen JSON objektu bat da:
| Eremua | Mota | Deskribapena |
|---|---|---|
model | string | Kontaketa egin zaion modeloaren id-a, argitaratutako idazkeran. |
tokens | integer | text-ekin: testuaren tokenak. messages-ekin: sarrera osoaren tokenak, irudiak barne. |
Messages eskaera bat kontatu
Bidali /v1/messages-era bidaliko zenukeen gorputza: model, messages, eta system eta tools erabiltzen badituzu. Anthropic SDK ofizialek endpoint hau messages.count_tokens bidez deitzen dute.
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) import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com",
});
const count = await client.messages.countTokens({
model: "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
system: "You are a concise assistant.",
messages: [
{ role: "user", content: "Summarise the attached report." },
],
});
console.log(count.input_tokens); curl https://api.shannon-ai.com/v1/messages/count_tokens \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
"system": "You are a concise assistant.",
"messages": [
{"role": "user", "content": "Summarise the attached report."}
]
}' {
"input_tokens": 21
} /v1/messages/count_tokens-en eremuak
| Eremua | Mota | Deskribapena |
|---|---|---|
model | string | Derrigorrezkoa. Pisu irekiko modelo ostatatu baten id-a. |
messages | array | Derrigorrezkoa. Mezuak Anthropic Messages formatuan. text, image, tool_use eta tool_result blokeak kontatzen dira. |
system | string | array | Sistema-prompt-a: kate bat edo testu-blokeen array bat. |
tools | array | Tresna-definizioak name, description eta input_schema-rekin. |
Bateragarritasunerako onartzen dira, kontaketan eraginik gabe: tool_choice, max_tokens, temperature, top_p, stop_sequences, stream, thinking. Benetako eskaera baten gorputza aldatu gabe pasa dezakezu.
Erantzuna eremu hauek dituen JSON objektu bat da:
| Eremua | Mota | Deskribapena |
|---|---|---|
input_tokens | integer | Sarrera osoaren tokenak: sistema-prompt-a, mezuak, tresnak eta irudiak. |
Onartutako modeloak
Bi endpointek pisu irekiko modelo ostatatuentzat kontatzen dute. GET /v1/models-ek /v1/tokenize eta /v1/messages/count_tokens zerrendatzen ditu hauek onartzen dituen modelo bakoitzaren endpoints-en. Beste edozein model baliori, Shannon id-ak barne, 400-rekin erantzuten zaio.
DeepSeek-V4-Pro-0813-3BIT-REAPGLM-5.2-3BIT-REAPKimi-K3-3BIT-REAPNemotron3Ultra-3BIT-REAPMiniMax-M3-3BIT-REAPDeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAPKimi-K2.6-W4A16-AUTOROUND-REAPLaguna-S-2.1-W4A16-AUTOROUND-REAPinkling-W4A16-AUTOROUND-REAPMiMo-V2.5-Pro-W8A16MiMo-V2.5-W8A16Hy3-W8A16
Shannon modelo baterako, irakurri token-kopuruak erantzun baten usage objektutik.
Kontaketa nola egiten den
Modelo bakoitza bere tokenizer eta bere txat-txantiloiarekin kontatzen da. Ez da karaktere edo hitzetatik abiatutako estimaziorik erabiltzen.
| Zer kontatzen den | Araua |
|---|---|
| Testu bat | Kateak bidalitako moduan dituen tokenak. Kate huts batek 0 kontatzen du. |
| Mezuak | Mezuak eta tresnak modeloaren txat-txantiloiarekin antolatzen dira, erantzuna hasten den punturaino, eta prompt osoa kontatzen da. |
| Rolak | system, user, assistant eta tool mezuak kontatzen dira. developer system gisa kontatzen da. Edukirik eta tresna-deirik ez duen mezu batek ez du ezer gehitzen. |
| Tresna-deiak eta emaitzak | Assistant-aren aurreko txandetako tresna-deiak eta haien emaitzak kontaketaren parte dira, bi endpointetan. |
| Irudiak | Gorputzaren barruan bidalitako irudi batek (base64 edo data: URL) token bat gehitzen du 28 × 28 pixeleko adabaki bakoitzeko: ceil(width / 28) × ceil(height / 28). http(s) URL gisa emandako irudi bat ez dute endpoint hauek deskargatzen, eta 1,024 kontatzen du. |
Adibidea: 1,024 × 768 pixeleko irudi batek ceil(1024 / 28) × ceil(768 / 28) = 37 × 28 = 1,036 token kontatzen ditu.
Kontaketa eta eskaera batean kobratzen dena
Eskaera oso baten kontaketa egiten da modelo, mezu eta tresna berberekin egindako benetako eskaera baten sarrera-kontaketa egiten den modu berean. Erantzun batek zenbaki hori usage.prompt_tokens gisa jakinarazten du Chat Completions-en, usage.input_tokens gisa Responses-en, eta usage.input_tokens gehi usage.cache_read_input_tokens gisa Messages-en.
- Kontaketa cached-input deskontua aplikatu aurreko sarrera da. Benetako eskaera batek sarrera horren zati bat cache-tik irakur dezake eta zati hori cached tarifan kobratu. Prompt-cache
http(s)URL gisa emandako irudi batek 1,024 kontatzen du hemen. Benetako eskaera batek irudia deskargatzen du eta bere pixel-tamainatik kontatzen du, beraz bi zenbakiak desberdinak izan daitezke. Bidali irudia base64 gisa zenbaki bera lortzeko.- Irteera ez da kontaketaren parte. Benetako eskaera baten erantzuna irteera-token gisa kobratzen da gainera, arrazonamendua barne.
textkontaketak ez du txat-formaturik. Erabili dokumentu bat edo prompt zati bat neurtzeko, etamessagesforma eskaera bat neurtzeko.
Kontaketa kostu bihurtzeko, biderkatu modeloaren sarrera-prezioarekin 1M tokeneko. Modeloak eta prezioak
Mugak
| Muga | Balioa | Hortik gora |
|---|---|---|
text-aren luzera | 4,000,000 byte (UTF-8) | 413 eta text too long mezua |
| Eskaeraren gorputza | 32 MiB | 413 |
| Eskaera bakoitzeko | Testu bat edo elkarrizketa bat | Hainbat testu kontatzeko, bidali eskaera bat testu bakoitzeko. |
Kontaketa-deiak ez dira kontatzen minutuko 120 eskaerako mugan. Mugak eta saldoa
Erroreak
| Egoera | Mota | Mezua | Noiz |
|---|---|---|---|
400 | invalid_request_error | tokenize is available for the hosted open models; unknown model: <model> | /v1/tokenize pisu irekiko modelo ostatatu baten id ez den model batekin. |
400 | invalid_request_error | count_tokens is available for the hosted open models; unknown model: <model> | /v1/messages/count_tokens pisu irekiko modelo ostatatu baten id ez den model batekin, edo model gabe. |
400 | invalid_request_error | send `text` or `messages` | /v1/tokenize text ez messages gabe. |
401 | authentication_error | Missing authentication / Invalid API key | Ez da giltzarik bidali, edo giltza ez da baliozkoa. |
413 | invalid_request_error | text too long | text 4,000,000 byte baino luzeagoa da. 32 MiB baino gorputz bati ere 413-rekin erantzuten zaio. |
415 | invalid_request_error | Expected request with `Content-Type: application/json` | Eskaerak ez du JSON eduki-motarik. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | Derrigorrezko eremu bat falta da (model /v1/tokenize-n, messages /v1/messages/count_tokens-en) edo eremu batek mota okerra du. |
503 | api_error | token counting is temporarily unavailable for this model | Kontaketa ezin da egin modelo honetarako une honetan. Saiatu berriro geroago. |
/v1/tokenize-k erroreak OpenAI formaren arabera itzultzen ditu. /v1/messages/count_tokens-en endpointaren beraren erroreak (400 modeloarentzat, 503) Anthropic formaren arabera datoz, eta 401, 413, 415 eta 422 OpenAI formaren arabera. Irakurri lehenengo egoera-kodea, gero error.type eta error.message, bi formetan daudenak.
{
"error": {
"type": "invalid_request_error",
"message": "tokenize is available for the hosted open models; unknown model: shannon-3"
}
} {
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "count_tokens is available for the hosted open models; unknown model: shannon-3"
}
}