Anthropic
POST /v1/messages Anthropic Messages فارمیٹ میں درخواست لیتا ہے اور اسی فارمیٹ میں جواب دیتا ہے، سٹریم کے ساتھ یا بغیر۔ اسے Anthropic SDK اور اس پر بنے ٹولز، جیسے Claude Code، کے ساتھ استعمال کریں: بیس URL سیٹ کریں، اپنی Shannon API کلید استعمال کریں اور ایک Shannon ماڈل id کا نام دیں۔
POST https://api.shannon-ai.com/v1/messages
Anthropic SDK کو Shannon کے بیس 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 لازمی ہے۔ لاگو کرنے والے کالم ان ماڈلز کے نام بتاتا ہے جن پر کوئی فیلڈ جواب کو بدلتا ہے۔ ہوسٹڈ اوپن ویٹ ماڈلز ماڈل فہرست کے بارہ ids ہیں؛ 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 | نیوکلیئس سیمپلنگ۔ | ہوسٹڈ اوپن ویٹ ماڈلز | |
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 کرتا ہے۔ نیچے Thinking دیکھیں۔ | ہوسٹڈ اوپن ویٹ ماڈلز | |
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 سے مانگا جاتا ہے۔ ساختی آؤٹ پٹس
سسٹم پرامپٹ اور thinking والی درخواست
یہ درخواست ایک سسٹم پرامپٹ، ایک thinking بجٹ، ایک ٹمپریچر اور ایک stop sequence بھیجتی ہے۔ یہ ایک ہوسٹڈ اوپن ویٹ ماڈل استعمال کرتی ہے، جو ان سب کو لاگو کرتا ہے۔
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
ہوسٹڈ اوپن ویٹ ماڈلز thinking کو reasoning effort سے ملاتے ہیں۔ فیلڈ کے بغیر effort high ہوتا ہے۔
| شکل | budget_tokens | اثر |
|---|---|---|
{"type": "disabled"} | کوئی reasoning نہیں۔ جواب میں thinking بلاک نہیں ہوتا۔ | |
{"type": "enabled", "budget_tokens": 2048} | ≤ 2,048 | کم effort۔ |
{"type": "enabled", "budget_tokens": 8192} | ≤ 8,192 | درمیانہ effort۔ |
{"type": "enabled", "budget_tokens": 16000} | > 8,192 | اعلیٰ effort۔ |
reasoning کرنے والا ماڈل اپنی reasoning کو متن سے پہلے {"type": "thinking", "thinking": "…"} بلاک کی شکل میں لوٹاتا ہے۔ reasoning کرنے والے Shannon درجے بھی اسے بھیجتے ہیں۔
efforts کی وضاحت ان کے اپنے صفحے پر ہے۔ Reasoning effort
ٹولز
ٹول ایک فنکشن ہے جسے آپ کا کوڈ چلاتا ہے۔ ہر ایک کو 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 | جواب کے بلاکس، اسی ترتیب میں: thinking جب ماڈل نے reasoning کی ہو، 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: لائن اور ایک data: لائن ہوتی ہے جس میں JSON آبجیکٹ type میں وہی نام دہراتا ہے۔ 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، role، ماڈل، خالی 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"} | reasoning کا ایک ٹکڑا، thinking بلاک کے لیے۔ |
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 سے اس ترتیب میں نمبر کیے جاتے ہیں جس میں وہ کھلتے ہیں، اور ایک بلاک اگلے کے کھلنے سے پہلے مکمل ہو جاتا ہے۔ ہر بلاک کو اس کی type سے پڑھیں، نمبر سے نہیں: ایک سٹریم پہلے خالی 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 | ایک ping ایونٹ جس کا ڈیٹا {"type": "ping"} ہے، ہر 15 سیکنڈ بعد۔ |
| ہوسٹڈ اوپن ویٹ ماڈلز | ایک تبصرے والی لائن : keepalive، ہر 15 سیکنڈ بعد جب تک ماڈل کام کر رہا ہو۔ |
ناکام ہونے والی سٹریم
سٹریم شروع ہونے کے بعد کی ناکامی ایک 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 اور حدود موجود ہیں۔ ٹوکن گنتی