ការរាប់ token
រាប់ token នៃអត្ថបទ ឬនៃ request ទាំងមូលមុនពេលអ្នកផ្ញើវា។
POST https://api.shannon-ai.com/v1/tokenize
POST https://api.shannon-ai.com/v1/messages/count_tokens
endpoint ទាំងពីររាប់ដោយ tokenizer របស់ម៉ូដែលដែលអ្នកដាក់ឈ្មោះ ហើយគ្មានម៉ូដែលណាដំណើរការទេ។ ពួកវាគ្របដណ្តប់ម៉ូដែល open-weight ដែលបង្ហោះ។ /v1/tokenize ទទួលអត្ថបទធម្មតា ឬការសន្ទនា Chat Completions។ /v1/messages/count_tokens ទទួល request ក្នុងទ្រង់ទ្រាយ Anthropic Messages ដែលជាការហៅដែល Anthropic SDK និង Claude Code ធ្វើ។
ការរាប់គឺឥតគិតថ្លៃ។ ការហៅត្រូវការ API key របស់អ្នក មិនយកអ្វីពីសមតុល្យរបស់អ្នក ហើយមិនលេចក្នុង usage log របស់អ្នកទេ។
រាប់អត្ថបទ
សូមផ្ញើ 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"]) 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
} លេខក្នុងចម្លើយនៅលើទំព័រនេះគឺជាឧទាហរណ៍។ អត្ថបទដូចគ្នាផ្តល់ចំនួនរាប់ខុសគ្នាលើម៉ូដែលខុសគ្នា។
រាប់ request chat
សូមផ្ញើ model និង messages ជាមួយ tools នៅពេល request មានវា ដូចគ្នាបេះបិទនឹងអ្វីដែលអ្នកនឹងផ្ញើទៅ /v1/chat/completions។ ចម្លើយគឺជាទំហំនៃ input ទាំងមូល។
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
} បញ្ជី field របស់ /v1/tokenize
| Field | ប្រភេទ | ការពិពណ៌នា |
|---|---|---|
model | string | ចាំបាច់។ id របស់ម៉ូដែល open-weight ដែលបង្ហោះ។ អក្សរធំ និងអក្សរតូចត្រូវបានចាត់ទុកដូចគ្នា។ |
text | string | អត្ថបទដែលត្រូវរាប់ដូចដែលវាជា ដោយគ្មានទ្រង់ទ្រាយ chat។ រហូតដល់ 4,000,000 byte។ សូមផ្ញើ text ឬ messages៖ នៅពេលមានទាំងពីរ text ត្រូវបានរាប់។ |
messages | array | សារ chat ក្នុងទ្រង់ទ្រាយ Chat Completions។ ពួកវាត្រូវបានរាប់ជា input ពេញលេញនៃ request៖ រាល់សារជាមួយទ្រង់ទ្រាយដែល chat template របស់ម៉ូដែលដាក់ជុំវិញវា។ |
tools | array | និយមន័យ tool ដើម្បីបញ្ចូលក្នុងការរាប់។ ប្រើរួមជាមួយ messages។ |
ចម្លើយគឺជា JSON object ដែលមាន field ទាំងនេះ៖
| Field | ប្រភេទ | ការពិពណ៌នា |
|---|---|---|
model | string | model id ដែលការរាប់ត្រូវបានធ្វើសម្រាប់ ក្នុងការសរសេរដែលបានបោះពុម្ពផ្សាយរបស់វា។ |
tokens | integer | ជាមួយ text៖ token នៃអត្ថបទ។ ជាមួយ messages៖ token នៃ input ទាំងមូល រួមទាំងរូបភាព។ |
រាប់ request Messages
សូមផ្ញើខ្លឹមសារដែលអ្នកនឹងផ្ញើទៅ /v1/messages៖ model, messages និង system និង tools នៅពេលអ្នកប្រើវា។ Anthropic SDK ផ្លូវការហៅ 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) 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
| Field | ប្រភេទ | ការពិពណ៌នា |
|---|---|---|
model | string | ចាំបាច់។ id របស់ម៉ូដែល open-weight ដែលបង្ហោះ។ |
messages | array | ចាំបាច់។ សារក្នុងទ្រង់ទ្រាយ Anthropic Messages។ block text, image, tool_use និង tool_result ត្រូវបានរាប់។ |
system | string | array | ការណែនាំជា system prompt ដែលអាចជា string ឬជា array នៃ block អត្ថបទ។ |
tools | array | និយមន័យ tool ដែលមាន name, description និង input_schema។ |
ទទួលយកសម្រាប់ភាពត្រូវគ្នា ដោយគ្មានឥទ្ធិពលលើចំនួនរាប់៖ tool_choice, max_tokens, temperature, top_p, stop_sequences, stream, thinking។ អ្នកអាចបញ្ជូនខ្លឹមសាររបស់ request ពិតដោយមិនផ្លាស់ប្តូរ។
ចម្លើយគឺជា JSON object ដែលមាន field ទាំងនេះ៖
| Field | ប្រភេទ | ការពិពណ៌នា |
|---|---|---|
input_tokens | integer | token នៃ input ទាំងមូល៖ system prompt សារ tool និងរូបភាព។ |
ម៉ូដែលដែលគាំទ្រ
endpoint ទាំងពីររាប់សម្រាប់ម៉ូដែល open-weight ដែលបង្ហោះ។ GET /v1/models រាយ /v1/tokenize និង /v1/messages/count_tokens ក្នុង endpoints នៃម៉ូដែលនីមួយៗដែលគាំទ្រពួកវា។ តម្លៃ model ផ្សេងទៀតណាមួយ រួមទាំង Shannon id ត្រូវបានឆ្លើយដោយ 400។
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 សូមអានចំនួន token ពី object usage នៃចម្លើយ។
របៀបដែលចំនួនរាប់ត្រូវបានធ្វើ
ម៉ូដែលនីមួយៗត្រូវបានរាប់ដោយ tokenizer និង chat template ផ្ទាល់ខ្លួនរបស់វា។ គ្មានការប៉ាន់ស្មានពីតួអក្សរ ឬពាក្យត្រូវបានប្រើទេ។
| អ្វីដែលត្រូវបានរាប់ | ច្បាប់ |
|---|---|
| អត្ថបទ | token នៃ string ដូចដែលបានផ្ញើ។ string ទទេរាប់ 0។ |
| សារ | សារ និង tool ត្រូវបានរៀបចំតាម chat template ផ្ទាល់ខ្លួនរបស់ម៉ូដែល រហូតដល់ចំណុចដែលចម្លើយចាប់ផ្តើម ហើយ prompt ទាំងមូលនោះត្រូវបានរាប់។ |
| តួនាទី | សារ system, user, assistant និង tool ត្រូវបានរាប់។ developer ត្រូវបានរាប់ជា system។ សារដែលគ្មានខ្លឹមសារ និងគ្មានការហៅ tool មិនបន្ថែមអ្វីទេ។ |
| ការហៅ tool និងលទ្ធផល | ការហៅ tool នៃវេន assistant មុនៗ និងលទ្ធផលរបស់ពួកវាជាផ្នែកនៃការរាប់ លើ endpoint ទាំងពីរ។ |
| រូបភាព | រូបភាពដែលផ្ញើក្នុងខ្លឹមសារ (base64 ឬ data: URL) បន្ថែមមួយ token ក្នុងមួយ patch ទំហំ 28 × 28 pixel៖ ceil(width / 28) × ceil(height / 28)។ រូបភាពដែលផ្តល់ជា http(s) URL មិនត្រូវបានទាញយកដោយ endpoint ទាំងនេះទេ ហើយរាប់ 1,024។ |
ឧទាហរណ៍៖ រូបភាពទំហំ 1,024 × 768 pixel រាប់ ceil(1024 / 28) × ceil(768 / 28) = 37 × 28 = 1,036 token។
ចំនួនរាប់ និងអ្វីដែល request ត្រូវបានគិតថ្លៃ
ការរាប់នៃ request ទាំងមូលត្រូវបានធ្វើតាមរបៀបដូចគ្នានឹងការរាប់ input នៃ request ពិតដែលមានម៉ូដែល សារ និង tool ដូចគ្នា។ ចម្លើយរាយការណ៍លេខនោះជា usage.prompt_tokens លើ Chat Completions ជា usage.input_tokens លើ Responses និងជា usage.input_tokens បូក usage.cache_read_input_tokens លើ Messages។
- ចំនួនរាប់គឺជា input មុនការបញ្ចុះតម្លៃ input ដែលបាន cache។ request ពិតអាចអានផ្នែកខ្លះនៃ input នោះពី cache ហើយគិតថ្លៃផ្នែកនោះតាមអត្រា cached។ ការរក្សាទុក Prompt
- រូបភាពដែលផ្តល់ជា
http(s)URL រាប់ 1,024 នៅទីនេះ។ request ពិតទាញយករូបភាព ហើយរាប់វាពីទំហំជា pixel របស់វា ដូច្នេះលេខទាំងពីរអាចខុសគ្នា។ សូមផ្ញើរូបភាពជា base64 ដើម្បីទទួលបានលេខដូចគ្នា។ - Output មិនមែនជាផ្នែកនៃការរាប់ទេ។ ចម្លើយនៃ request ពិតត្រូវបានគិតថ្លៃជា output token បន្ថែមលើនោះ រួមទាំង reasoning។
- ការរាប់
textគ្មានការធ្វើទ្រង់ទ្រាយ chat ទេ។ សូមប្រើវាដើម្បីវាស់ឯកសារ ឬផ្នែកមួយនៃ prompt ហើយប្រើទម្រង់messagesដើម្បីវាស់ request។
ដើម្បីបំប្លែងចំនួនរាប់ទៅជាតម្លៃ សូមគុណវានឹងតម្លៃ input របស់ម៉ូដែលក្នុង 1M token។ ម៉ូដែល និងតម្លៃ
ដែនកំណត់
| ដែនកំណត់ | តម្លៃ | ពេលលើសពីនោះ |
|---|---|---|
ប្រវែងនៃ text | 4,000,000 byte (UTF-8) | 413 ជាមួយសារ text too long |
| ខ្លឹមសារ request | 32 MiB | 413 |
| ក្នុងមួយ request | អត្ថបទមួយ ឬការសន្ទនាមួយ | សូមផ្ញើមួយ request ក្នុងមួយអត្ថបទ ដើម្បីរាប់អត្ថបទច្រើន។ |
ការហៅរាប់មិនត្រូវបានរាប់ចូលក្នុងដែនកំណត់ 120 request ក្នុងមួយនាទីទេ។ ដែនកំណត់ និងសមតុល្យ
កំហុស
| Status | ប្រភេទ | សារ | ពេលណា |
|---|---|---|---|
400 | invalid_request_error | tokenize is available for the hosted open models; unknown model: <model> | /v1/tokenize ជាមួយ model ដែលមិនមែនជា id របស់ម៉ូដែល open-weight ដែលបង្ហោះ។ |
400 | invalid_request_error | count_tokens is available for the hosted open models; unknown model: <model> | /v1/messages/count_tokens ជាមួយ model ដែលមិនមែនជា id របស់ម៉ូដែល open-weight ដែលបង្ហោះ ឬគ្មាន model។ |
400 | invalid_request_error | send `text` or `messages` | /v1/tokenize ដែលគ្មានទាំង text ទាំង messages។ |
401 | authentication_error | Missing authentication / Invalid API key | គ្មាន key ត្រូវបានផ្ញើ ឬ key មិនត្រឹមត្រូវ។ |
413 | invalid_request_error | text too long | text វែងជាង 4,000,000 byte។ ខ្លឹមសារលើស 32 MiB ក៏ត្រូវបានឆ្លើយដោយ 413 ដែរ។ |
415 | invalid_request_error | Expected request with `Content-Type: application/json` | request មិនបានកំណត់ប្រភេទខ្លឹមសារ (content type) ជា JSON ទេ។ |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | field ចាំបាច់បាត់ (model លើ /v1/tokenize, messages លើ /v1/messages/count_tokens) ឬ field មានប្រភេទខុស។ |
503 | api_error | token counting is temporarily unavailable for this model | មិនអាចរាប់សម្រាប់ម៉ូដែលនេះបានក្នុងពេលនេះទេ។ សូមព្យាយាមម្តងទៀតនៅពេលក្រោយ។ |
/v1/tokenize ត្រឡប់ error ក្នុងរូបរាង OpenAI។ លើ /v1/messages/count_tokens error របស់ endpoint ផ្ទាល់ (400 សម្រាប់ម៉ូដែល 503) មកក្នុងរូបរាង Anthropic ហើយ 401, 413, 415 និង 422 មកក្នុងរូបរាង OpenAI។ សូមអានកូដ status ជាមុនសិន បន្ទាប់មក error.type និង error.message ដែលមានក្នុងរូបរាងទាំងពីរ។
{
"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"
}
}