Anthropic
POST /v1/messages Anthropic Messages форматындагы сурамды кабыл алып, ошол эле форматта жооп берет, стриминг менен же стримингсиз. Аны Anthropic SDK менен жана ага негизделген куралдар менен, мисалы Claude Code менен колдонуңуз: base URL'ди коюңуз, Shannon API ачкычыңызды колдонуңуз жана Shannon модель id'син көрсөтүңүз.
POST https://api.shannon-ai.com/v1/messages
Anthropic SDK'ны Shannon base URL'ине багыттаңыз. SDK /v1/messages кошот жана ачкычыңызды x-api-key башында жөнөтөт.
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."}]
}' Жооп — content блоктор тизмеси болгон билдирүү. Блокторду type боюнча табыңыз: модель reasoning жүргүзсө, биринчи блок thinking, текст андан кийин келет.
{
"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
}
} Баштар
| Баш | Мааниси | Сүрөттөмө |
|---|---|---|
x-api-key | YOUR_API_KEY | API ачкычыңыз. Анын ордуна Authorization: Bearer YOUR_API_KEY да кабыл алынат. |
content-type | application/json | Милдеттүү. |
anthropic-version | 2023-06-01 | Кабыл алынат, милдеттүү эмес. Anthropic SDK 2023-06-01 жөнөтөт; маани кандай болсо да, жооптун форматы бирдей. |
anthropic-beta | Кабыл алынат, милдеттүү эмес. | |
x-request-id | Милдеттүү эмес. Сурам үчүн өзүңүздүн id'ңиз. Ал жоопто өзгөрүүсүз кайтып келет; болбосо жоопто 12 он алтылык белгиден турган id болот. |
Сурам талаалары
Милдеттүү талаа — messages гана. Колдонгон мамычасы талаа жоопту өзгөрткөн моделдерди атайт. Хостингдеги ачык салмактуу моделдер — модель тизмесиндеги он эки id; Shannon 3 үй-бүлөсү — shannon-3, shannon-3-pro, shannon-3.1 жана shannon-3.1-pro. Моделдер жана баалар
| Талаа | Түрү | Демейки | Сүрөттөмө | Колдонгон |
|---|---|---|---|---|
model | string | shannon-1.6-lite | Модель тизмесиндеги Shannon модель id'си. Аны ар бир сурам менен жөнөтүңүз. Регистр эске алынбайт. Башка ар кандай ат 400 unknown model кайтарат, андыктан өз модель аттарын жөнөткөн курал Shannon id'сине коюлушу керек. | Бардык моделдер |
messages | array | Милдеттүү. Сүйлөшүү, эң эски билдирүүдөн баштап, user жана assistant ролдору менен. Төмөндөгү «Билдирүүлөр жана мазмун блоктору» бөлүмүн караңыз. | Бардык моделдер | |
system | string | array | Модель үчүн нускамалар: сап же текст блокторунун массиви. Төмөндөгү «Система промпту» бөлүмүн караңыз. | Хостингдеги ачык салмактуу моделдер, shannon-1.6-*, shannon-2-*, shannon-coder-1 | |
max_tokens | integer | 4096 | Жооптун токендердеги жогорку чеги. Бул endpoint'те милдеттүү эмес; Anthropic SDK аны ар дайым жөнөтөт. 1ден 65,536го чейинки диапазондон тышкаркы маани ошол диапазонго келтирилет. Сурам иштеп жатканда балансыңыздан бөлүп коюлган сумма да ушул. | Хостингдеги ачык салмактуу моделдер, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
stream | boolean | false | true жоопту server-sent events катары жөнөтөт. Төмөндөгү «Стриминг» бөлүмүн караңыз. | Бардык моделдер |
temperature | number | Сэмплинг температурасы. Хостингдеги ачык салмактуу моделдерде маанилер 0 менен 2 ортосунда кармалат. | Хостингдеги ачык салмактуу моделдер, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | Nucleus сэмплинги. | Хостингдеги ачык салмактуу моделдер | |
stop_sequences | array | 4кө чейин сап. Жооп пайда болгон биринчисинен мурун аяктайт. stop_reason end_turn бойдон калат. | Хостингдеги ачык салмактуу моделдер | |
tools | array | Модель чакыра турган куралдар, ар бири {"name", "description", "input_schema"} түрүндө. Төмөндөгү «Куралдар» бөлүмүн караңыз. | Бардык моделдер | |
tool_choice | object | {"type": "auto"} моделге өзү чечүүгө мүмкүнчүлүк берет, {"type": "any"} аны курал чакырууга мажбурлайт, {"type": "tool", "name": "…"} аны так ошол куралды чакырууга мажбурлайт. | Хостингдеги ачык салмактуу моделдер | |
thinking | object | Модель жооп берерден мурун канчалык reasoning жүргүзөрү. Төмөндөгү «Ойлонуу» бөлүмүн караңыз. | Хостингдеги ачык салмактуу моделдер | |
web_search | boolean | false | Форматка Shannon кошкон мүмкүнчүлүк: true модельге жооп берерден мурун веб-издөөгө уруксат берет. | shannon-1.6-*, shannon-2-*, Shannon 3 үй-бүлөсү |
max_tokens болбосо, мааниси 4,096, ал эми shannon-coder-1де 65,536.
Блоктордогу metadata, top_k, service_tier жана cache_control белгилери кабыл алынат, ошондо учурдагы клиент коду өзгөрүүсүз иштейт. Алар жоопту өзгөртпөйт; хостингдеги ачык салмактуу моделдерде промпт кэштөө автоматтык.
Схемага ылайык JSON жооп Chat Completions'та response_format менен, Responses'та text.format менен суралат. Түзүмдүү чыгыштар
Система промпту жана ойлонуу менен сурам
Бул сурам система промптун, ойлонуу бюджетин, температураны жана токтотуу ырааттуулугун жөнөтөт. Ал хостингдеги ачык салмактуу модельди колдонот, ал булардын баарын колдонот.
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?"}]
}' Хостингдеги ачык салмактуу моделдерде usage промпт кэшинен окулган токендерди башка кириш токендеринен өзүнчө көрсөтөт.
{
"usage": {
"input_tokens": 31,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"output_tokens": 62
}
} Система промпту
system — сап же [{"type": "text", "text": "…"}] түрүндөгү текст блокторунун массиви. Блоктордун тексттери сап үзгүчтөр менен бириктирилет.
Аны хостингдеги ачык салмактуу моделдер, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro жана shannon-coder-1 колдонот. Shannon 3 үй-бүлөсүнүн id'си менен сөзсүз аткарылышы керек нускамаларды колдонуучу билдирүүсүнө жазыңыз.
Билдирүүлөр жана мазмун блоктору
Билдирүүдө role (user же assistant) жана content бар. content — сап же блоктор массиви.
| Блок | Сүрөттөмө | Жеткиликтүү |
|---|---|---|
{"type": "text", "text": "…"} | Текст. | Бардык моделдер |
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}{"type": "image", "source": {"type": "url", "url": "…"}} | user билдирүүсүндөгү сүрөт, base64 же URL түрүндө. | Shannon 3 үй-бүлөсү, shannon-1.6-lite, shannon-1.6-pro жана сүрөттү киришке колдой турган хостингдеги ачык салмактуу моделдер |
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | user билдирүүсүндөгү документ (PDF, Word, PowerPoint же Excel), base64 же URL түрүндө. | Shannon 3 үй-бүлөсү |
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} | assistant билдирүүсүндө: модель мурунку жоопто жасаган курал чалуусу. | Бардык моделдер |
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} | user билдирүүсүндө: ошол чалуунун натыйжасы. content — сап же текст блокторунун тизмеси. | Бардык моделдер |
Мурунку жооптун content бөлүгүн өзгөртпөй кайра жөнөтсөңүз болот: text жана tool_use блоктору окулат, thinking блоктору өткөрүлүп жиберилет.
Shannon деңгээлдеринде сүрөттөр менен документтер акыркы user билдирүүсүнөн окулат. Өлчөмдөр жана чектөөлөр өз бетинде. Сүрөттөр жана файлдар
Ойлонуу
Хостингдеги ачык салмактуу моделдер thinking талаасын reasoning аракет деңгээлине которот. Талаа болбосо, аракет деңгээли жогору.
| Формасы | budget_tokens | Таасири |
|---|---|---|
{"type": "disabled"} | Reasoning жок. Жоопто thinking блок болбойт. | |
{"type": "enabled", "budget_tokens": 2048} | ≤ 2,048 | Төмөнкү аракет. |
{"type": "enabled", "budget_tokens": 8192} | ≤ 8,192 | Орточо аракет. |
{"type": "enabled", "budget_tokens": 16000} | > 8,192 | Жогорку аракет. |
Reasoning жүргүзгөн модель аны текст алдында {"type": "thinking", "thinking": "…"} блогу катары кайтарат. Reasoning жүргүзгөн Shannon деңгээлдери да аны жөнөтөт.
Аракет деңгээлдери өз бетинде сүрөттөлгөн. Reasoning аракет деңгээли
Куралдар
Курал — кодуңуз аткарган функция. Ар бирин name, description жана input_schema менен сүрөттөңүз. Модель курал каалаганда, жоопто tool_use блок болот жана stop_reason tool_use болот.
tools ичиндеги курал аныктамасы:
[
{
"name": "get_weather",
"description": "Current weather for a city.",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": [
"city"
]
}
}
] Аны чакырган жооптун content'и:
[
{
"type": "text",
"text": ""
},
{
"type": "tool_use",
"id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
"name": "get_weather",
"input": {
"city": "Paris"
}
}
] Куралды аткарыңыз, андан кийин чалууну жана tool_result блогун messages'ке кошуп, сурамды кайра жөнөтүңүз:
[
{
"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
| Формасы | Таасири | Колдонгон |
|---|---|---|
{"type": "auto"} | Курал чакыруу-чакырбоону модель өзү чечет. Бул демейки. | Бардык моделдер |
{"type": "any"} | Модель куралдардын бирин чакырышы керек. | Хостингдеги ачык салмактуу моделдер |
{"type": "tool", "name": "…"} | Модель аталган куралды чакырышы керек. | Хостингдеги ачык салмактуу моделдер |
Жалаң input_schema бар куралдар гана окулат. Веб-издөө бул endpoint'те курал эмес: web_search талаасын коюңуз.
Курал цикли өз бетинде толук сүрөттөлгөн. Функция чакыруу
Жооп
| Талаа | Түрү | Сүрөттөмө | Жөнөткөн |
|---|---|---|---|
id | string | msg_ жана андан кийин 32 он алтылык белги. | Бардык моделдер |
type | string | Ар дайым message. | Бардык моделдер |
role | string | Ар дайым assistant. | Бардык моделдер |
model | string | Жооп берген модельдин канондук id'си. | Бардык моделдер |
content | array | Жооптун блоктору ушул тартипте: модель reasoning жүргүзсө thinking, text, андан кийин ар бир курал чалуусуна бирден tool_use. | Бардык моделдер |
stop_reason | string | Жооп эмне үчүн аяктады. Төмөндөгү маанилерди караңыз. | Бардык моделдер |
usage | object | input_tokens жана output_tokens. | Бардык моделдер |
sources | array | Издөөсү бир нерсе тапкан, web_search: true менен жөнөтүлгөн сурамда гана: моделге берилген натыйжалар, ар бири index, title жана url менен. Жооптогу [1] — index 1 болгон жазуу. Стримде ал message_delta окуясы менен келет. | shannon-1.6-*, shannon-2-*, Shannon 3 үй-бүлөсү |
usage.cache_read_input_tokens | integer | cache_read_input_tokens — промптун кэштен окулган бөлүгү; input_tokens — калган бөлүгү. cache_creation_input_tokens ар дайым 0. | Хостингдеги ачык салмактуу моделдер |
Жооп блоктору
| Блок | Сүрөттөмө |
|---|---|
{"type": "thinking", "thinking": "…"} | Модельдин reasoning'и. signature мүчөсү жок. |
{"type": "text", "text": "…"} | Жооптун тексти. Жооп курал чалуусу болгондо бош болушу мүмкүн. |
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} | Курал чалуусу. input — JSON объект. Натыйжаны ошол эле id менен кайра жөнөтүңүз. |
stop_reason
| stop_reason | Сүрөттөмө | Жөнөткөн |
|---|---|---|
end_turn | Модель жообун аяктады, же stop_sequences ырааттуулуктарыңыздын бири пайда болду. | Бардык моделдер |
tool_use | Жоопто бир же бир нече курал чалуусу бар. | Бардык моделдер |
max_tokens | Жооп чыгыш чегинде үзүлдү. | Shannon 3 үй-бүлөсү, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, стримдерде |
Стриминг
Server-sent events үчүн stream параметрин true кылыңыз. Ар бир фреймде окуянын аты бар event: сабы жана ошол атты type талаасында кайталаган JSON объекти бар data: сабы болот. Anthropic SDK'нын стрим жардамчылары бул окуяларды сиз үчүн окуйт:
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."}]
}' Окуялар келүү тартибинде:
| Окуя | Маалымат | Качан |
|---|---|---|
message_start | message | Ар дайым биринчи. message id, ролду, модельди, бош content'ти жана нөлдөн башталган usage'ти камтыйт. |
content_block_start | index, content_block | Блок ачылат. content_block — бош text же thinking блок, же id жана name менен tool_use блок. |
content_block_delta | index, delta {"type": "thinking_delta", "thinking"} | thinking блогу үчүн reasoning'дин бир бөлүгү. |
content_block_delta | index, delta {"type": "text_delta", "text"} | text блогу үчүн жооптун бир бөлүгү. |
content_block_delta | index, delta {"type": "input_json_delta", "partial_json"} | tool_use блогу үчүн курал чалуусунун аргументтери, бир дельтада толук. |
content_block_stop | index | Ушул index менен блок аяктады. |
message_delta | delta {stop_reason, stop_sequence}, usage | Жооптун аягы: delta.stop_reason жана сурамдын usage'и. |
message_stop | Ар дайым акыркы. |
Блоктор ачылган тартибинде index боюнча номерленет жана бир блок аяктагандан кийин гана кийинкиси ачылат. Ар бир блокту номери боюнча эмес, түрү боюнча окуңуз: стрим алгач бош text блокту, андан кийин thinking блокту ачып, жоопту кийинки text блокто бериши мүмкүн.
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
| Жөнөткөн | Сүрөттөмө |
|---|---|
Shannon 3 үй-бүлөсү, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | {"type": "ping"} маалыматы бар ping окуясы, ар 15 секундда. |
| Хостингдеги ачык салмактуу моделдер | Модель иштеп жатканда ар 15 секундда : keepalive комментарий сабы. |
Ката кеткен стрим
Стрим башталгандан кийинки ката — ката жоопундагыдай эле денеси бар error окуясы: {"type": "error", "error": {"type", "message"}}. Аяктоочу окуялар message_delta жана message_stop дагы эле ээрчийт. Жоопту ийгиликсиз деп эсептеп, сурамды кайра жөнөтүңүз.
Каталар
Каталар Anthropic ката денесин колдонот: type — error, ал эми error объектисинде type жана message бар. Таблицада бул endpoint көбүнчө кайтарган каталар берилген. Толук тизме жана эмнени кайра аракет кылуу керектиги өз бетинде. Ката иштетүү
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Статус | Түрү | Билдирүү | Качан |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | API ачкыч жөнөтүлгөн эмес, же ачкыч белгисиз же жокко чыгарылган. |
400 | invalid_request_error | unknown model: <id> | model Shannon модель id'си эмес. |
400 | invalid_request_error | No user message provided | Shannon деңгээлдери: сурамда колдонуучу тексти да, tools да жок. |
400 | invalid_request_error | <id> does not accept image input | Сүрөт киришин колдобогон хостингдеги ачык салмактуу моделге сүрөт жөнөтүлдү. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | messages жок, же бир талаанын JSON түрү туура эмес. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | max_tokens балансыңыздын калдыгынан чоңураак. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | Flood protection: аккаунтуңуздан бир мүнөттө 120 сурамдан ашык. |
429 | rate_limit_error | Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan | shannon-coder-1: планыңыздын учурдагы 4 сааттык терезедеги Shannon Coder чалуулары түгөндү. |
500 | server_error | The model backend failed to answer. Please retry. | Модель жооп чыгарган жок. Сурамды кайра жөнөтүңүз. |
502 | api_error | The model backend failed to answer. Please retry. | Модель жооп чыгарган жок. Сурамды кайра жөнөтүңүз. |
Токендерди саноо
POST /v1/messages/count_tokens билдирүү сурамы менен бирдей денени (model, system, messages, tools) кабыл алып, {"input_tokens": n} кайтарат: сурам үчүн эсептелчү кириш токендеринин саны. Ал хостингдеги ачык салмактуу моделдер үчүн иштейт, акысыз жана flood protection тарабынан эсептелбейт.
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} Саноонун өз бети бар, анда жөнөкөй текст endpoint'и жана чектөөлөр сүрөттөлгөн. Токен саноо