Anthropic Biçimi
POST /v1/messages, Anthropic Messages biçiminde bir istek alır ve akışlı ya da akışsız aynı biçimde yanıt verir. Anthropic SDK'sı ve Claude Code gibi onun üzerine kurulu araçlarla kullanın: temel URL'yi ayarlayın, Shannon API anahtarınızı kullanın ve bir Shannon model kimliği belirtin.
POST https://api.shannon-ai.com/v1/messages
Anthropic SDK'sını Shannon temel URL'sine yönlendirin. SDK /v1/messages ekler ve anahtarınızı x-api-key başlığında gönderir.
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."}]
}' Yanıt, content alanı bir blok listesi olan bir mesajdır. Blokları type alanlarına göre bulun: model akıl yürüttüyse ilk blok thinking olur ve metin onun ardından gelir.
{
"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
}
} Başlıklar
| Başlık | Değer | Açıklama |
|---|---|---|
x-api-key | YOUR_API_KEY | API anahtarınız. Onun yerine Authorization: Bearer YOUR_API_KEY kabul edilir. |
content-type | application/json | Zorunlu. |
anthropic-version | 2023-06-01 | Kabul edilir, zorunlu değildir. Anthropic SDK'sı 2023-06-01 gönderir; değer ne olursa olsun yanıt aynı biçimdedir. |
anthropic-beta | Kabul edilir, zorunlu değildir. | |
x-request-id | İsteğe bağlı. İstek için kendi kimliğiniz. Yanıtta değişmeden geri gelir; olmadan yanıt 12 onaltılık karakterden oluşan bir kimlik taşır. |
İstek alanları
Yalnızca messages zorunludur. Uygulayan sütunu, bir alanın yanıtı değiştirdiği modelleri belirtir. Host edilen açık ağırlıklı modeller, model listesindeki on iki kimliktir; Shannon 3 ailesi shannon-3, shannon-3-pro, shannon-3.1 ve shannon-3.1-pro kimlikleridir. Modeller ve fiyatlandırma
| Alan | Tür | Varsayılan | Açıklama | Uygulayan |
|---|---|---|---|---|
model | string | shannon-1.6-lite | Model listesinden bir Shannon model kimliği. Her istekle gönderin. Eşleştirmede büyük/küçük harf ayrımı yapılmaz. Başka herhangi bir ad 400 unknown model döndürür; bu yüzden kendi model adlarını gönderen bir aracın Shannon kimliğine ayarlanması gerekir. | Tüm modeller |
messages | array | Zorunlu. Konuşma, en eski mesaj önce olmak üzere, user ve assistant rolleriyle. Aşağıdaki Mesajlar ve içerik blokları bölümüne bakın. | Tüm modeller | |
system | string | array | Model için talimatlar: bir dizge veya metin blokları dizisi. Aşağıdaki Sistem istemi bölümüne bakın. | Host edilen açık ağırlıklı modeller, shannon-1.6-*, shannon-2-*, shannon-coder-1 | |
max_tokens | integer | 4096 | Yanıtın token cinsinden üst sınırı. Bu uç noktada isteğe bağlıdır; Anthropic SDK'sı her zaman gönderir. 1 ile 65,536 dışındaki bir değer bu aralığa çekilir. Aynı zamanda istek çalışırken bakiyenizden ayrılan miktardır. | Host edilen açık ağırlıklı modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
stream | boolean | false | true, yanıtı server-sent events olarak gönderir. Aşağıdaki Streaming bölümüne bakın. | Tüm modeller |
temperature | number | Örnekleme sıcaklığı. Host edilen açık ağırlıklı modellerde değerler 0 ile 2 arasında tutulur. | Host edilen açık ağırlıklı modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | Nucleus örnekleme. | Host edilen açık ağırlıklı modeller | |
stop_sequences | array | En fazla 4 dizge. Yanıt, görünen ilkinden önce biter. stop_reason değeri end_turn olarak kalır. | Host edilen açık ağırlıklı modeller | |
tools | array | Modelin çağırabileceği araçlar; her biri {"name", "description", "input_schema"} olarak. Aşağıdaki Araçlar bölümüne bakın. | Tüm modeller | |
tool_choice | object | {"type": "auto"} kararı modele bırakır, {"type": "any"} bir aracı çağırmasını sağlar, {"type": "tool", "name": "…"} o aracı çağırmasını sağlar. | Host edilen açık ağırlıklı modeller | |
thinking | object | Modelin yanıtlamadan önce ne kadar akıl yürüttüğü. Aşağıdaki Düşünme bölümüne bakın. | Host edilen açık ağırlıklı modeller | |
web_search | boolean | false | Biçime bir Shannon eklentisi: true, modelin yanıtlamadan önce web'de arama yapmasına izin verir. | shannon-1.6-*, shannon-2-*, Shannon 3 ailesi |
max_tokens olmadan değer 4,096'dır, shannon-coder-1 üzerinde 65,536'dır.
Bloklardaki metadata, top_k, service_tier ve cache_control işaretleri, mevcut istemci kodu değişmeden çalışsın diye kabul edilir. Yanıtı değiştirmezler; host edilen açık ağırlıklı modellerde istem önbelleğe alma otomatiktir.
Bir şemaya göre JSON yanıtı, Chat Completions'ta response_format ile, Responses'ta text.format ile istenir. Yapılandırılmış Çıktılar
Sistem istemi ve düşünme içeren bir istek
Bu istek bir sistem istemi, bir düşünme bütçesi, bir sıcaklık ve bir durdurma dizisi gönderir. Hepsini uygulayan, host edilen bir açık ağırlıklı model kullanır.
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?"}]
}' Host edilen açık ağırlıklı modellerde usage, istem önbelleğinden okunan token'ları diğer girdi token'larından ayrı bildirir.
{
"usage": {
"input_tokens": 31,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"output_tokens": 62
}
} Sistem istemi
system bir dizge veya [{"type": "text", "text": "…"}] biçiminde bir metin blokları dizisidir. Blokların metinleri satır sonuyla birleştirilir.
Host edilen açık ağırlıklı modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro ve shannon-coder-1 tarafından uygulanır. Bir Shannon 3 ailesi kimliğiyle, geçerli olması gereken talimatları kullanıcı mesajına koyun.
Mesajlar ve içerik blokları
Bir mesajın user veya assistant olan bir role alanı ve bir content alanı vardır. content bir dizge veya blok dizisidir.
| Blok | Açıklama | Kullanılabildiği yerler |
|---|---|---|
{"type": "text", "text": "…"} | Metin. | Tüm modeller |
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}{"type": "image", "source": {"type": "url", "url": "…"}} | Bir user mesajında base64 olarak veya URL ile bir görsel. | Shannon 3 ailesi, shannon-1.6-lite, shannon-1.6-pro ve görsel girdisi olan host edilen açık ağırlıklı modeller |
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | Bir user mesajında base64 olarak veya URL ile bir doküman (PDF, Word, PowerPoint veya Excel). | Shannon 3 ailesi |
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} | Bir assistant mesajında: modelin önceki bir yanıtta yaptığı araç çağrısı. | Tüm modeller |
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} | Bir user mesajında: o çağrının sonucu. content bir dizge veya metin blokları listesidir. | Tüm modeller |
Önceki bir yanıtın content alanını olduğu gibi geri gönderebilirsiniz: text ve tool_use blokları okunur, thinking blokları atlanır.
Shannon katmanlarında görseller ve dokümanlar son user mesajından okunur. Boyutların ve sınırların kendi sayfası var. Görseller ve dosyalar
Düşünme
Host edilen açık ağırlıklı modeller thinking alanını bir akıl yürütme çabasına eşler. Alan olmadan çaba yüksektir.
| Biçim | budget_tokens | Etki |
|---|---|---|
{"type": "disabled"} | Akıl yürütme yok. Yanıtta thinking bloğu bulunmaz. | |
{"type": "enabled", "budget_tokens": 2048} | ≤ 2,048 | Düşük çaba. |
{"type": "enabled", "budget_tokens": 8192} | ≤ 8,192 | Orta çaba. |
{"type": "enabled", "budget_tokens": 16000} | > 8,192 | Yüksek çaba. |
Akıl yürüten bir model, akıl yürütmesini metnin önünde {"type": "thinking", "thinking": "…"} bloğu olarak döndürür. Akıl yürüten Shannon katmanları da bunu gönderir.
Çabalar kendi sayfalarında açıklanır. Akıl yürütme çabası
Araçlar
Araç, kodunuzun çalıştırdığı bir fonksiyondur. Her birini bir name, bir description ve bir input_schema ile tanımlayın. Model bir araç istediğinde yanıt bir tool_use bloğu içerir ve stop_reason değeri tool_use olur.
tools içinde bir araç tanımı:
[
{
"name": "get_weather",
"description": "Current weather for a city.",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": [
"city"
]
}
}
] Aracı çağıran bir yanıtın content alanı:
[
{
"type": "text",
"text": ""
},
{
"type": "tool_use",
"id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
"name": "get_weather",
"input": {
"city": "Paris"
}
}
] Aracı çalıştırın, sonra çağrıyı ve messages alanına eklenmiş bir tool_result bloğunu içeren isteği tekrar gönderin:
[
{
"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
| Biçim | Etki | Uygulayan |
|---|---|---|
{"type": "auto"} | Model bir aracı çağırıp çağırmayacağına kendisi karar verir. Varsayılan budur. | Tüm modeller |
{"type": "any"} | Model araçlardan birini çağırmak zorundadır. | Host edilen açık ağırlıklı modeller |
{"type": "tool", "name": "…"} | Model adı verilen aracı çağırmak zorundadır. | Host edilen açık ağırlıklı modeller |
Yalnızca input_schema alanı olan araçlar okunur. Web araması bu uç noktada bir araç değildir: web_search alanını ayarlayın.
Araç döngüsü kendi sayfasında ayrıntılı olarak açıklanır. Fonksiyon Çağırma
Yanıt
| Alan | Tür | Açıklama | Gönderen |
|---|---|---|---|
id | string | msg_ ve ardından 32 onaltılık karakter. | Tüm modeller |
type | string | Her zaman message. | Tüm modeller |
role | string | Her zaman assistant. | Tüm modeller |
model | string | Yanıtı veren modelin kanonik kimliği. | Tüm modeller |
content | array | Yanıtın blokları, şu sırayla: model akıl yürüttüyse thinking, sonra text, ardından her araç çağrısı için bir tool_use. | Tüm modeller |
stop_reason | string | Yanıtın neden bittiği. Aşağıdaki değerlere bakın. | Tüm modeller |
usage | object | input_tokens ve output_tokens. | Tüm modeller |
sources | array | Yalnızca araması bir şey bulmuş, web_search: true içeren isteklerde bulunur: modele verilen sonuçlar, her biri index, title ve url ile. Yanıttaki [1], index değeri 1 olan girdidir. Akışta message_delta olayıyla gelir. | shannon-1.6-*, shannon-2-*, Shannon 3 ailesi |
usage.cache_read_input_tokens | integer | cache_read_input_tokens, isteğin önbellekten okunan kısmıdır; input_tokens geri kalanıdır. cache_creation_input_tokens her zaman 0'dır. | Host edilen açık ağırlıklı modeller |
Yanıt blokları
| Blok | Açıklama |
|---|---|
{"type": "thinking", "thinking": "…"} | Modelin akıl yürütmesi. signature üyesi yoktur. |
{"type": "text", "text": "…"} | Yanıt metni. Yanıt bir araç çağrısıysa boş olabilir. |
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} | Bir araç çağrısı. input bir JSON nesnesidir. Sonucu aynı id ile geri gönderin. |
stop_reason
| stop_reason | Açıklama | Gönderen |
|---|---|---|
end_turn | Model yanıtını tamamladı veya stop_sequences dizilerinizden biri göründü. | Tüm modeller |
tool_use | Yanıt bir veya daha fazla araç çağrısı içerir. | Tüm modeller |
max_tokens | Yanıt çıktı sınırında kesildi. | Shannon 3 ailesi, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, akışlarda |
Streaming
server-sent events için stream değerini true yapın. Her çerçevede olayın adını taşıyan bir event: satırı ve adı type içinde tekrarlayan bir JSON nesnesi içeren bir data: satırı bulunur. Anthropic SDK'sının akış yardımcıları bu olayları sizin için okur:
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."}]
}' Olaylar, geliş sırasıyla:
| Olay | Veri | Ne zaman |
|---|---|---|
message_start | message | Her zaman ilk olay. message; kimliği, rolü, modeli, boş bir content alanını ve sıfırdan başlayan bir usage alanını içerir. |
content_block_start | index, content_block | Bir blok açılır. content_block, boş bir text veya thinking bloğu ya da id ve name alanlarıyla bir tool_use bloğudur. |
content_block_delta | index, delta {"type": "thinking_delta", "thinking"} | Bir thinking bloğu için akıl yürütmenin bir parçası. |
content_block_delta | index, delta {"type": "text_delta", "text"} | Bir text bloğu için yanıtın bir parçası. |
content_block_delta | index, delta {"type": "input_json_delta", "partial_json"} | Bir tool_use bloğu için, tek bir delta içinde tamamlanmış araç çağrısı bağımsız değişkenleri. |
content_block_stop | index | Bu index değerine sahip blok tamamlandı. |
message_delta | delta {stop_reason, stop_sequence}, usage | Yanıtın sonu: delta.stop_reason ve isteğin usage bilgisi. |
message_stop | Her zaman son olay. |
Bloklar açılış sırasına göre index ile numaralanır ve bir blok, sonraki açılmadan önce tamamlanır. Her bloğu numarasına göre değil türüne göre okuyun: bir akış önce boş bir text bloğu, sonra thinking bloğunu açabilir ve yanıtı daha sonraki bir text bloğunda iletebilir.
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
| Gönderen | Açıklama |
|---|---|
Shannon 3 ailesi, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | Her 15 saniyede bir, {"type": "ping"} verisiyle bir ping olayı. |
| Host edilen açık ağırlıklı modeller | Model çalışırken her 15 saniyede bir : keepalive yorum satırı. |
Başarısız olan bir akış
Akış başladıktan sonraki bir hata, hata yanıtıyla aynı gövdeye sahip bir error olayıdır: {"type": "error", "error": {"type", "message"}}. Kapanış olayları message_delta ve message_stop yine de gelir. Yanıtı başarısız sayın ve isteği tekrar gönderin.
Hatalar
Hatalar Anthropic hata gövdesini kullanır: type değeri error'dır ve error nesnesi bir type ve bir message içerir. Tablo, bu uç noktanın en sık döndürdüklerini listeler. Hangi hataların yeniden deneneceğini de içeren tam listenin kendi sayfası var. Hata yönetimi
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Durum | Tür | Mesaj | Ne zaman |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | API anahtarı gönderilmedi veya anahtar bilinmiyor ya da iptal edilmiş. |
400 | invalid_request_error | unknown model: <id> | model bir Shannon model kimliği değil. |
400 | invalid_request_error | No user message provided | Shannon katmanları: istekte kullanıcı metni ve tools yok. |
400 | invalid_request_error | <id> does not accept image input | Görsel girdisi olmayan host edilen bir açık ağırlıklı modele görsel gönderildi. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | messages eksik veya bir alanın JSON türü yanlış. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | max_tokens, bakiyenizde kalandan büyük. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | Flood koruması: hesabınızda bir dakikada 120'den fazla istek. |
429 | rate_limit_error | Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan | shannon-coder-1: planınızın geçerli 4 saatlik penceredeki Shannon Coder çağrıları tükendi. |
500 | server_error | The model backend failed to answer. Please retry. | Model yanıt üretmedi. İsteği tekrar gönderin. |
502 | api_error | The model backend failed to answer. Please retry. | Model yanıt üretmedi. İsteği tekrar gönderin. |
Token sayma
POST /v1/messages/count_tokens, bir mesaj isteğiyle aynı gövdeyi (model, system, messages, tools) alır ve {"input_tokens": n} döndürür: isteğin faturalandırılacağı girdi token sayısı. Host edilen açık ağırlıklı modeller için çalışır, ücretsizdir ve flood koruması tarafından sayılmaz.
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} Saymanın, düz metin uç noktası ve sınırlarla birlikte kendi sayfası var. Token sayma