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 वरून शोधा: मॉडेलने रीझनिंग केले असेल तर पहिला ब्लॉक 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 आवश्यक आहे. लागू करणारे स्तंभ ज्या मॉडेल्सवर फील्ड उत्तर बदलते त्यांची नावे देतो. होस्ट केलेली open-weight मॉडेल्स म्हणजे मॉडेल यादीतील बारा 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 | मॉडेलसाठी सूचना: स्ट्रिंग किंवा मजकूर ब्लॉक्सची अॅरे. खाली सिस्टम प्रॉम्प्ट पहा. | होस्ट केलेली open-weight मॉडेल्स, shannon-1.6-*, shannon-2-*, shannon-coder-1 | |
max_tokens | integer | 4096 | उत्तराची कमाल मर्यादा, टोकन्समध्ये. या एंडपॉइंटवर ऐच्छिक; Anthropic SDK नेहमी पाठवतो. 1 ते 65,536 बाहेरील व्हॅल्यू त्या श्रेणीत आणली जाते. रिक्वेस्ट चालू असताना तुमच्या बॅलन्समधून बाजूला ठेवली जाणारी ही रक्कम देखील आहे. | होस्ट केलेली open-weight मॉडेल्स, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
stream | boolean | false | true उत्तर सर्व्हर-सेंट इव्हेंट्स म्हणून पाठवते. खाली स्ट्रीमिंग पहा. | सर्व मॉडेल्स |
temperature | number | सॅम्पलिंग टेंपरेचर. होस्ट केलेल्या open-weight मॉडेल्सवर व्हॅल्यू 0 ते 2 च्या दरम्यान ठेवल्या जातात. | होस्ट केलेली open-weight मॉडेल्स, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | न्यूक्लियस सॅम्पलिंग. | होस्ट केलेली open-weight मॉडेल्स | |
stop_sequences | array | जास्तीत जास्त 4 स्ट्रिंग्ज. दिसणाऱ्या पहिल्या स्ट्रिंगच्या आधी उत्तर संपते. stop_reason हा end_turn राहतो. | होस्ट केलेली open-weight मॉडेल्स | |
tools | array | मॉडेल कॉल करू शकणारी टूल्स, प्रत्येक {"name", "description", "input_schema"} म्हणून. खाली टूल्स पहा. | सर्व मॉडेल्स | |
tool_choice | object | {"type": "auto"} मॉडेलला ठरवू देते, {"type": "any"} त्याला टूल कॉल करायला लावते, {"type": "tool", "name": "…"} त्याला तेच टूल कॉल करायला लावते. | होस्ट केलेली open-weight मॉडेल्स | |
thinking | object | उत्तर देण्यापूर्वी मॉडेल किती रीझनिंग करते. खाली थिंकिंग पहा. | होस्ट केलेली open-weight मॉडेल्स | |
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 मार्कर स्वीकारले जातात, जेणेकरून विद्यमान क्लायंट कोड न बदलता चालेल. ते उत्तर बदलत नाहीत; होस्ट केलेल्या open-weight मॉडेल्सवर प्रॉम्प्ट कॅशिंग आपोआप होते.
स्कीमानुसार JSON उत्तर Chat Completions वर response_format ने आणि Responses वर text.format ने मागवले जाते. संरचित आउटपुट्स
सिस्टम प्रॉम्प्ट आणि थिंकिंगसह रिक्वेस्ट
ही रिक्वेस्ट सिस्टम प्रॉम्प्ट, थिंकिंग बजेट, टेंपरेचर आणि स्टॉप सीक्वेन्स पाठवते. ती होस्ट केलेले open-weight मॉडेल वापरते, जे सर्व लागू करते.
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?"}]
}' होस्ट केलेल्या open-weight मॉडेल्सवर usage प्रॉम्प्ट कॅशमधून वाचलेले टोकन्स इतर इनपुट टोकन्सपासून वेगळे दाखवतो.
{
"usage": {
"input_tokens": 31,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"output_tokens": 62
}
} सिस्टम प्रॉम्प्ट
system ही स्ट्रिंग असते, किंवा [{"type": "text", "text": "…"}] या रूपातील मजकूर ब्लॉक्सची अॅरे. ब्लॉक्सचे मजकूर ओळीच्या खंडाने जोडले जातात.
हे होस्ट केलेली open-weight मॉडेल्स, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro आणि shannon-coder-1 लागू करतात. Shannon 3 कुटुंबातील id सह, जे नियम पाळले पाहिजेत ते user संदेशात ठेवा.
संदेश आणि कंटेंट ब्लॉक्स
संदेशाला एक 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, आणि इमेज इनपुट असल्याचे नमूद असलेली होस्ट केलेली open-weight मॉडेल्स |
{"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 संदेशातून वाचली जातात. आकार आणि मर्यादांसाठी स्वतंत्र पान आहे. इमेज आणि फाइल्स
थिंकिंग
होस्ट केलेली open-weight मॉडेल्स thinking ला रीझनिंग effort शी जोडतात. फील्ड नसल्यास effort उच्च असतो.
| रूप | budget_tokens | परिणाम |
|---|---|---|
{"type": "disabled"} | रीझनिंग नाही. उत्तरात 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. |
रीझनिंग करणारे मॉडेल आपले रीझनिंग मजकुराच्या आधी {"type": "thinking", "thinking": "…"} या ब्लॉकमध्ये परत करते. रीझनिंग करणारे Shannon टियर्सही ते पाठवतात.
effort चे वर्णन स्वतंत्र पानावर आहे. रीझनिंग 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"} | मॉडेलने एखादे टूल कॉल केलेच पाहिजे. | होस्ट केलेली open-weight मॉडेल्स |
{"type": "tool", "name": "…"} | मॉडेलने नाव दिलेले टूल कॉल केलेच पाहिजे. | होस्ट केलेली open-weight मॉडेल्स |
फक्त input_schema असलेली टूल्स वाचली जातात. या एंडपॉइंटवर वेब सर्च हे टूल नाही: web_search फील्ड सेट करा.
टूल लूपचे संपूर्ण वर्णन स्वतंत्र पानावर आहे. फंक्शन कॉलिंग
उत्तर
| फील्ड | प्रकार | वर्णन | पाठवणारा |
|---|---|---|---|
id | string | msg_ नंतर 32 हेक्साडेसिमल अक्षरे. | सर्व मॉडेल्स |
type | string | नेहमी message. | सर्व मॉडेल्स |
role | string | नेहमी assistant. | सर्व मॉडेल्स |
model | string | उत्तर देणाऱ्या मॉडेलचा कॅनॉनिकल id. | सर्व मॉडेल्स |
content | array | उत्तराचे ब्लॉक्स, या क्रमाने: मॉडेलने रीझनिंग केले असल्यास 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 असतो. | होस्ट केलेली open-weight मॉडेल्स |
उत्तराचे ब्लॉक्स
| ब्लॉक | वर्णन |
|---|---|
{"type": "thinking", "thinking": "…"} | मॉडेलचे रीझनिंग. 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, स्ट्रीममध्ये |
स्ट्रीमिंग
सर्व्हर-सेंट इव्हेंट्ससाठी 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 ब्लॉकसाठी, रीझनिंगचा एक तुकडा. |
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 सेकंदांनी. |
| होस्ट केलेली open-weight मॉडेल्स | मॉडेल काम करत असताना दर 15 सेकंदांनी : keepalive ही कमेंट ओळ. |
अयशस्वी होणारा स्ट्रीम
स्ट्रीम सुरू झाल्यानंतरचा बिघाड म्हणजे एरर उत्तराच्या बॉडीसारखीच बॉडी असलेला error इव्हेंट: {"type": "error", "error": {"type", "message"}}. समाप्ती इव्हेंट्स, message_delta आणि message_stop, तरीही त्यानंतर येतात. उत्तर अयशस्वी मानून रिक्वेस्ट पुन्हा पाठवा.
एरर
एरर Anthropic एरर बॉडी वापरतात: type हा error असतो, आणि error ऑब्जेक्टमध्ये type आणि message असतात. टेबल हा एंडपॉइंट सर्वाधिक वेळा काय परत करतो ते दाखवते. संपूर्ण यादी, काय पुन्हा प्रयत्न करायचे यासह, स्वतंत्र पानावर आहे. त्रुटी हाताळणी
{
"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 | इमेज इनपुट नसलेल्या होस्ट केलेल्या open-weight मॉडेलला इमेज पाठवली गेली. |
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. | फ्लड प्रोटेक्शन: तुमच्या अकाउंटवर एका मिनिटात 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} परत करतो: रिक्वेस्टसाठी आकारल्या जाणाऱ्या इनपुट टोकन्सची संख्या. हे होस्ट केलेल्या open-weight मॉडेल्ससाठी मोजते, ते मोफत आहे आणि फ्लड प्रोटेक्शनमध्ये मोजले जात नाही.
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} टोकन मोजणीचे स्वतःचे पान आहे, ज्यात प्लेन-टेक्स्ट एंडपॉइंट आणि मर्यादा आहेत. टोकन मोजणी