Anthropic
POST /v1/messages Anthropic Messages ഫോർമാറ്റിലുള്ള റിക്വസ്റ്റ് സ്വീകരിച്ച് അതേ ഫോർമാറ്റിൽ, സ്ട്രീം ചെയ്തോ അല്ലാതെയോ, മറുപടി നൽകുന്നു. Anthropic SDK-യിലും Claude Code പോലെ അതിനെ ആശ്രയിക്കുന്ന ടൂളുകളിലും ഇത് ഉപയോഗിക്കുക: base URL സജ്ജമാക്കുക, നിങ്ങളുടെ Shannon API കീ ഉപയോഗിക്കുക, ഒരു Shannon മോഡൽ ഐഡി നൽകുക.
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 നോക്കി കണ്ടെത്തുക: മോഡൽ റീസൺ ചെയ്തെങ്കിൽ ആദ്യ ബ്ലോക്ക് 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 | ഓപ്ഷണൽ. റിക്വസ്റ്റിനുള്ള നിങ്ങളുടെ സ്വന്തം ഐഡി. ഇത് മറുപടിയിൽ മാറ്റമില്ലാതെ തിരികെ വരും; ഇല്ലെങ്കിൽ മറുപടിയിൽ 12 ഹെക്സാഡെസിമൽ അക്ഷരങ്ങളുള്ള ഒരു ഐഡി ഉണ്ടാകും. |
റിക്വസ്റ്റ് ഫീൽഡുകൾ
messages മാത്രമാണ് നിർബന്ധം. ഒരു ഫീൽഡ് മറുപടിയെ മാറ്റുന്ന മോഡലുകളുടെ പേര് ബാധകമാക്കുന്നത് കോളം നൽകുന്നു. ഹോസ്റ്റ് ചെയ്ത ഓപ്പൺ-വെയിറ്റ് മോഡലുകൾ എന്നത് മോഡൽ പട്ടികയിലെ പന്ത്രണ്ട് ഐഡികളാണ്; Shannon 3 കുടുംബം shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro എന്നിവയാണ്. മോഡലുകളും വിലയും
| ഫീൽഡ് | ടൈപ്പ് | ഡിഫോൾട്ട് | വിവരണം | ബാധകമാക്കുന്നത് |
|---|---|---|---|---|
model | string | shannon-1.6-lite | മോഡൽ പട്ടികയിലെ ഒരു Shannon മോഡൽ ഐഡി. ഓരോ റിക്വസ്റ്റിലും ഇത് അയയ്ക്കുക. പൊരുത്തപ്പെടുത്തൽ വലിയക്ഷര/ചെറിയക്ഷര വ്യത്യാസം നോക്കില്ല. മറ്റേതൊരു പേരും 400 unknown model തിരികെ നൽകും, അതിനാൽ സ്വന്തം മോഡൽ പേരുകൾ അയയ്ക്കുന്ന ടൂൾ ഒരു Shannon ഐഡിയിലേക്ക് സജ്ജമാക്കണം. | എല്ലാ മോഡലുകളും |
messages | array | നിർബന്ധം. സംഭാഷണം, ഏറ്റവും പഴയ സന്ദേശം ആദ്യം, user, assistant റോളുകളോടെ. താഴെ സന്ദേശങ്ങളും ഉള്ളടക്ക ബ്ലോക്കുകളും കാണുക. | എല്ലാ മോഡലുകളും | |
system | string | array | മോഡലിനുള്ള നിർദ്ദേശങ്ങൾ: ഒരു സ്ട്രിങ്ങോ ടെക്സ്റ്റ് ബ്ലോക്കുകളുടെ അറേയോ. താഴെ സിസ്റ്റം പ്രോംപ്റ്റ് കാണുക. | ഹോസ്റ്റ് ചെയ്ത ഓപ്പൺ-വെയിറ്റ് മോഡലുകൾ, shannon-1.6-*, shannon-2-*, shannon-coder-1 | |
max_tokens | integer | 4096 | മറുപടിയുടെ ഉയർന്ന പരിധി, ടോക്കണുകളിൽ. ഈ എൻഡ്പോയിന്റിൽ ഓപ്ഷണൽ; Anthropic SDK ഇത് എപ്പോഴും അയയ്ക്കുന്നു. 1 മുതൽ 65,536 വരെയുള്ള പരിധിക്ക് പുറത്തുള്ള മൂല്യം ആ പരിധിയിലേക്ക് മാറ്റപ്പെടുന്നു. റിക്വസ്റ്റ് പ്രവർത്തിക്കുമ്പോൾ നിങ്ങളുടെ ബാലൻസിൽ നിന്ന് മാറ്റിവയ്ക്കുന്ന തുകയും ഇതാണ്. | ഹോസ്റ്റ് ചെയ്ത ഓപ്പൺ-വെയിറ്റ് മോഡലുകൾ, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
stream | boolean | false | true മറുപടി സെർവർ-സെന്റ് ഇവന്റുകളായി അയയ്ക്കുന്നു. താഴെ സ്ട്രീമിംഗ് കാണുക. | എല്ലാ മോഡലുകളും |
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 | ഉത്തരം നൽകുംമുമ്പ് മോഡൽ എത്രത്തോളം റീസൺ ചെയ്യുന്നു. താഴെ തിങ്കിംഗ് കാണുക. | ഹോസ്റ്റ് ചെയ്ത ഓപ്പൺ-വെയിറ്റ് മോഡലുകൾ | |
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 കുടുംബത്തിലെ ഐഡി ഉപയോഗിക്കുമ്പോൾ, നിർബന്ധമായും പാലിക്കേണ്ട നിർദ്ദേശങ്ങൾ യൂസർ സന്ദേശത്തിൽ ചേർക്കുക.
സന്ദേശങ്ങളും ഉള്ളടക്ക ബ്ലോക്കുകളും
ഒരു സന്ദേശത്തിന് user അല്ലെങ്കിൽ assistant എന്ന role-ഉം ഒരു 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-നെ ഒരു റീസണിംഗ് എഫർട്ടിലേക്ക് മാപ്പ് ചെയ്യുന്നു. ഫീൽഡ് ഇല്ലെങ്കിൽ എഫർട്ട് ഹൈ ആണ്.
| രൂപം | budget_tokens | ഫലം |
|---|---|---|
{"type": "disabled"} | റീസണിംഗ് ഇല്ല. മറുപടിയിൽ thinking ബ്ലോക്ക് ഇല്ല. | |
{"type": "enabled", "budget_tokens": 2048} | ≤ 2,048 | കുറഞ്ഞ എഫർട്ട്. |
{"type": "enabled", "budget_tokens": 8192} | ≤ 8,192 | ഇടത്തരം എഫർട്ട്. |
{"type": "enabled", "budget_tokens": 16000} | > 8,192 | ഉയർന്ന എഫർട്ട്. |
റീസൺ ചെയ്യുന്ന ഒരു മോഡൽ അതിന്റെ റീസണിംഗ് ടെക്സ്റ്റിന് മുമ്പായി {"type": "thinking", "thinking": "…"} എന്ന ബ്ലോക്കായി തിരികെ നൽകുന്നു. റീസൺ ചെയ്യുന്ന Shannon ടിയറുകളും അത് അയയ്ക്കുന്നു.
എഫർട്ടുകൾ അവയുടെ സ്വന്തം പേജിൽ വിവരിച്ചിരിക്കുന്നു. റീസണിംഗ് എഫർട്ട്
ടൂളുകൾ
ടൂൾ എന്നത് നിങ്ങളുടെ കോഡ് പ്രവർത്തിപ്പിക്കുന്ന ഒരു ഫംഗ്ഷനാണ്. ഓരോന്നിനെയും 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 ഉള്ള ടൂളുകൾ മാത്രമേ വായിക്കൂ. ഈ എൻഡ്പോയിന്റിൽ വെബ് സെർച്ച് ഒരു ടൂൾ അല്ല: web_search ഫീൽഡ് സജ്ജമാക്കുക.
ടൂൾ ലൂപ്പ് അതിന്റെ സ്വന്തം പേജിൽ പൂർണ്ണമായി വിവരിച്ചിരിക്കുന്നു. ഫംഗ്ഷൻ കോളിംഗ്
മറുപടി
| ഫീൽഡ് | ടൈപ്പ് | വിവരണം | അയയ്ക്കുന്നത് |
|---|---|---|---|
id | string | msg_-നെ തുടർന്ന് 32 ഹെക്സാഡെസിമൽ അക്ഷരങ്ങൾ. | എല്ലാ മോഡലുകളും |
type | string | എപ്പോഴും message. | എല്ലാ മോഡലുകളും |
role | string | എപ്പോഴും assistant. | എല്ലാ മോഡലുകളും |
model | string | മറുപടി നൽകിയ മോഡലിന്റെ കാനോനിക്കൽ ഐഡി. | എല്ലാ മോഡലുകളും |
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 ആണ്. | ഹോസ്റ്റ് ചെയ്ത ഓപ്പൺ-വെയിറ്റ് മോഡലുകൾ |
മറുപടി ബ്ലോക്കുകൾ
| ബ്ലോക്ക് | വിവരണം |
|---|---|
{"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-ൽ ഐഡി, റോൾ, മോഡൽ, ശൂന്യമായ 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"} കീപ്-എലൈവ്
| അയയ്ക്കുന്നത് | വിവരണം |
|---|---|
Shannon 3 കുടുംബം, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | ഓരോ 15 സെക്കൻഡിലും {"type": "ping"} എന്ന ഡാറ്റയുള്ള ഒരു ping ഇവന്റ്. |
| ഹോസ്റ്റ് ചെയ്ത ഓപ്പൺ-വെയിറ്റ് മോഡലുകൾ | : keepalive എന്ന കമന്റ് വരി, മോഡൽ പ്രവർത്തിക്കുമ്പോൾ ഓരോ 15 സെക്കൻഡിലും. |
പരാജയപ്പെടുന്ന ഒരു സ്ട്രീം
സ്ട്രീം തുടങ്ങിയ ശേഷമുള്ള പരാജയം, എറർ മറുപടിയുടെ അതേ ബോഡിയുള്ള ഒരു 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 മോഡൽ ഐഡി അല്ല. |
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. | ഫ്ലഡ് പ്രൊട്ടക്ഷൻ: നിങ്ങളുടെ അക്കൗണ്ടിൽ ഒരു മിനിറ്റിൽ 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} തിരികെ നൽകുന്നു: ആ റിക്വസ്റ്റിന് ഈടാക്കുന്ന ഇൻപുട്ട് ടോക്കണുകളുടെ എണ്ണം. ഇത് ഹോസ്റ്റ് ചെയ്ത ഓപ്പൺ-വെയിറ്റ് മോഡലുകൾക്ക് ബാധകമാണ്, സൗജന്യമാണ്, ഫ്ലഡ് പ്രൊട്ടക്ഷനിൽ കണക്കാക്കില്ല.
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} എണ്ണലിന് സ്വന്തം പേജ് ഉണ്ട്, പ്ലെയിൻ-ടെക്സ്റ്റ് എൻഡ്പോയിന്റും പരിധികളും സഹിതം. ടോക്കൺ എണ്ണൽ