Kontentga o'tish
Anthropic formati

Anthropic formati

POST /v1/messages Anthropic Messages formatidagi so'rovni qabul qiladi va shu formatda javob beradi, streaming bilan yoki usiz. Uni Anthropic SDK bilan va unga asoslangan vositalar, masalan Claude Code bilan ishlating: base URL'ni o'rnating, Shannon API kalitingizdan foydalaning va Shannon model id'sini ko'rsating.

POST https://api.shannon-ai.com/v1/messages

Anthropic SDK'ni Shannon base URL'iga yo'naltiring. SDK /v1/messages'ni o'zi qo'shadi va kalitingizni x-api-key sarlavhasida yuboradi.

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)

Javob — content'i bloklar ro'yxati bo'lgan xabar. Bloklarni type bo'yicha toping: model mulohaza qilgan bo'lsa, birinchi blok thinking, matn undan keyin keladi.

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
  }
}

Sarlavhalar

Sarlavha Qiymat Tavsif
x-api-key YOUR_API_KEY API kalitingiz. Uning o'rniga Authorization: Bearer YOUR_API_KEY ham qabul qilinadi.
content-type application/json Majburiy.
anthropic-version 2023-06-01 Qabul qilinadi, majburiy emas. Anthropic SDK 2023-06-01 yuboradi; qiymatidan qat'i nazar, javob formati bir xil.
anthropic-beta Qabul qilinadi, majburiy emas.
x-request-id Ixtiyoriy. So'rov uchun o'zingizning id'ingiz. U javobda o'zgarishsiz qaytadi; bo'lmasa javobda 12 ta o'n oltilik belgidan iborat id bo'ladi.

So'rov maydonlari

Faqat messages majburiy. Qo'llaydi ustuni maydon javobni o'zgartiradigan modellarni nomlaydi. Xostingdagi open-weight modellar — model ro'yxatidagi o'n ikkita id; Shannon 3 oilasi — shannon-3, shannon-3-pro, shannon-3.1 va shannon-3.1-pro. Modellar va narxlar

Maydon Tur Standart Tavsif Qo'llaydi
model string shannon-1.6-lite Model ro'yxatidagi Shannon model id'si. Uni har bir so'rov bilan yuboring. Moslashtirishda harf registri hisobga olinmaydi. Boshqa har qanday nom 400 unknown model qaytaradi, shuning uchun o'z model nomlarini yuboradigan vositani Shannon id'siga sozlash kerak. Barcha modellar
messages array Majburiy. Suhbat, eng eski xabar birinchi, user va assistant rollari bilan. Quyida Xabarlar va kontent bloklariga qarang. Barcha modellar
system string | array Model uchun ko'rsatmalar: satr yoki matn bloklari massivi. Quyida System promptga qarang. Xostingdagi open-weight modellar, shannon-1.6-*, shannon-2-*, shannon-coder-1
max_tokens integer 4096 Javobning yuqori chegarasi, token bilan. Bu endpointda ixtiyoriy; Anthropic SDK uni doim yuboradi. 1 dan 65,536 gacha oraliqdan tashqaridagi qiymat shu oraliqqa keltiriladi. Shuningdek, so'rov bajarilayotganda balansingizdan ajratib qo'yiladigan miqdor ham shu. Xostingdagi open-weight modellar, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
stream boolean false true javobni server-sent events sifatida yuboradi. Quyida Streamingga qarang. Barcha modellar
temperature number Sampling temperaturasi. Xostingdagi open-weight modellarda qiymatlar 0 va 2 oralig'ida saqlanadi. Xostingdagi open-weight modellar, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number Nucleus sampling. Xostingdagi open-weight modellar
stop_sequences array 4 tagacha satr. Javob paydo bo'lgan birinchisidan oldin tugaydi. stop_reason end_turn bo'lib qoladi. Xostingdagi open-weight modellar
tools array Model chaqirishi mumkin bo'lgan tool'lar, har biri {"name", "description", "input_schema"} shaklida. Quyida Tool'larga qarang. Barcha modellar
tool_choice object {"type": "auto"} modelga o'zi qaror qilishga imkon beradi, {"type": "any"} uni tool chaqirishga majbur qiladi, {"type": "tool", "name": "…"} esa aynan o'sha tool'ni chaqirishga majbur qiladi. Xostingdagi open-weight modellar
thinking object Model javob berishdan oldin qanchalik mulohaza qilishi. Quyida Thinkingga qarang. Xostingdagi open-weight modellar
web_search boolean false Formatga Shannon qo'shimchasi: true modelga javob berishdan oldin veb'da qidirishga imkon beradi. shannon-1.6-*, shannon-2-*, Shannon 3 oilasi

max_tokens bo'lmasa qiymat 4,096, shannon-coder-1 da esa 65,536.

Mavjud mijoz kodi o'zgarishsiz ishlashi uchun metadata, top_k, service_tier va bloklardagi cache_control belgilari qabul qilinadi. Ular javobni o'zgartirmaydi; xostingdagi open-weight modellarda prompt keshlash avtomatik.

Sxemaga mos JSON javob Chat Completions'da response_format bilan, Responses'da text.format bilan so'raladi. Tuzilgan chiqishlar

System prompt va thinking bilan so'rov

Bu so'rov system prompt, thinking byudjeti, temperatura va stop ketma-ketligini yuboradi. U xostingdagi open-weight modeldan foydalanadi, u hammasini qo'llaydi.

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)

Xostingdagi open-weight modellarda usage prompt keshidan o'qilgan tokenlarni boshqa kirish tokenlaridan alohida ko'rsatadi.

200 JSON
{
  "usage": {
    "input_tokens": 31,
    "cache_read_input_tokens": 0,
    "cache_creation_input_tokens": 0,
    "output_tokens": 62
  }
}

System prompt

system — satr yoki [{"type": "text", "text": "…"}] shaklidagi matn bloklari massivi. Bloklar matnlari qator uzilishi bilan birlashtiriladi.

Uni xostingdagi open-weight modellar, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro va shannon-coder-1 qo'llaydi. Shannon 3 oilasi id'sida bajarilishi shart bo'lgan ko'rsatmalarni user xabariga qo'ying.

Xabarlar va kontent bloklari

Xabarda role (user yoki assistant) va content bo'ladi. content — satr yoki bloklar massivi.

Blok Tavsif Mavjud
{"type": "text", "text": "…"} Matn. Barcha modellar
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}
{"type": "image", "source": {"type": "url", "url": "…"}}
user xabaridagi rasm, base64 yoki URL orqali. Shannon 3 oilasi, shannon-1.6-lite, shannon-1.6-pro va rasm kirishini ko'rsatgan xostingdagi open-weight modellar
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} user xabaridagi hujjat (PDF, Word, PowerPoint yoki Excel), base64 yoki URL orqali. Shannon 3 oilasi
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} assistant xabarida: model oldingi javobda qilgan tool chaqiruvi. Barcha modellar
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} user xabarida: o'sha chaqiruvning natijasi. content — satr yoki matn bloklari ro'yxati. Barcha modellar

Oldingi javobning content'ini o'zgartirmay qaytarib yuborishingiz mumkin: text va tool_use bloklari o'qiladi, thinking bloklari o'tkazib yuboriladi.

Shannon darajalarida rasmlar va hujjatlar oxirgi user xabaridan o'qiladi. O'lchamlar va limitlar alohida sahifada. Rasmlar va fayllar

Thinking

Xostingdagi open-weight modellar thinking'ni mulohaza darajasiga moslaydi. Maydon bo'lmasa daraja yuqori bo'ladi.

Shakl budget_tokens Ta'siri
{"type": "disabled"} Mulohazasiz. Javobda thinking bloki yo'q.
{"type": "enabled", "budget_tokens": 2048} ≤ 2,048 Past daraja.
{"type": "enabled", "budget_tokens": 8192} ≤ 8,192 O'rta daraja.
{"type": "enabled", "budget_tokens": 16000} > 8,192 Yuqori daraja.

Mulohaza qiladigan model o'z mulohazasini matndan oldin {"type": "thinking", "thinking": "…"} bloki sifatida qaytaradi. Mulohaza qiladigan Shannon darajalari ham uni yuboradi.

Darajalar o'z sahifasida tasvirlangan. Mulohaza darajasi

Tool'lar

Tool — kodingiz bajaradigan funksiya. Har birini name, description va input_schema bilan tasvirlang. Model tool xohlasa, javobda tool_use bloki bo'ladi va stop_reason tool_use bo'ladi.

tools ichidagi tool ta'rifi:

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

Uni chaqiradigan javobning content'i:

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

Tool'ni bajaring, so'ng chaqiruv va messages'ga qo'shilgan tool_result bloki bilan so'rovni qayta yuboring:

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

Shakl Ta'siri Qo'llaydi
{"type": "auto"} Model tool chaqirish-chaqirmaslikni o'zi hal qiladi. Bu standart. Barcha modellar
{"type": "any"} Model tool'lardan birini chaqirishi shart. Xostingdagi open-weight modellar
{"type": "tool", "name": "…"} Model nomi berilgan tool'ni chaqirishi shart. Xostingdagi open-weight modellar

Faqat input_schema'li tool'lar o'qiladi. Veb-qidiruv bu endpointda tool emas: web_search maydonini o'rnating.

Tool sikli to'liq o'z sahifasida tasvirlangan. Funksiya chaqirish

Javob

Maydon Tur Tavsif Yuboruvchi
id string msg_ va undan keyin 32 ta o'n oltilik belgi. Barcha modellar
type string Doim message. Barcha modellar
role string Doim assistant. Barcha modellar
model string Javob bergan modelning kanonik id'si. Barcha modellar
content array Javob bloklari shu tartibda: model mulohaza qilgan bo'lsa thinking, text, so'ng har bir tool chaqiruvi uchun bitta tool_use. Barcha modellar
stop_reason string Javob nima uchun tugadi. Quyidagi qiymatlarga qarang. Barcha modellar
usage object input_tokens va output_tokens. Barcha modellar
sources array Faqat web_search: true bilan yuborilgan va qidiruvi nimadir topgan so'rovda: modelga berilgan natijalar, har biri index, title va url bilan. Javobdagi [1] index 1 bo'lgan yozuvdir. Streamda message_delta eventi bilan keladi. shannon-1.6-*, shannon-2-*, Shannon 3 oilasi
usage.cache_read_input_tokens integer cache_read_input_tokens — promptning keshdan o'qilgan qismi; input_tokens — qolgani. cache_creation_input_tokens doim 0. Xostingdagi open-weight modellar

Javob bloklari

Blok Tavsif
{"type": "thinking", "thinking": "…"} Modelning mulohazasi. signature a'zosi yo'q.
{"type": "text", "text": "…"} Javob matni. Javob tool chaqiruvi bo'lsa, u bo'sh bo'lishi mumkin.
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} Tool chaqiruvi. input — JSON obyekti. Natijani o'sha id bilan qaytaring.

stop_reason

stop_reason Tavsif Yuboruvchi
end_turn Model javobini tugatdi yoki stop_sequences'laringizdan biri paydo bo'ldi. Barcha modellar
tool_use Javobda bir yoki bir nechta tool chaqiruvi bor. Barcha modellar
max_tokens Javob chiqish limitida uzildi. Shannon 3 oilasi, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, oqimlarda

Streaming

Server-sent events uchun stream'ni true qiling. Har bir freymda hodisa nomi bilan event: satri va nomni type'da takrorlaydigan JSON obyekti bilan data: satri bor. Anthropic SDK'ning stream yordamchilari bu hodisalarni sizning o'rningizga o'qiydi:

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)

Hodisalar kelish tartibida:

Hodisa Ma'lumot Qachon
message_start message Doim birinchi. message id, rol, model, bo'sh content va noldan boshlanadigan usage'ni o'z ichiga oladi.
content_block_start index, content_block Blok ochiladi. content_block — bo'sh text yoki thinking bloki, yoki id va name'i bor tool_use bloki.
content_block_delta index, delta {"type": "thinking_delta", "thinking"} thinking bloki uchun mulohazaning bir bo'lagi.
content_block_delta index, delta {"type": "text_delta", "text"} text bloki uchun javobning bir bo'lagi.
content_block_delta index, delta {"type": "input_json_delta", "partial_json"} tool_use bloki uchun tool chaqiruvi argumentlari, bitta deltada to'liq.
content_block_stop index Shu index'dagi blok tugallandi.
message_delta delta {stop_reason, stop_sequence}, usage Javob oxiri: delta.stop_reason va so'rovning usage'i.
message_stop Doim oxirgi.

Bloklar index bo'yicha ochilish tartibida raqamlanadi va keyingisi ochilishidan oldin bitta blok tugallanadi. Har bir blokni raqami bo'yicha emas, turi bo'yicha o'qing: oqim avval bo'sh text blokini, so'ng thinking blokini ochishi va javobni keyingi text blokida berishi mumkin.

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

Yuboruvchi Tavsif
Shannon 3 oilasi, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 Ma'lumoti {"type": "ping"} bo'lgan ping hodisasi, har 15 soniyada.
Xostingdagi open-weight modellar : keepalive izoh satri, model ishlayotgan paytda har 15 soniyada.

Muvaffaqiyatsiz oqim

Oqim boshlangandan keyingi nosozlik — xato javobi bilan bir xil tanali error hodisasi: {"type": "error", "error": {"type", "message"}}. Yakunlovchi hodisalar, message_delta va message_stop, baribir ergashadi. Javobni muvaffaqiyatsiz deb hisoblang va so'rovni qayta yuboring.

Xatolar

Xatolar Anthropic xato tanasidan foydalanadi: type — error, error obyekti esa type va message'ni o'z ichiga oladi. Jadvalda bu endpoint eng ko'p qaytaradigan xatolar keltirilgan. To'liq ro'yxat, nimani qayta urinish kerakligi bilan, alohida sahifada. Xatolarni boshqarish

400 JSON
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Holat Tur Xabar Qachon
401 authentication_error Missing authentication
Invalid API key
API kalit yuborilmagan yoki kalit noma'lum yoxud bekor qilingan.
400 invalid_request_error unknown model: <id> model Shannon model id'si emas.
400 invalid_request_error No user message provided Shannon darajalari: so'rovda foydalanuvchi matni ham, tools ham yo'q.
400 invalid_request_error <id> does not accept image input Rasm kirishi yo'q xostingdagi open-weight modelga rasm yuborilgan.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … messages yo'q yoki biror maydon noto'g'ri JSON turida.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens balansingizda qolgan miqdordan katta.
429 rate_limit_error Too many requests. Retry in <n>s. Flood himoyasi: hisobingizdan bir daqiqada 120 tadan ortiq so'rov.
429 rate_limit_error Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan shannon-coder-1: rejangizning joriy 4 soatlik oynadagi Shannon Coder so'rovlari ishlatib bo'lingan.
500 server_error The model backend failed to answer. Please retry. Model javob yaratmadi. So'rovni qayta yuboring.
502 api_error The model backend failed to answer. Please retry. Model javob yaratmadi. So'rovni qayta yuboring.

Tokenlarni sanash

POST /v1/messages/count_tokens xabar so'roviniki bilan bir xil tanani (model, system, messages, tools) qabul qiladi va {"input_tokens": n} qaytaradi: so'rov uchun hisoblanadigan kirish tokenlari soni. U xostingdagi open-weight modellar uchun hisoblaydi, bepul va flood himoyasida hisobga olinmaydi.

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)

Sanash alohida sahifaga ega: oddiy matn endpointi va limitlar bilan. Tokenlarni sanash