ទ្រង់ទ្រាយ Anthropic
POST /v1/messages ទទួល request ក្នុងទ្រង់ទ្រាយ Anthropic Messages ហើយឆ្លើយតបក្នុងទ្រង់ទ្រាយដូចគ្នា ជា stream ឬមិនមែន។ ប្រើវាជាមួយ Anthropic SDK និងឧបករណ៍ដែលបង្កើតលើវា ដូចជា Claude Code៖ កំណត់ base URL ប្រើ Shannon API key របស់អ្នក ហើយដាក់ឈ្មោះ Shannon model id។
POST https://api.shannon-ai.com/v1/messages
ភ្ជាប់ Anthropic SDK ទៅ base URL របស់ Shannon។ SDK បន្ថែម /v1/messages ហើយផ្ញើ key របស់អ្នកក្នុង header 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 របស់វាជាបញ្ជីនៃ block។ រក block តាម type របស់វា៖ នៅពេលម៉ូដែលវែកញែក block ដំបូងគឺ 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
}
} Headers
| Header | តម្លៃ | ការពិពណ៌នា |
|---|---|---|
x-api-key | YOUR_API_KEY | API key របស់អ្នក។ 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 ផ្ទាល់ខ្លួនរបស់អ្នកសម្រាប់ request។ វាត្រឡប់មកវិញដូចដើមក្នុងចម្លើយ; បើគ្មានវា ចម្លើយមាន id ដែលមាន 12 តួអក្សរ hexadecimal។ |
Request field
មានតែ messages ប៉ុណ្ណោះដែលត្រូវការ។ ជួរឈរ អនុវត្តដោយ ប្រាប់ម៉ូដែលដែល field ផ្លាស់ប្តូរចម្លើយ។ ម៉ូដែល open-weight ដែលបង្ហោះគឺ id ទាំងដប់ពីរក្នុងបញ្ជីម៉ូដែល; ក្រុម Shannon 3 គឺ shannon-3, shannon-3-pro, shannon-3.1 និង shannon-3.1-pro។ ម៉ូដែល និងតម្លៃ
| Field | ប្រភេទ | លំនាំដើម | ការពិពណ៌នា | អនុវត្តដោយ |
|---|---|---|---|---|
model | string | shannon-1.6-lite | Shannon model id មួយពីបញ្ជីម៉ូដែល។ ផ្ញើវាជាមួយរាល់ request។ ការផ្គូផ្គងមិនប្រកាន់អក្សរធំតូចទេ។ ឈ្មោះផ្សេងទៀតត្រឡប់ 400 unknown model ដូច្នេះ tool ដែលផ្ញើឈ្មោះម៉ូដែលផ្ទាល់ខ្លួនត្រូវកំណត់ទៅជា Shannon id។ | គ្រប់ម៉ូដែល |
messages | array | ត្រូវការ។ ការសន្ទនា សារចាស់បំផុតនៅមុនគេ ជាមួយ role user និង assistant។ សូមមើល សារ និង block នៃមាតិកា ខាងក្រោម។ | គ្រប់ម៉ូដែល | |
system | string | array | ការណែនាំសម្រាប់ម៉ូដែល៖ string ឬអារេនៃ text block។ សូមមើល System prompt ខាងក្រោម។ | ម៉ូដែល open-weight ដែលបង្ហោះ, shannon-1.6-*, shannon-2-*, shannon-coder-1 | |
max_tokens | integer | 4096 | ដែនកំណត់ខ្ពស់បំផុតនៃចម្លើយ គិតជា token។ ជម្រើសលើ endpoint នេះ; Anthropic SDK ផ្ញើវាជានិច្ច។ តម្លៃក្រៅចន្លោះ 1 ដល់ 65,536 ត្រូវបានរុញចូលក្នុងចន្លោះនោះ។ វាក៏ជាចំនួនដែលត្រូវបម្រុងទុកពីសមតុល្យរបស់អ្នកអំឡុងពេល request ដំណើរការ។ | ម៉ូដែល open-weight ដែលបង្ហោះ, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
stream | boolean | false | true ផ្ញើចម្លើយជា server-sent events។ សូមមើល Streaming ខាងក្រោម។ | គ្រប់ម៉ូដែល |
temperature | number | Sampling temperature។ លើម៉ូដែល open-weight ដែលបង្ហោះ តម្លៃត្រូវបានរក្សាក្នុងចន្លោះ 0 ដល់ 2។ | ម៉ូដែល open-weight ដែលបង្ហោះ, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | Nucleus sampling។ | ម៉ូដែល open-weight ដែលបង្ហោះ | |
stop_sequences | array | រហូតដល់ 4 string។ ចម្លើយបញ្ចប់មុន string ដំបូងដែលលេចឡើង។ stop_reason នៅតែជា end_turn។ | ម៉ូដែល open-weight ដែលបង្ហោះ | |
tools | array | tools ដែលម៉ូដែលអាចហៅ ម្នាក់ៗជា {"name", "description", "input_schema"}។ សូមមើល Tools ខាងក្រោម។ | គ្រប់ម៉ូដែល | |
tool_choice | object | {"type": "auto"} ឱ្យម៉ូដែលសម្រេចចិត្ត, {"type": "any"} បង្ខំឱ្យវាហៅ tool, {"type": "tool", "name": "…"} បង្ខំឱ្យវាហៅ tool នោះ។ | ម៉ូដែល open-weight ដែលបង្ហោះ | |
thinking | object | ចំនួនដែលម៉ូដែលវែកញែកមុនឆ្លើយ។ សូមមើល Thinking ខាងក្រោម។ | ម៉ូដែល open-weight ដែលបង្ហោះ | |
web_search | boolean | false | ការបន្ថែមរបស់ Shannon លើទ្រង់ទ្រាយ៖ true ឱ្យម៉ូដែលស្វែងរកតាមវេបមុនឆ្លើយ។ | shannon-1.6-*, shannon-2-*, ក្រុម Shannon 3 |
បើគ្មាន max_tokens តម្លៃគឺ 4,096 ហើយ 65,536 លើ shannon-coder-1។
metadata, top_k, service_tier និងសញ្ញា cache_control លើ block ត្រូវបានទទួលយក ដើម្បីឱ្យកូដ client ដែលមានស្រាប់ដំណើរការដូចដើម។ ពួកវាមិនផ្លាស់ប្តូរចម្លើយទេ; prompt caching លើម៉ូដែល open-weight ដែលបង្ហោះគឺស្វ័យប្រវត្តិ។
ចម្លើយ JSON តាម schema ត្រូវបានស្នើដោយ response_format លើ Chat Completions និងដោយ text.format លើ Responses។ លទ្ធផលមានរចនាសម្ព័ន្ធ
Request ដែលមានការណែនាំប្រព័ន្ធ និងការគិត
Request នេះផ្ញើការណែនាំប្រព័ន្ធ ថវិកាសម្រាប់ការគិត សីតុណ្ហភាព (temperature) និងលំដាប់បញ្ឈប់។ វាប្រើម៉ូដែល 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 រាយការណ៍ token ដែលអានពី prompt cache ដាច់ពី input token ផ្សេងទៀត។
{
"usage": {
"input_tokens": 31,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"output_tokens": 62
}
} System prompt
system ជា string ឬអារេនៃ text block ក្នុងទម្រង់ [{"type": "text", "text": "…"}]។ អត្ថបទនៃ block ត្រូវបានភ្ជាប់ដោយការចុះបន្ទាត់។
វាត្រូវបានអនុវត្តដោយម៉ូដែល open-weight ដែលបង្ហោះ, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro និង shannon-coder-1។ ជាមួយ id ក្នុងក្រុម Shannon 3 សូមដាក់ការណែនាំដែលត្រូវតែគោរព ចូលក្នុងសាររបស់ user។
សារ និង block នៃមាតិកា
សារមាន role ជា user ឬ assistant និង content។ content ជា string ឬអារេនៃ block។
| Block | ការពិពណ៌នា | មានលើ |
|---|---|---|
{"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 ដែលបង្ហោះ ដែលមានបញ្ជីថាទទួល image input |
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | ឯកសារ (PDF, Word, PowerPoint ឬ Excel) ក្នុងសារ user ជា base64 ឬតាម URL។ | ក្រុម Shannon 3 |
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} | ក្នុងសារ assistant៖ ការហៅ tool ដែលម៉ូដែលបានធ្វើក្នុងចម្លើយមុន។ | គ្រប់ម៉ូដែល |
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} | ក្នុងសារ user៖ លទ្ធផលនៃការហៅនោះ។ content ជា string ឬបញ្ជីនៃ text block។ | គ្រប់ម៉ូដែល |
អ្នកអាចផ្ញើ content នៃចម្លើយមុនត្រឡប់ទៅវិញបានដូចដើម៖ block text និង tool_use ត្រូវបានអាន ហើយ block thinking ត្រូវបានរំលង។
នៅលើកម្រិត Shannon រូបភាព និងឯកសារត្រូវបានអានពីសារ user ចុងក្រោយ។ ទំហំ និងដែនកំណត់មានទំព័រផ្ទាល់ខ្លួន។ រូបភាព និងឯកសារ
Thinking
ម៉ូដែល open-weight ដែលបង្ហោះ ផ្គូផ្គង thinking ទៅនឹងកម្រិត reasoning effort។ បើគ្មាន field នេះ កម្រិតគឺខ្ពស់។
| ទម្រង់ | budget_tokens | ផលប៉ះពាល់ |
|---|---|---|
{"type": "disabled"} | គ្មានការវែកញែក។ ចម្លើយមិនមាន block thinking ទេ។ | |
{"type": "enabled", "budget_tokens": 2048} | ≤ 2,048 | កម្រិតទាប។ |
{"type": "enabled", "budget_tokens": 8192} | ≤ 8,192 | កម្រិតមធ្យម។ |
{"type": "enabled", "budget_tokens": 16000} | > 8,192 | កម្រិតខ្ពស់។ |
ម៉ូដែលដែលវែកញែក ប្រគល់ការវែកញែករបស់វាជា block {"type": "thinking", "thinking": "…"} នៅមុនអត្ថបទ។ កម្រិត Shannon ដែលវែកញែកក៏ផ្ញើវាដែរ។
កម្រិតទាំងនេះត្រូវបានពិពណ៌នានៅទំព័រផ្ទាល់ខ្លួនរបស់វា។ កម្រិត reasoning
Tools
tool គឺជា function ដែលកូដរបស់អ្នកដំណើរការ។ ពិពណ៌នា tool នីមួយៗដោយ name, description និង input_schema។ នៅពេលម៉ូដែលចង់បាន tool ចម្លើយមាន block tool_use ហើយ stop_reason គឺ tool_use។
និយមន័យ tool ក្នុង 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 បន្ទាប់មកផ្ញើ request ម្តងទៀត ដោយបន្ថែមការហៅ និង block 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"} | ម៉ូដែលសម្រេចចិត្តថាត្រូវហៅ tool ឬអត់។ នេះជាលំនាំដើម។ | គ្រប់ម៉ូដែល |
{"type": "any"} | ម៉ូដែលត្រូវតែហៅ tool មួយក្នុងចំណោម tools។ | ម៉ូដែល open-weight ដែលបង្ហោះ |
{"type": "tool", "name": "…"} | ម៉ូដែលត្រូវតែហៅ tool ដែលបានដាក់ឈ្មោះ។ | ម៉ូដែល open-weight ដែលបង្ហោះ |
មានតែ tools ដែលមាន input_schema ប៉ុណ្ណោះដែលត្រូវបានអាន។ ការស្វែងរកតាមវេបមិនមែនជា tool នៅលើ endpoint នេះទេ៖ សូមកំណត់ field web_search។
tool loop ត្រូវបានពិពណ៌នាពេញលេញនៅទំព័រផ្ទាល់ខ្លួនរបស់វា។ ការហៅមុខងារ
ចម្លើយ
| Field | ប្រភេទ | ការពិពណ៌នា | ផ្ញើដោយ |
|---|---|---|---|
id | string | msg_ បន្តដោយតួអក្សរ hexadecimal ចំនួន 32។ | គ្រប់ម៉ូដែល |
type | string | ជានិច្ចជា message។ | គ្រប់ម៉ូដែល |
role | string | ជានិច្ចជា assistant។ | គ្រប់ម៉ូដែល |
model | string | id ស្តង់ដារនៃម៉ូដែលដែលបានឆ្លើយ។ | គ្រប់ម៉ូដែល |
content | array | block នៃចម្លើយ តាមលំដាប់នេះ៖ thinking នៅពេលម៉ូដែលវែកញែក, text បន្ទាប់មក tool_use មួយក្នុងមួយការហៅ tool។ | គ្រប់ម៉ូដែល |
stop_reason | string | មូលហេតុដែលចម្លើយបញ្ចប់។ សូមមើលតម្លៃខាងក្រោម។ | គ្រប់ម៉ូដែល |
usage | object | input_tokens និង output_tokens។ | គ្រប់ម៉ូដែល |
sources | array | តែលើ request ដែលមាន web_search: true ហើយការស្វែងរករបស់វារកឃើញអ្វីមួយប៉ុណ្ណោះ៖ លទ្ធផលដែលបានប្រគល់ឱ្យម៉ូដែល នីមួយៗមាន index, title និង url។ [1] ក្នុងចម្លើយគឺជាធាតុដែលមាន index 1។ ក្នុង stream វាមកជាមួយព្រឹត្តិការណ៍ message_delta។ | shannon-1.6-*, shannon-2-*, ក្រុម Shannon 3 |
usage.cache_read_input_tokens | integer | cache_read_input_tokens គឺជាផ្នែកនៃ prompt ដែលអានពី cache; input_tokens គឺផ្នែកដែលនៅសល់។ cache_creation_input_tokens ជានិច្ចជា 0។ | ម៉ូដែល open-weight ដែលបង្ហោះ |
Reply block
| Block | ការពិពណ៌នា |
|---|---|
{"type": "thinking", "thinking": "…"} | ការវែកញែករបស់ម៉ូដែល។ គ្មានសមាជិក signature ទេ។ |
{"type": "text", "text": "…"} | អត្ថបទចម្លើយ។ វាអាចទទេ នៅពេលចម្លើយជាការហៅ tool។ |
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} | ការហៅ tool។ input ជា JSON object។ ផ្ញើលទ្ធផលត្រឡប់ដោយ id ដូចគ្នា។ |
stop_reason
| stop_reason | ការពិពណ៌នា | ផ្ញើដោយ |
|---|---|---|
end_turn | ម៉ូដែលបានបញ្ចប់ចម្លើយរបស់វា ឬ stop_sequences មួយរបស់អ្នកបានលេចឡើង។ | គ្រប់ម៉ូដែល |
tool_use | ចម្លើយមានការហៅ tool មួយ ឬច្រើន។ | គ្រប់ម៉ូដែល |
max_tokens | ចម្លើយត្រូវបានកាត់ត្រង់ដែនកំណត់ output។ | ក្រុម Shannon 3, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 ក្នុង stream |
Streaming
កំណត់ stream ជា true សម្រាប់ server-sent events។ frame នីមួយៗមានបន្ទាត់ event: ដែលមានឈ្មោះ event និងបន្ទាត់ data: ដែលមាន JSON object ដែលនិយាយឈ្មោះដដែលម្តងទៀតក្នុង type។ ជំនួយ stream របស់ Anthropic SDK អាន event ទាំងនេះឱ្យអ្នក៖
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."}]
}' event តាមលំដាប់ដែលវាមកដល់៖
| Event | ទិន្នន័យ | ពេលណា |
|---|---|---|
message_start | message | ជានិច្ចមកមុនគេ។ message មាន id, role, ម៉ូដែល, content ទទេ និង usage ដែលចាប់ផ្តើមពីសូន្យ។ |
content_block_start | index, content_block | block មួយបើក។ content_block គឺជា block text ឬ thinking ទទេ ឬ block tool_use ដែលមាន id និង name របស់វា។ |
content_block_delta | index, delta {"type": "thinking_delta", "thinking"} | បំណែកនៃការវែកញែក សម្រាប់ block thinking។ |
content_block_delta | index, delta {"type": "text_delta", "text"} | បំណែកនៃចម្លើយ សម្រាប់ block text។ |
content_block_delta | index, delta {"type": "input_json_delta", "partial_json"} | អាគុយម៉ង់នៃការហៅ tool ពេញលេញក្នុង delta តែមួយ សម្រាប់ block tool_use។ |
content_block_stop | index | block ដែលមាន index នេះបានបញ្ចប់។ |
message_delta | delta {stop_reason, stop_sequence}, usage | ចុងបញ្ចប់នៃចម្លើយ៖ delta.stop_reason និង usage នៃ request។ |
message_stop | ជានិច្ចមកក្រោយគេ។ |
Block ត្រូវបានដាក់លេខតាម index តាមលំដាប់ដែលវាបើក ហើយ block មួយត្រូវបញ្ចប់មុនពេល block បន្ទាប់បើក។ សូមអាងលើប្រភេទរបស់ block មិនមែនលេខរបស់វាទេ៖ stream អាចបើក block text ទទេមុន បន្ទាប់មក block thinking ហើយប្រគល់ចម្លើយក្នុង block 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 | event ping ដែលមានទិន្នន័យ {"type": "ping"} រៀងរាល់ 15 វិនាទី។ |
| ម៉ូដែល open-weight ដែលបង្ហោះ | បន្ទាត់មតិយោបល់ : keepalive រៀងរាល់ 15 វិនាទី ខណៈម៉ូដែលកំពុងធ្វើការ។ |
stream ដែលបរាជ័យ
ការបរាជ័យក្រោយ stream ចាប់ផ្តើមគឺជា event error ដែលមានខ្លឹមសារដូចចម្លើយកំហុស៖ {"type": "error", "error": {"type", "message"}}។ event បិទ គឺ message_delta និង message_stop នៅតែតាមក្រោយ។ សូមចាត់ទុកចម្លើយថាបរាជ័យ ហើយផ្ញើ request ម្តងទៀត។
កំហុស
កំហុសប្រើខ្លឹមសារកំហុសរបស់ Anthropic៖ type ជា error ហើយ object 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 key ឬ key មិនស្គាល់ ឬត្រូវបានដកហូត។ |
400 | invalid_request_error | unknown model: <id> | model មិនមែនជា model id របស់ Shannon ទេ។ |
400 | invalid_request_error | No user message provided | កម្រិត Shannon៖ request មិនមានអត្ថបទ user និងគ្មាន tools។ |
400 | invalid_request_error | <id> does not accept image input | រូបភាពត្រូវបានផ្ញើទៅម៉ូដែល open-weight ដែលបង្ហោះ ដែលមិនមាន image input។ |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | បាត់ messages ឬ field មួយមានប្រភេទ 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 request ក្នុងមួយនាទីលើគណនីរបស់អ្នក។ |
429 | rate_limit_error | Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan | shannon-coder-1៖ ការហៅ Shannon Coder របស់គម្រោងអ្នកសម្រាប់រយៈពេល 4 ម៉ោងបច្ចុប្បន្នត្រូវបានប្រើអស់។ |
500 | server_error | The model backend failed to answer. Please retry. | ម៉ូដែលមិនបានបង្កើតចម្លើយទេ។ សូមផ្ញើ request ម្តងទៀត។ |
502 | api_error | The model backend failed to answer. Please retry. | ម៉ូដែលមិនបានបង្កើតចម្លើយទេ។ សូមផ្ញើ request ម្តងទៀត។ |
ការរាប់ tokens
POST /v1/messages/count_tokens ទទួលខ្លឹមសារដូចគ្នានឹង request សារ (model, system, messages, tools) ហើយឆ្លើយតប {"input_tokens": n}៖ ចំនួន input token ដែល request នឹងត្រូវគិតថ្លៃ។ វារាប់សម្រាប់ម៉ូដែល open-weight ដែលបង្ហោះ ឥតគិតថ្លៃ ហើយមិនត្រូវរាប់ក្នុង 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 អត្ថបទធម្មតា និងដែនកំណត់។ ការរាប់ token