Kalo te përmbajtja
Chat Completions

Chat Completions

POST /v1/chat/completions merr një bisedë dhe kthen mesazhin e radhës të modelit në formatin OpenAI Chat Completions. Përdoreni nga çdo SDK OpenAI ose përmes HTTP të thjeshtë; kjo faqe është referenca fushë pas fushe.

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

Kërkesa më e vogël është një id modeli dhe një mesazh përdoruesi.

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": "Say hello in one sentence."}],
)

print(response.choices[0].message.content)

Përgjigjja është një objekt JSON:

200 JSON
{
  "id": "chatcmpl-5f0c1e7a9b3d4c62a8e1f07d2b46c9a3",
  "object": "chat.completion",
  "created": 1791625200,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello, it is good to meet you.",
        "reasoning_content": "The user wants a greeting in one sentence. Keep it short and friendly."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1184,
    "completion_tokens": 46,
    "total_tokens": 1230
  }
}

Header-at

Header-at e kërkesës

Header Vlera Përshkrimi
Authorization Bearer YOUR_API_KEY Çelësi juaj API. x-api-key: YOUR_API_KEY pranohet në vend të tij në çdo endpoint.
Content-Type application/json I detyrueshëm. Çdo vlerë tjetër kthen 415.
x-request-id Opsional. Id-ja juaj për kërkesën. Kthehet e pandryshuar në përgjigje.

Header-at e përgjigjes

Header Përshkrimi
x-request-id Në çdo përgjigje, përfshirë gabimet dhe stream-et: vlera që dërguat, ose 12 karaktere heksadecimale kur nuk dërguat asnjë. Citojeni kur raportoni një problem.
content-type application/json, ose text/event-stream kur stream është true.

Fushat e kërkesës

Vetëm messages është i detyrueshëm. Kolona Zbatohet nga emërton modelet te të cilat një fushë ndryshon përgjigjen. Modelet open-weight të hostuara janë dymbëdhjetë id-të e listës së modeleve; familja Shannon 3 është shannon-3, shannon-3-pro, shannon-3.1 dhe shannon-3.1-pro. Modelet dhe çmimet

Fusha Lloji Parazgjedhja Përshkrimi Zbatohet nga
model string shannon-1.6-lite Modeli që përgjigjet: një id nga lista e modeleve. Dërgojeni me çdo kërkesë. Përputhja nuk është e ndjeshme ndaj shkronjave të mëdha. Një id që nuk është e publikuar kthen 400 unknown model. Të gjitha modelet
messages array E detyrueshme. Biseda, me mesazhin më të vjetër së pari. Shihni Mesazhet më poshtë. Të gjitha modelet
stream boolean false true e dërgon përgjigjen si server-sent events ndërsa shkruhet. Të gjitha modelet
max_tokens integer 4096 Kufiri i sipërm i përgjigjes, në tokens. Një vlerë jashtë intervalit 1 deri 65,536 zhvendoset brenda tij. Është edhe sasia që rezervohet nga bilanci juaj gjatë ekzekutimit të kërkesës. Shihni Gjatësia e daljes më poshtë. Modele open-weight të hostuara, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
max_completion_tokens integer Njësoj si max_tokens. Kur dërgohen të dyja, përdoret max_tokens. Modele open-weight të hostuara, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
temperature number Temperatura e kampionimit. Te modelet open-weight të hostuara parazgjedhja është 1 dhe vlerat mbahen mes 0 dhe 2. Modele open-weight të hostuara, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number 0.95 Kampionim nucleus. Vlerat mbahen mes 0 dhe 1. Modele open-weight të hostuara
seed integer Seed i kampionuesit, çdo numër i plotë. Pa të, seed-i nxirret nga modeli dhe biseda, kështu që e njëjta kërkesë e dërguar dy herë përdor të njëjtin seed. Modele open-weight të hostuara
stop string | array Një string ose një varg stringjesh. Përdoren deri në 4. Përgjigjja mbaron para të parit që shfaqet; vetë teksti i ndalimit nuk kthehet. Modele open-weight të hostuara
reasoning_effort string high Sa arsyeton modeli para se të përgjigjet: off, low, medium ose high. none dhe minimal nënkuptojnë off, default nënkupton medium, max nënkupton high. Çdo vlerë tjetër kthen 400. Modele open-weight të hostuara
reasoning object I njëjti cilësim në formë objekti: {"effort": "low"}. Kur dërgohen të dyja, përdoret reasoning_effort. Modele open-weight të hostuara
tools array Funksionet që modeli mund t'i thërrasë, secili si {"type": "function", "function": {"name", "description", "parameters"}}. Thirrjet e modelit kthehen te tool_calls; kodi juaj i ekzekuton. Të gjitha modelet
tool_choice string | object auto "auto" e lë modelin të vendosë. "required" e detyron të thërrasë një mjet. {"type": "function", "function": {"name": "…"}} e detyron të thërrasë atë mjet. Modele open-weight të hostuara
response_format object {"type": "json_object"} për përgjigje JSON, ose {"type": "json_schema", "json_schema": {…}} për një përgjigje që ndjek skemën tuaj. Të gjitha nivelet Shannon; modelet open-weight të hostuara siç listohen për çdo id
web_search boolean false true e lë modelin të kërkojë në ueb para se të përgjigjet. shannon-1.6-*, shannon-2-*, familja Shannon 3

Fusha të tjera OpenAI, si n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store dhe prompt_cache_key, pranohen që kodi ekzistues i klientit të punojë pa ndryshime. Ato nuk e ndryshojnë përgjigjen: ka gjithmonë një choice, dhe një stream mbaron gjithmonë me përdorim.

Një fushë me lloj JSON të gabuar, për shembull "max_tokens": "100", kthen 422. Po ashtu edhe një kërkesë pa messages.

Mjetet, dalja e strukturuar, arsyetimi dhe kërkimi në ueb kanë secili faqen e vet: Thirrje funksionesh, Dalje të strukturuara, Përpjekja e arsyetimit, Kërkim i integruar në ueb.

Një kërkesë me opsione

Kjo kërkesë cakton një mesazh sistemi, fushat e kampionimit dhe përpjekjen e arsyetimit. Përdor një model open-weight të hostuar, i cili i zbaton të gjitha.

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="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
    messages=[
        {"role": "system", "content": "You are a physics teacher. Answer in two sentences."},
        {"role": "user", "content": "Why is the sky blue?"},
    ],
    max_tokens=512,
    temperature=0.3,
    top_p=0.9,
    seed=7,
    stop=["\n\n"],
    reasoning_effort="low",
)

message = response.choices[0].message
print(message.reasoning_content)  # the reasoning
print(message.content)            # the answer
print(response.usage)

Përgjigjja ka të njëjtën formë si më sipër. usage i saj shton dy detaje te modelet open-weight të hostuara: tokens-at e prompt-it të lexuar nga cache-i dhe tokens-at e shpenzuar për arsyetim.

200 JSON
{
  "usage": {
    "prompt_tokens": 31,
    "completion_tokens": 62,
    "total_tokens": 93,
    "prompt_tokens_details": {
      "cached_tokens": 0
    },
    "completion_tokens_details": {
      "reasoning_tokens": 21
    }
  }
}

Gjatësia e daljes

max_tokens bën dy gjëra. Së pari, është numri i tokens-ave që rezervohet nga bilanci juaj kur kërkesa fillon. Kur përgjigjja është e plotë, ajo sasi zëvendësohet me tokens-at që përdori kërkesa. Nëse max_tokens është më i madh se ç'ka mbetur nga bilanci juaj, kërkesa kthen 429 Quota exceeded edhe kur vetë përgjigjja do të kishte ngjitur. Dërgoni një max_tokens më të ulët për të rezervuar më pak.

shannon-coder-1 numërohet ndryshe në këtë endpoint: çdo kërkesë është një nga thirrjet Shannon Coder të planit tuaj, dhe për të nuk rezervohen tokens. Kufijtë dhe bilanci

Së dyti, kufizon gjatësinë e përgjigjes te këto modele:

Modelet Çfarë bën max_tokens
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 Përgjigjja ndalon kur arrin kufirin. Një stream pastaj mbaron me finish_reason length.
Modele open-weight të hostuara Teksti i përgjigjes ndalon te max_tokens. Arsyetimi nuk numërohet kundër tij. Vlerat nën 256 veprojnë si 256.

Pa max_tokens ose max_completion_tokens, vlera është 4,096. Te shannon-coder-1 është 65,536.

Mesazhet

Çdo mesazh është një objekt me role dhe content. content është një string, ose një varg pjesësh kur mesazhi mban më shumë se tekst.

Roli Përshkrimi Zbatohet nga
system Udhëzime për modelin. Vendoseni të parin. Te nivelet Shannon përdoret mesazhi i parë system. Modele open-weight të hostuara, shannon-1.6-*, shannon-2-*, shannon-coder-1
developer Lexohet si system. Modele open-weight të hostuara
user Ajo që pyesni. Te nivelet Shannon mesazhi i fundit user është prompt-i dhe mesazhet para tij janë historiku. Të gjitha modelet
assistant Përgjigjet e mëparshme të modelit. Mbani tool_calls të tij kur dërgoni pas tij një rezultat mjeti. Të gjitha modelet
tool Rezultati i një thirrjeje mjeti: tool_call_id mban id-në e thirrjes dhe content rezultatin si string. Të gjitha modelet

Me një id të familjes Shannon 3, vendosini udhëzimet që duhet të mbahen në mesazhin user.

Te nivelet Shannon një kërkesë pa tekst përdoruesi dhe pa tools kthen 400 No user message provided.

Pjesët e përmbajtjes

Pjesa Përshkrimi I disponueshëm në
{"type": "text", "text": "…"} Tekst i thjeshtë. Të gjitha modelet
{"type": "image_url", "image_url": {"url": "…"}} Një imazh, si URL data: me përmbajtje base64 ose si URL http(s). Familja Shannon 3, shannon-1.6-lite, shannon-1.6-pro, dhe modelet open-weight të hostuara që listojnë hyrje imazhi
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Një dokument (PDF, Word, PowerPoint ose Excel), si base64 ose me URL. Familja Shannon 3

Madhësitë, kufijtë dhe lista e plotë e formave kanë faqen e tyre. Imazhet dhe skedarët

Objekti i përgjigjes

Fusha Lloji Përshkrimi
id string chatcmpl- e ndjekur nga 32 karaktere heksadecimale.
object string Gjithmonë chat.completion.
created integer Koha e përgjigjes, në sekonda Unix.
model string Id-ja kanonike e modelit që u përgjigj. Mund të ndryshojë në shkrim nga id-ja që dërguat.
choices array Gjithmonë saktësisht një choice, me index 0.
choices[0].message.role string Gjithmonë assistant.
choices[0].message.content string | null Teksti i përgjigjes. Me tool_calls është null te nivelet Shannon; modelet open-weight të hostuara mund të dërgojnë tekst pranë thirrjeve.
choices[0].message.reasoning_content string | null Arsyetimi që modeli shkroi para përgjigjes, ose null kur nuk ka.
choices[0].message.tool_calls array Është i pranishëm vetëm kur modeli thërret mjete. Çdo hyrje ka një id, type function, dhe function me name dhe arguments si string JSON.
choices[0].message.annotations array Vetëm te një kërkesë me web_search: true kërkimi i së cilës gjeti diçka. Një url_citation për çdo burim që emërton një shenjë te content, me url, title, start_index dhe end_index (pozicioni i shenjës, i numëruar në karaktere, fundi nuk përfshihet).
choices[0].finish_reason string Pse mbaroi përgjigjja. Shihni Arsyet e mbarimit.
usage object Tokens-at e kërkesës. Shihni Përdorimi.
sources array Vetëm te një kërkesë me web_search: true kërkimi i së cilës gjeti diçka: rezultatet që iu dhanë modelit, secili me index, title dhe url. [1] në përgjigje është hyrja me index 1.

Arsyet e mbarimit

finish_reason Përshkrimi
stop Modeli e mbaroi përgjigjen, ose u shfaq një string stop.
tool_calls Modeli thërret një ose më shumë mjete. Ekzekutojini dhe dërgoni rezultatet në mesazhe tool.
length Përgjigjja u ndërpre te kufiri i daljes. Raportohet në stream-et e shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 dhe familjes Shannon 3.

Një përgjigje pa stream raporton stop ose tool_calls.

Përdorimi

Fusha Lloji Përshkrimi I disponueshëm në
usage.prompt_tokens integer Tokens-at e hyrjes. Të gjitha modelet
usage.completion_tokens integer Tokens-at e daljes: arsyetimi, përgjigjja dhe thirrjet e mjeteve së bashku. Të gjitha modelet
usage.total_tokens integer prompt_tokens plus completion_tokens. Të gjitha modelet
usage.prompt_tokens_details.cached_tokens integer Pjesa e prompt_tokens që u lexua nga cache-i i prompt-it. Modele open-weight të hostuara
usage.completion_tokens_details.reasoning_tokens integer Pjesa e completion_tokens që u shpenzua për arsyetim. Modele open-weight të hostuara

Te modelet open-weight të hostuara, prompt_tokens janë mesazhet dhe përkufizimet tuaja të mjeteve të numëruara me tokenizuesin e vetë modelit, plus tokens-at e çdo imazhi. Endpoint-et e numërimit të tokens-ave kthejnë të njëjtin numër para se të dërgoni. Numërimi i tokens-ave

Te nivelet Shannon, prompt_tokens numëron gjithçka që modeli lexoi për të shkruar përgjigjen, kështu që është më i madh se vetëm teksti i mesazheve tuaja.

Streaming

Me stream të vendosur në true përgjigjja arrin si ngjarje chat.completion.chunk dhe mbaron me data: [DONE]. Pjesa e fundit para tij mban finish_reason dhe usage; nuk nevojiten stream_options. Format e pjesëve, rreshtat keep-alive dhe gabimet brenda një stream-i kanë faqen e tyre. Transmetim

Gabimet

Një gabim është një objekt JSON me anëtar error. Kontrollet kryhen në këtë radhë: çelësi API, trupi i kërkesës, id-ja e modelit, pastaj bilanci. Tabela liston ato që ky endpoint kthen më shpesh. Lista e plotë, me atë që duhet provuar përsëri, ka faqen e vet. Trajtimi i gabimeve

400 JSON
{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Statusi Lloji Mesazhi Kur
401 authentication_error Missing authentication
Invalid API key
Nuk u dërgua çelës API, ose çelësi është i panjohur ose i shfuqizuar.
400 invalid_request_error unknown model: <id> model nuk është id e publikuar.
400 invalid_request_error No user message provided Nivelet Shannon: kërkesa nuk ka tekst përdoruesi dhe nuk ka tools.
400 invalid_request_error <id> does not accept image input Një pjesë imazhi iu dërgua një modeli open-weight të hostuar pa hyrje imazhi.
400 invalid_request_error <id> does not accept response_format response_format iu dërgua një modeli open-weight të hostuar pa dalje të strukturuar.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high reasoning_effort mban një vlerë jashtë listës.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … messages mungon, ose një fushë ka lloj JSON të gabuar.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens është më i madh se ç'ka mbetur nga bilanci juaj.
429 rate_limit_error Too many requests. Retry in <n>s. Mbrojtja nga vërshimi i kërkesave: më shumë se 120 kërkesa në një minutë në llogarinë tuaj.
500 server_error The model backend failed to answer. Please retry. Modeli nuk prodhoi përgjigje. Dërgoni kërkesën përsëri.
502 api_error The model backend failed to answer. Please retry. I njëjti, te familja Shannon 3 dhe modelet open-weight të hostuara.