Անցնել բովանդակությանը
Արագ մեկնարկ

Արագ մեկնարկ

Կատարեք առաջին հարցումը՝ ստացեք բանալին, ուղարկեք մեկ հաղորդագրություն և կարդացեք պատասխանը։ API-ն խոսում է OpenAI և Anthropic ձևաչափերով, ուստի ձեր արդեն օգտագործվող SDK-ն աշխատում է base URL-ը և բանալին փոխելուց հետո։

1. Ստացեք ձեր բանալին

Յուրաքանչյուր հաշիվ ունի մեկ API բանալի։ Մուտք գործեք, բացեք «Բանալիներ և օգտագործում» և պատճենեք այն։ Բանալին աշխատում է յուրաքանչյուր endpoint-ում և յուրաքանչյուր մոդելի վրա։ Բանալիներ և օգտագործում

2. Ուղղեք ձեր կլիենտը դեպի API

Բոլոր endpoint-ները գտնվում են մեկ base URL-ի տակ։ OpenAI SDK-ն այն վերցնում է վերջում /v1-ով, Anthropic SDK-ն՝ առանց դրա, որովհետև ինքն է ավելացնում /v1/messages։

Կլիենտ Base URL
OpenAI SDK-ներ և OpenAI-համատեղելի կլիենտներ https://api.shannon-ai.com/v1
Anthropic SDK-ներ https://api.shannon-ai.com

Տեքստ ստեղծում են երեք endpoint։ Դրանք հասնում են նույն մոդելներին. ընտրեք այն, որի ձևաչափն արդեն օգտագործում է ձեր կոդը։

Էնդփոյնթ Ձևաչափ
POST /v1/chat/completions OpenAI Chat Completions
POST /v1/messages Anthropic Messages
POST /v1/responses OpenAI Responses

3. Ուղարկեք առաջին հարցումը

Ուղարկեք մեկ user հաղորդագրություն shannon-3-ին Chat Completions endpoint-ում։ YOUR_API_KEY-ը փոխարինեք ձեր բանալիով։

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)
Դաշտ Տեսակ Լռելյայն Նկարագրություն
model string Պատասխանող մոդելի id-ն։ Id-ները թվարկված են «Մոդելներ և գներ» էջում։
messages array Զրույցն առայժմ՝ role և content ունեցող օբյեկտներ։ Վերջին user հաղորդագրությունը prompt-ն է։ Պարտադիր է։
max_tokens integer 4096 Հարցման ելքի բյուջեն՝ 1-ից 65,536։ Հարցումը վերապահում է այս քանակը ձեր մնացորդից և գանձվում է իրականում օգտագործածի համար։
stream boolean false true-ը պատասխանն ուղարկում է կտոր առ կտոր՝ գրվելու ընթացքում։

Հարցման մարմինը JSON է և պահանջում է Content-Type: application/json header։ Դաշտերի լրիվ ցանկը endpoint-ի էջում է։ Chat Completions

Պատասխանը

Առանց stream-ի կանչը վերադարձնում է մեկ JSON օբյեկտ, երբ պատասխանն ավարտվում է։ Ստորև տեքստերը և թվերը օրինակներ են։

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
  }
}
Դաշտ Տեսակ Նկարագրություն
id string chatcmpl-, որին հաջորդում են 32 տասնվեցական նիշ։
object string Միշտ chat.completion։
created integer Պատասխանի ժամանակը՝ Unix վայրկյաններով։
model string Պատասխանած մոդելի հրապարակված id-ն՝ նաև այն դեպքում, երբ ուղարկել եք alias կամ այլ գրելաձև։
choices array Միշտ մեկ գրառում՝ index 0-ով։
choices[0].message.role string Միշտ assistant։
choices[0].message.content string | null Պատասխանը։ Երբ պատասխանը կրում է tool_calls, այն կարող է null լինել։
choices[0].message.reasoning_content string | null Մոդելի reasoning-ը պատասխանից առաջ, կամ null, երբ այն չկա։
choices[0].message.tool_calls array Առկա է միայն այն դեպքում, երբ մոդելը կանչում է ձեր հայտարարած գործիքներից մեկը։
choices[0].finish_reason string stop՝ պատասխանի համար, tool_calls՝ երբ մոդելը գործիք է կանչում։
usage.prompt_tokens integer Թոքենները, որոնք մոդելը կարդացել է այս պատասխանի համար։ shannon-2-*-ում և Shannon 3 ընտանիքում դա կարող է ավելի շատ լինել, քան ձեր ուղարկած տեքստը։
usage.completion_tokens integer Մոդելի գրած թոքենները։
usage.total_tokens integer Ընդհանուրը։ Shannon մոդելի գանձումը հաշվարկվում է այս թվից։
  • usage-ը պարունակում է թոքենների քանակներ, ոչ թե գումար։ Այն, ինչ կանչը վերցրել է ձեր մնացորդից, ցույց է տրվում յուրաքանչյուր հարցման համար «Բանալիներ և օգտագործում» էջում. ինչպես է հաշվարկվում՝ «Սահմանաչափեր և մնացորդ» էջում։ Սահմանաչափեր և մնացորդ
  • Յուրաքանչյուր պատասխան, նաև սխալն ու հոսքը, ունի x-request-id header։ Եթե ձեր հարցումը կրում է x-request-id header, դրա արժեքը վերադառնում է. այլապես արժեքը 12 տասնվեցական նիշ է։ Պահեք այն ձեր մատյաններում. այն անվանում է հենց այս հարցումը։

Նույն կանչը որպես հոսք

Սահմանեք stream-ը true՝ պատասխանը գրվելու ընթացքում կարդալու համար։ Հարցման մնացած մասը մնում է նույնը։

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)

Հոսքի յուրաքանչյուր շրջանակ մեկ տող է, որը սկսվում է data:-ով և պարունակում է JSON օբյեկտ։ Մեկ շրջանակ՝ տպված մի քանի տողով։

Մեկ շրջանակ
{
  "id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
  "object": "chat.completion.chunk",
  "created": 1791590400,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "delta": {
        "content": "Hello! "
      },
      "finish_reason": null
    }
  ]
}
Շրջանակներ՝ հերթականությամբ delta finish_reason
Մինչ մոդելը տրամաբանում է։ Զրո կամ ավելի շրջանակ։ {"reasoning_content": "…"} null
Պատասխանը կտոր առ կտոր։ Զրո կամ ավելի շրջանակ։ {"content": "…"} null
Վերջին JSON շրջանակը։ Այն կրում է նաև usage. այն պահանջել պետք չէ։ {} "stop"
Հոսքի վերջը՝ data: [DONE] տողը։
  • Պատասխանն ունի 200 կարգավիճակ և content-type: text/event-stream։ Յուրաքանչյուր շրջանակ data: <json> տող է, որին հաջորդում է դատարկ տող։
  • : ping տողը գալիս է ամեն 15 վայրկյանը մեկ։ Սա մեկնաբանություն է, որը բաց է պահում կապը. SSE կլիենտները բաց են թողնում այն։
  • Հոսքի բացվելուց հետո ձախողումը գալիս է data: {"error": {…}} շրջանակով։ Կարգավիճակը մնում է 200, ուստի ստուգեք շրջանակները։

Ստրիմինգ

Եթե կանչը ձախողվի

Սխալը JSON օբյեկտ է error-ով, որը պարունակում է type և message։ Սրանք այն պատասխաններն են, որոնց առաջին կանչը ամենահաճախ հանդիպում է։

Կարգավիճակ Տեսակ Հաղորդագրություն Ինչ է նշանակում
401 authentication_error Missing authentication Ոչ մի բանալի չի հասել API-ին։ Ուղարկեք Authorization: Bearer՝ ձեր բանալիով։
401 authentication_error Invalid API key Բանալին հաշվի ընթացիկ բանալին չէ։ Պատճենեք այն նորից «Բանալիներ և օգտագործում» էջից։
400 invalid_request_error unknown model: <id> model-ը հրապարակված id չէ։ Օգտագործեք id «Մոդելներ և գներ» էջից։
422 invalid_request_error Failed to deserialize the JSON body into the target type… Դաշտն ունի սխալ JSON տեսակ, կամ messages-ը բացակայում է։
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan Հարցման ելքի բյուջեն չի տեղավորվում ձեր մնացորդի մեջ։

Սխալների մշակում

Ուր գնալ հաջորդը

  • Մոդելներ և գներ — Ընտրեք մոդել՝ id-ներ, համատեքստի պատուհաններ և գներ։
  • Chat Completions — Ձեր կանչած endpoint-ի յուրաքանչյուր հարցման դաշտ, պատասխանի դաշտ և հոսքի իրադարձություն։
  • Ստրիմինգ — Հոսքի շրջանակները, keep-alive տողերը և սխալները հոսքի ներսում։
  • Ֆունկցիայի կանչ — Թողեք մոդելին կանչել ձեր ֆունկցիաները։
  • Սահմանաչափեր և մնացորդ — Ինչ է վերապահում և ինչ արժե հարցումը, և քանի հարցում կարող եք ուղարկել։
  • API Playground — Փորձեք հարցումները բրաուզերում՝ ձեր բանալիով։