Kontentga o'tish
Tez boshlash

Tez boshlash

Birinchi so'rovni yuboring: kalitingizni oling, bitta xabar yuboring va javobni o'qing. API OpenAI va Anthropic formatlarida gaplashadi, shuning uchun siz allaqachon ishlatadigan SDK base URL va kalit o'zgartirilgach ishlaydi.

1. Kalitingizni oling

Har bir hisobda bitta API kalit bor. Tizimga kiring, Keys & usage'ni oching va uni nusxalang. Kalit har bir endpoint va har bir modelda ishlaydi. Keys & usage

2. Mijozingizni API'ga yo'naltiring

Barcha endpointlar bitta base URL ostida. OpenAI SDK uni oxirida /v1 bilan qabul qiladi; Anthropic SDK usiz qabul qiladi, chunki /v1/messagesni o'zi qo'shadi.

Mijoz Base URL
OpenAI SDK'lar va OpenAI bilan mos mijozlar https://api.shannon-ai.com/v1
Anthropic SDK'lar https://api.shannon-ai.com

Uchta endpoint matn hosil qiladi. Ular bir xil modellarga yetadi; kodingiz allaqachon ishlatadigan formatdagisini tanlang.

Endpoint Format
POST /v1/chat/completions OpenAI Chat Completions
POST /v1/messages Anthropic Messages
POST /v1/responses OpenAI Responses

3. Birinchi so'rovni yuboring

Chat Completions endpointidagi shannon-3ga bitta user xabari yuboring. YOUR_API_KEYni kalitingiz bilan almashtiring.

POST https://api.shannon-ai.com/v1/chat/completions

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1"
)

response = client.chat.completions.create(
    model="shannon-3",
    messages=[
        {"role": "user", "content": "Hello, Shannon!"}
    ],
    max_tokens=1024
)

print(response.choices[0].message.content)
Maydon Tur Standart Tavsif
model string Javob beradigan modelning id'si. Id'lar Modellar va narxlar sahifasida sanab o'tilgan.
messages array Hozirgacha bo'lgan suhbat: role va contentli obyektlar. Oxirgi user xabari — prompt. Majburiy.
max_tokens integer 4096 So'rovning chiqish byudjeti, 1 dan 65,536 gacha. So'rov bu miqdorni balansingizdan ajratib qo'yadi va haqiqatda ishlatgani uchun hisoblanadi.
stream boolean false true javobni yozilayotgan paytda bo'lak-bo'lak yuboradi.

So'rov tanasi JSON va Content-Type: application/json sarlavhasini talab qiladi. Maydonlarning to'liq ro'yxati endpoint sahifasida. Chat Completions

Javob

streamsiz chaqiruv javob to'liq bo'lganda bitta JSON obyektini qaytaradi. Quyidagi matnlar va sonlar misollar.

200 JSON
{
  "id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
  "object": "chat.completion",
  "created": 1791590400,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! What would you like to work on?",
        "reasoning_content": "A greeting. A short, friendly reply fits."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1386,
    "completion_tokens": 74,
    "total_tokens": 1460
  }
}
Maydon Tur Tavsif
id string chatcmpl- va undan keyin 32 ta o'n oltilik belgi.
object string Doim chat.completion.
created integer Javob vaqti, Unix soniyalarida.
model string Javob bergan modelning e'lon qilingan id'si, alias yoki boshqa yozuv yuborgan bo'lsangiz ham.
choices array Doim bitta yozuv, index 0 bilan.
choices[0].message.role string Doim assistant.
choices[0].message.content string | null Javob. Javob tool_callsni olib kelganda u null bo'lishi mumkin.
choices[0].message.reasoning_content string | null Modelning javobdan oldingi mulohazasi, yoki u bo'lmasa null.
choices[0].message.tool_calls array Faqat model siz e'lon qilgan tool'lardan birini chaqirganda bo'ladi.
choices[0].finish_reason string Javob uchun stop, model tool chaqirganda tool_calls.
usage.prompt_tokens integer Model shu javob uchun o'qigan tokenlar. shannon-2-* va Shannon 3 oilasida bu siz yuborgan matndan ko'p bo'lishi mumkin.
usage.completion_tokens integer Model yozgan tokenlar.
usage.total_tokens integer Jami. Shannon modeli hisobi shu sondan hisoblanadi.
  • usage pul emas, token sonlarini o'z ichiga oladi. Chaqiruv balansingizdan nima olgani har bir so'rov bo'yicha Keys & usage'da ko'rsatiladi; qanday hisoblanishi Limitlar va balans sahifasida. Limitlar va balans
  • Har bir javob, xato va oqim ham, x-request-id sarlavhasiga ega. So'rovingizda x-request-id sarlavhasi bo'lsa, uning qiymati qaytadi; bo'lmasa qiymat 12 ta o'n oltilik belgi. Uni jurnallaringizda saqlang: u aynan shu bitta so'rovni nomlaydi.

Xuddi shu chaqiruv oqim sifatida

Javobni yozilayotgan paytda o'qish uchun streamni true qiling. So'rovdagi qolgan hamma narsa o'zgarmaydi.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1"
)

stream = client.chat.completions.create(
    model="shannon-3",
    messages=[
        {"role": "user", "content": "Hello, Shannon!"}
    ],
    max_tokens=1024,
    stream=True
)

for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

Oqimning har bir freymi data: bilan boshlanadigan va JSON obyektini o'z ichiga olgan bitta satr. Bir nechta satrda chop etilgan bitta freym:

Bitta freym
{
  "id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
  "object": "chat.completion.chunk",
  "created": 1791590400,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "delta": {
        "content": "Hello! "
      },
      "finish_reason": null
    }
  ]
}
Freymlar, tartibda delta finish_reason
Model mulohaza qilayotgan paytda. Nol yoki undan ko'p freym. {"reasoning_content": "…"} null
Javob, bo'lak-bo'lak. Nol yoki undan ko'p freym. {"content": "…"} null
Oxirgi JSON freymi. U usageni ham olib keladi; buni so'rashingiz shart emas. {} "stop"
Oqim oxiri: data: [DONE] satri.
  • Javob 200 holati va content-type: text/event-stream bilan keladi. Har bir freym data: <json> satri va undan keyingi bo'sh satrdan iborat.
  • Har 15 soniyada : ping satri keladi. Bu ulanishni ochiq ushlab turadigan izoh; SSE mijozlari uni o'tkazib yuboradi.
  • Oqim ochilgandan keyingi nosozlik data: {"error": {…}} freymi sifatida keladi. Holat 200 bo'lib qoladi, shuning uchun freymlarni tekshiring.

Oqim

Chaqiruv muvaffaqiyatsiz bo'lsa

Xato — type va messageni o'z ichiga olgan errorli JSON obyekti. Birinchi chaqiruv eng ko'p duch keladigan javoblar shular.

Holat Tur Xabar Nimani anglatadi
401 authentication_error Missing authentication API'ga kalit yetib bormagan. Authorization: Bearer va undan keyin kalitingizni yuboring.
401 authentication_error Invalid API key Kalit hisobning joriy kaliti emas. Uni Keys & usage'dan qayta nusxalang.
400 invalid_request_error unknown model: <id> model e'lon qilingan id emas. Modellar va narxlar sahifasidagi id'dan foydalaning.
422 invalid_request_error Failed to deserialize the JSON body into the target type… Maydon noto'g'ri JSON turida yoki messages yo'q.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan So'rovning chiqish byudjeti balansingizga sig'maydi.

Xatolarni boshqarish

Keyin qayerga borish kerak

  • Modellar va narxlar — Model tanlang: id'lar, kontekst oynalari va narxlar.
  • Chat Completions — Chaqirgan endpointingizning har bir so'rov maydoni, javob maydoni va oqim hodisasi.
  • Oqim — Oqim freymlari, keep-alive satrlari va oqim ichidagi xatolar.
  • Funksiya chaqirish — Modelga funksiyalaringizni chaqirtiring.
  • Limitlar va balans — So'rov nimani ajratib qo'yishi va qancha turishi hamda qancha so'rov yuborishingiz mumkinligi.
  • API Playground — So'rovlarni brauzerda kalitingiz bilan sinab ko'ring.