Anthropic formati
POST /v1/messages Anthropic Messages formatidagi so'rovni qabul qiladi va shu formatda javob beradi, streaming bilan yoki usiz. Uni Anthropic SDK bilan va unga asoslangan vositalar, masalan Claude Code bilan ishlating: base URL'ni o'rnating, Shannon API kalitingizdan foydalaning va Shannon model id'sini ko'rsating.
POST https://api.shannon-ai.com/v1/messages
Anthropic SDK'ni Shannon base URL'iga yo'naltiring. SDK /v1/messages'ni o'zi qo'shadi va kalitingizni x-api-key sarlavhasida yuboradi.
import anthropic
client = anthropic.Anthropic(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com",
)
message = client.messages.create(
model="shannon-3",
max_tokens=1024,
messages=[{"role": "user", "content": "Say hello in one sentence."}],
)
for block in message.content:
if block.type == "text":
print(block.text) import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com",
});
const message = await client.messages.create({
model: "shannon-3",
max_tokens: 1024,
messages: [{ role: "user", content: "Say hello in one sentence." }],
});
for (const block of message.content) {
if (block.type === "text") console.log(block.text);
} curl https://api.shannon-ai.com/v1/messages \
-H "x-api-key: YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{
"model": "shannon-3",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Say hello in one sentence."}]
}' Javob — content'i bloklar ro'yxati bo'lgan xabar. Bloklarni type bo'yicha toping: model mulohaza qilgan bo'lsa, birinchi blok thinking, matn undan keyin keladi.
{
"id": "msg_5f0c1e7a9b3d4c62a8e1f07d2b46c9a3",
"type": "message",
"role": "assistant",
"model": "shannon-3",
"content": [
{
"type": "thinking",
"thinking": "The user wants a greeting in one sentence. Keep it short and friendly."
},
{
"type": "text",
"text": "Hello, it is good to meet you."
}
],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 1184,
"output_tokens": 46
}
} Sarlavhalar
| Sarlavha | Qiymat | Tavsif |
|---|---|---|
x-api-key | YOUR_API_KEY | API kalitingiz. Uning o'rniga Authorization: Bearer YOUR_API_KEY ham qabul qilinadi. |
content-type | application/json | Majburiy. |
anthropic-version | 2023-06-01 | Qabul qilinadi, majburiy emas. Anthropic SDK 2023-06-01 yuboradi; qiymatidan qat'i nazar, javob formati bir xil. |
anthropic-beta | Qabul qilinadi, majburiy emas. | |
x-request-id | Ixtiyoriy. So'rov uchun o'zingizning id'ingiz. U javobda o'zgarishsiz qaytadi; bo'lmasa javobda 12 ta o'n oltilik belgidan iborat id bo'ladi. |
So'rov maydonlari
Faqat messages majburiy. Qo'llaydi ustuni maydon javobni o'zgartiradigan modellarni nomlaydi. Xostingdagi open-weight modellar — model ro'yxatidagi o'n ikkita id; Shannon 3 oilasi — shannon-3, shannon-3-pro, shannon-3.1 va shannon-3.1-pro. Modellar va narxlar
| Maydon | Tur | Standart | Tavsif | Qo'llaydi |
|---|---|---|---|---|
model | string | shannon-1.6-lite | Model ro'yxatidagi Shannon model id'si. Uni har bir so'rov bilan yuboring. Moslashtirishda harf registri hisobga olinmaydi. Boshqa har qanday nom 400 unknown model qaytaradi, shuning uchun o'z model nomlarini yuboradigan vositani Shannon id'siga sozlash kerak. | Barcha modellar |
messages | array | Majburiy. Suhbat, eng eski xabar birinchi, user va assistant rollari bilan. Quyida Xabarlar va kontent bloklariga qarang. | Barcha modellar | |
system | string | array | Model uchun ko'rsatmalar: satr yoki matn bloklari massivi. Quyida System promptga qarang. | Xostingdagi open-weight modellar, shannon-1.6-*, shannon-2-*, shannon-coder-1 | |
max_tokens | integer | 4096 | Javobning yuqori chegarasi, token bilan. Bu endpointda ixtiyoriy; Anthropic SDK uni doim yuboradi. 1 dan 65,536 gacha oraliqdan tashqaridagi qiymat shu oraliqqa keltiriladi. Shuningdek, so'rov bajarilayotganda balansingizdan ajratib qo'yiladigan miqdor ham shu. | Xostingdagi open-weight modellar, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
stream | boolean | false | true javobni server-sent events sifatida yuboradi. Quyida Streamingga qarang. | Barcha modellar |
temperature | number | Sampling temperaturasi. Xostingdagi open-weight modellarda qiymatlar 0 va 2 oralig'ida saqlanadi. | Xostingdagi open-weight modellar, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | Nucleus sampling. | Xostingdagi open-weight modellar | |
stop_sequences | array | 4 tagacha satr. Javob paydo bo'lgan birinchisidan oldin tugaydi. stop_reason end_turn bo'lib qoladi. | Xostingdagi open-weight modellar | |
tools | array | Model chaqirishi mumkin bo'lgan tool'lar, har biri {"name", "description", "input_schema"} shaklida. Quyida Tool'larga qarang. | Barcha modellar | |
tool_choice | object | {"type": "auto"} modelga o'zi qaror qilishga imkon beradi, {"type": "any"} uni tool chaqirishga majbur qiladi, {"type": "tool", "name": "…"} esa aynan o'sha tool'ni chaqirishga majbur qiladi. | Xostingdagi open-weight modellar | |
thinking | object | Model javob berishdan oldin qanchalik mulohaza qilishi. Quyida Thinkingga qarang. | Xostingdagi open-weight modellar | |
web_search | boolean | false | Formatga Shannon qo'shimchasi: true modelga javob berishdan oldin veb'da qidirishga imkon beradi. | shannon-1.6-*, shannon-2-*, Shannon 3 oilasi |
max_tokens bo'lmasa qiymat 4,096, shannon-coder-1 da esa 65,536.
Mavjud mijoz kodi o'zgarishsiz ishlashi uchun metadata, top_k, service_tier va bloklardagi cache_control belgilari qabul qilinadi. Ular javobni o'zgartirmaydi; xostingdagi open-weight modellarda prompt keshlash avtomatik.
Sxemaga mos JSON javob Chat Completions'da response_format bilan, Responses'da text.format bilan so'raladi. Tuzilgan chiqishlar
System prompt va thinking bilan so'rov
Bu so'rov system prompt, thinking byudjeti, temperatura va stop ketma-ketligini yuboradi. U xostingdagi open-weight modeldan foydalanadi, u hammasini qo'llaydi.
import anthropic
client = anthropic.Anthropic(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com",
)
message = client.messages.create(
model="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
max_tokens=4096,
system="You are a physics teacher. Answer in two sentences.",
thinking={"type": "enabled", "budget_tokens": 2048},
temperature=0.3,
stop_sequences=["\n\n"],
messages=[{"role": "user", "content": "Why is the sky blue?"}],
)
for block in message.content:
if block.type == "thinking":
print("reasoning:", block.thinking)
elif block.type == "text":
print("answer:", block.text)
print(message.usage) import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com",
});
const message = await client.messages.create({
model: "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
max_tokens: 4096,
system: "You are a physics teacher. Answer in two sentences.",
thinking: { type: "enabled", budget_tokens: 2048 },
temperature: 0.3,
stop_sequences: ["\n\n"],
messages: [{ role: "user", content: "Why is the sky blue?" }],
});
for (const block of message.content) {
if (block.type === "thinking") console.log("reasoning:", block.thinking);
if (block.type === "text") console.log("answer:", block.text);
}
console.log(message.usage); curl https://api.shannon-ai.com/v1/messages \
-H "x-api-key: YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{
"model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
"max_tokens": 4096,
"system": "You are a physics teacher. Answer in two sentences.",
"thinking": {"type": "enabled", "budget_tokens": 2048},
"temperature": 0.3,
"stop_sequences": ["\n\n"],
"messages": [{"role": "user", "content": "Why is the sky blue?"}]
}' Xostingdagi open-weight modellarda usage prompt keshidan o'qilgan tokenlarni boshqa kirish tokenlaridan alohida ko'rsatadi.
{
"usage": {
"input_tokens": 31,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"output_tokens": 62
}
} System prompt
system — satr yoki [{"type": "text", "text": "…"}] shaklidagi matn bloklari massivi. Bloklar matnlari qator uzilishi bilan birlashtiriladi.
Uni xostingdagi open-weight modellar, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro va shannon-coder-1 qo'llaydi. Shannon 3 oilasi id'sida bajarilishi shart bo'lgan ko'rsatmalarni user xabariga qo'ying.
Xabarlar va kontent bloklari
Xabarda role (user yoki assistant) va content bo'ladi. content — satr yoki bloklar massivi.
| Blok | Tavsif | Mavjud |
|---|---|---|
{"type": "text", "text": "…"} | Matn. | Barcha modellar |
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}{"type": "image", "source": {"type": "url", "url": "…"}} | user xabaridagi rasm, base64 yoki URL orqali. | Shannon 3 oilasi, shannon-1.6-lite, shannon-1.6-pro va rasm kirishini ko'rsatgan xostingdagi open-weight modellar |
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | user xabaridagi hujjat (PDF, Word, PowerPoint yoki Excel), base64 yoki URL orqali. | Shannon 3 oilasi |
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} | assistant xabarida: model oldingi javobda qilgan tool chaqiruvi. | Barcha modellar |
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} | user xabarida: o'sha chaqiruvning natijasi. content — satr yoki matn bloklari ro'yxati. | Barcha modellar |
Oldingi javobning content'ini o'zgartirmay qaytarib yuborishingiz mumkin: text va tool_use bloklari o'qiladi, thinking bloklari o'tkazib yuboriladi.
Shannon darajalarida rasmlar va hujjatlar oxirgi user xabaridan o'qiladi. O'lchamlar va limitlar alohida sahifada. Rasmlar va fayllar
Thinking
Xostingdagi open-weight modellar thinking'ni mulohaza darajasiga moslaydi. Maydon bo'lmasa daraja yuqori bo'ladi.
| Shakl | budget_tokens | Ta'siri |
|---|---|---|
{"type": "disabled"} | Mulohazasiz. Javobda thinking bloki yo'q. | |
{"type": "enabled", "budget_tokens": 2048} | ≤ 2,048 | Past daraja. |
{"type": "enabled", "budget_tokens": 8192} | ≤ 8,192 | O'rta daraja. |
{"type": "enabled", "budget_tokens": 16000} | > 8,192 | Yuqori daraja. |
Mulohaza qiladigan model o'z mulohazasini matndan oldin {"type": "thinking", "thinking": "…"} bloki sifatida qaytaradi. Mulohaza qiladigan Shannon darajalari ham uni yuboradi.
Darajalar o'z sahifasida tasvirlangan. Mulohaza darajasi
Tool'lar
Tool — kodingiz bajaradigan funksiya. Har birini name, description va input_schema bilan tasvirlang. Model tool xohlasa, javobda tool_use bloki bo'ladi va stop_reason tool_use bo'ladi.
tools ichidagi tool ta'rifi:
[
{
"name": "get_weather",
"description": "Current weather for a city.",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": [
"city"
]
}
}
] Uni chaqiradigan javobning content'i:
[
{
"type": "text",
"text": ""
},
{
"type": "tool_use",
"id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
"name": "get_weather",
"input": {
"city": "Paris"
}
}
] Tool'ni bajaring, so'ng chaqiruv va messages'ga qo'shilgan tool_result bloki bilan so'rovni qayta yuboring:
[
{
"role": "user",
"content": "What is the weather in Paris?"
},
{
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
"name": "get_weather",
"input": {
"city": "Paris"
}
}
]
},
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
"content": "{\"temperature_c\": 18, \"sky\": \"cloudy\"}"
}
]
}
] tool_choice
| Shakl | Ta'siri | Qo'llaydi |
|---|---|---|
{"type": "auto"} | Model tool chaqirish-chaqirmaslikni o'zi hal qiladi. Bu standart. | Barcha modellar |
{"type": "any"} | Model tool'lardan birini chaqirishi shart. | Xostingdagi open-weight modellar |
{"type": "tool", "name": "…"} | Model nomi berilgan tool'ni chaqirishi shart. | Xostingdagi open-weight modellar |
Faqat input_schema'li tool'lar o'qiladi. Veb-qidiruv bu endpointda tool emas: web_search maydonini o'rnating.
Tool sikli to'liq o'z sahifasida tasvirlangan. Funksiya chaqirish
Javob
| Maydon | Tur | Tavsif | Yuboruvchi |
|---|---|---|---|
id | string | msg_ va undan keyin 32 ta o'n oltilik belgi. | Barcha modellar |
type | string | Doim message. | Barcha modellar |
role | string | Doim assistant. | Barcha modellar |
model | string | Javob bergan modelning kanonik id'si. | Barcha modellar |
content | array | Javob bloklari shu tartibda: model mulohaza qilgan bo'lsa thinking, text, so'ng har bir tool chaqiruvi uchun bitta tool_use. | Barcha modellar |
stop_reason | string | Javob nima uchun tugadi. Quyidagi qiymatlarga qarang. | Barcha modellar |
usage | object | input_tokens va output_tokens. | Barcha modellar |
sources | array | Faqat web_search: true bilan yuborilgan va qidiruvi nimadir topgan so'rovda: modelga berilgan natijalar, har biri index, title va url bilan. Javobdagi [1] index 1 bo'lgan yozuvdir. Streamda message_delta eventi bilan keladi. | shannon-1.6-*, shannon-2-*, Shannon 3 oilasi |
usage.cache_read_input_tokens | integer | cache_read_input_tokens — promptning keshdan o'qilgan qismi; input_tokens — qolgani. cache_creation_input_tokens doim 0. | Xostingdagi open-weight modellar |
Javob bloklari
| Blok | Tavsif |
|---|---|
{"type": "thinking", "thinking": "…"} | Modelning mulohazasi. signature a'zosi yo'q. |
{"type": "text", "text": "…"} | Javob matni. Javob tool chaqiruvi bo'lsa, u bo'sh bo'lishi mumkin. |
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} | Tool chaqiruvi. input — JSON obyekti. Natijani o'sha id bilan qaytaring. |
stop_reason
| stop_reason | Tavsif | Yuboruvchi |
|---|---|---|
end_turn | Model javobini tugatdi yoki stop_sequences'laringizdan biri paydo bo'ldi. | Barcha modellar |
tool_use | Javobda bir yoki bir nechta tool chaqiruvi bor. | Barcha modellar |
max_tokens | Javob chiqish limitida uzildi. | Shannon 3 oilasi, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, oqimlarda |
Streaming
Server-sent events uchun stream'ni true qiling. Har bir freymda hodisa nomi bilan event: satri va nomni type'da takrorlaydigan JSON obyekti bilan data: satri bor. Anthropic SDK'ning stream yordamchilari bu hodisalarni sizning o'rningizga o'qiydi:
import anthropic
client = anthropic.Anthropic(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com",
)
with client.messages.stream(
model="shannon-3",
max_tokens=1024,
messages=[{"role": "user", "content": "Explain server-sent events in three sentences."}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
message = stream.get_final_message()
print()
print(message.stop_reason, message.usage) import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com",
});
const stream = client.messages.stream({
model: "shannon-3",
max_tokens: 1024,
messages: [{ role: "user", content: "Explain server-sent events in three sentences." }],
});
stream.on("text", (text) => process.stdout.write(text));
const message = await stream.finalMessage();
console.log("\n", message.stop_reason, message.usage); curl -N https://api.shannon-ai.com/v1/messages \
-H "x-api-key: YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{
"model": "shannon-3",
"max_tokens": 1024,
"stream": true,
"messages": [{"role": "user", "content": "Explain server-sent events in three sentences."}]
}' Hodisalar kelish tartibida:
| Hodisa | Ma'lumot | Qachon |
|---|---|---|
message_start | message | Doim birinchi. message id, rol, model, bo'sh content va noldan boshlanadigan usage'ni o'z ichiga oladi. |
content_block_start | index, content_block | Blok ochiladi. content_block — bo'sh text yoki thinking bloki, yoki id va name'i bor tool_use bloki. |
content_block_delta | index, delta {"type": "thinking_delta", "thinking"} | thinking bloki uchun mulohazaning bir bo'lagi. |
content_block_delta | index, delta {"type": "text_delta", "text"} | text bloki uchun javobning bir bo'lagi. |
content_block_delta | index, delta {"type": "input_json_delta", "partial_json"} | tool_use bloki uchun tool chaqiruvi argumentlari, bitta deltada to'liq. |
content_block_stop | index | Shu index'dagi blok tugallandi. |
message_delta | delta {stop_reason, stop_sequence}, usage | Javob oxiri: delta.stop_reason va so'rovning usage'i. |
message_stop | Doim oxirgi. |
Bloklar index bo'yicha ochilish tartibida raqamlanadi va keyingisi ochilishidan oldin bitta blok tugallanadi. Har bir blokni raqami bo'yicha emas, turi bo'yicha o'qing: oqim avval bo'sh text blokini, so'ng thinking blokini ochishi va javobni keyingi text blokida berishi mumkin.
event: message_start
data: {"type":"message_start","message":{"id":"msg_5f0c…","type":"message","role":"assistant","model":"shannon-3","content":[],"usage":{"input_tokens":0,"output_tokens":0}}}
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: content_block_start
data: {"type":"content_block_start","index":1,"content_block":{"type":"thinking","thinking":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":1,"delta":{"type":"thinking_delta","thinking":"Three sentences: what it is, how it is framed, why it is used."}}
event: ping
data: {"type": "ping"}
event: content_block_stop
data: {"type":"content_block_stop","index":1}
event: content_block_start
data: {"type":"content_block_start","index":2,"content_block":{"type":"text","text":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":"Server-sent events let a server push text over one HTTP reply."}}
event: content_block_stop
data: {"type":"content_block_stop","index":2}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"input_tokens":1190,"output_tokens":84}}
event: message_stop
data: {"type":"message_stop"} Keep-alive
| Yuboruvchi | Tavsif |
|---|---|
Shannon 3 oilasi, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | Ma'lumoti {"type": "ping"} bo'lgan ping hodisasi, har 15 soniyada. |
| Xostingdagi open-weight modellar | : keepalive izoh satri, model ishlayotgan paytda har 15 soniyada. |
Muvaffaqiyatsiz oqim
Oqim boshlangandan keyingi nosozlik — xato javobi bilan bir xil tanali error hodisasi: {"type": "error", "error": {"type", "message"}}. Yakunlovchi hodisalar, message_delta va message_stop, baribir ergashadi. Javobni muvaffaqiyatsiz deb hisoblang va so'rovni qayta yuboring.
Xatolar
Xatolar Anthropic xato tanasidan foydalanadi: type — error, error obyekti esa type va message'ni o'z ichiga oladi. Jadvalda bu endpoint eng ko'p qaytaradigan xatolar keltirilgan. To'liq ro'yxat, nimani qayta urinish kerakligi bilan, alohida sahifada. Xatolarni boshqarish
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Holat | Tur | Xabar | Qachon |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | API kalit yuborilmagan yoki kalit noma'lum yoxud bekor qilingan. |
400 | invalid_request_error | unknown model: <id> | model Shannon model id'si emas. |
400 | invalid_request_error | No user message provided | Shannon darajalari: so'rovda foydalanuvchi matni ham, tools ham yo'q. |
400 | invalid_request_error | <id> does not accept image input | Rasm kirishi yo'q xostingdagi open-weight modelga rasm yuborilgan. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | messages yo'q yoki biror maydon noto'g'ri JSON turida. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | max_tokens balansingizda qolgan miqdordan katta. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | Flood himoyasi: hisobingizdan bir daqiqada 120 tadan ortiq so'rov. |
429 | rate_limit_error | Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan | shannon-coder-1: rejangizning joriy 4 soatlik oynadagi Shannon Coder so'rovlari ishlatib bo'lingan. |
500 | server_error | The model backend failed to answer. Please retry. | Model javob yaratmadi. So'rovni qayta yuboring. |
502 | api_error | The model backend failed to answer. Please retry. | Model javob yaratmadi. So'rovni qayta yuboring. |
Tokenlarni sanash
POST /v1/messages/count_tokens xabar so'roviniki bilan bir xil tanani (model, system, messages, tools) qabul qiladi va {"input_tokens": n} qaytaradi: so'rov uchun hisoblanadigan kirish tokenlari soni. U xostingdagi open-weight modellar uchun hisoblaydi, bepul va flood himoyasida hisobga olinmaydi.
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 physics teacher. Answer in two sentences.",
messages=[{"role": "user", "content": "Why is the sky blue?"}],
)
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 physics teacher. Answer in two sentences.",
messages: [{ role: "user", content: "Why is the sky blue?" }],
});
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 physics teacher. Answer in two sentences.",
"messages": [{"role": "user", "content": "Why is the sky blue?"}]
}'
# {"input_tokens": 31} Sanash alohida sahifaga ega: oddiy matn endpointi va limitlar bilan. Tokenlarni sanash