រំលងទៅមាតិកា
ទ្រង់ទ្រាយ Anthropic

ទ្រង់ទ្រាយ 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)

ចម្លើយគឺជាសារដែល content របស់វាជាបញ្ជីនៃ block។ រក block តាម type របស់វា៖ នៅពេលម៉ូដែលវែកញែក block ដំបូងគឺ thinking ហើយអត្ថបទមកបន្ទាប់ពីវា។

200 JSON
{
  "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)

លើម៉ូដែល open-weight ដែលបង្ហោះ usage រាយការណ៍ token ដែលអានពី prompt cache ដាច់ពី input token ផ្សេងទៀត។

200 JSON
{
  "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៖

tools
[
  {
    "name": "get_weather",
    "description": "Current weather for a city.",
    "input_schema": {
      "type": "object",
      "properties": {
        "city": {
          "type": "string"
        }
      },
      "required": [
        "city"
      ]
    }
  }
]

content នៃចម្លើយដែលហៅវា៖

200 content
[
  {
    "type": "text",
    "text": ""
  },
  {
    "type": "tool_use",
    "id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
    "name": "get_weather",
    "input": {
      "city": "Paris"
    }
  }
]

ដំណើរការ tool បន្ទាប់មកផ្ញើ request ម្តងទៀត ដោយបន្ថែមការហៅ និង block tool_result ទៅក្នុង messages៖

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)

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 ក្រោយ។

200 text/event-stream
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 នេះឆ្លើយតបញឹកញាប់បំផុត។ បញ្ជីពេញលេញ ជាមួយអ្វីដែលត្រូវព្យាយាមម្តងទៀត មានទំព័រផ្ទាល់ខ្លួន។ ការគ្រប់គ្រងកំហុស

400 JSON
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
ស្ថានភាព ប្រភេទ សារ ពេលណា
401 authentication_error Missing authentication
Invalid 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)

ការរាប់មានទំព័រផ្ទាល់ខ្លួន ជាមួយ endpoint អត្ថបទធម្មតា និងដែនកំណត់។ ការរាប់ token