Preskoči na sadržaj
Chat Completions

Chat Completions

POST /v1/chat/completions prima razgovor i vraća sljedeću poruku modela u OpenAI Chat Completions formatu. Koristite ga iz bilo kojeg OpenAI SDK-a ili običnim HTTP-om; ova stranica je referenca polje po polje.

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

Najmanji zahtjev je id modela i jedna korisnička poruka.

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)

Odgovor je jedan JSON objekt:

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

Zaglavlja

Zaglavlja zahtjeva

Zaglavlje Vrijednost Opis
Authorization Bearer YOUR_API_KEY Vaš API ključ. Umjesto njega na svakom se endpointu prihvaća x-api-key: YOUR_API_KEY.
Content-Type application/json Obavezno. Svaka druga vrijednost vraća 415.
x-request-id Neobavezno. Vaš vlastiti id zahtjeva. Vraća se nepromijenjen u odgovoru.

Zaglavlja odgovora

Zaglavlje Opis
x-request-id Na svakom odgovoru, uključujući greške i streamove: vrijednost koju ste poslali ili 12 heksadecimalnih znakova ako niste poslali nijednu. Navedite je kada prijavljujete problem.
content-type application/json ili text/event-stream kada je stream true.

Polja zahtjeva

Obavezan je samo messages. Stupac Primjenjuju navodi modele na kojima polje mijenja odgovor. Hostirani open-weight modeli su dvanaest id-ova s popisa modela; obitelj Shannon 3 su shannon-3, shannon-3-pro, shannon-3.1 i shannon-3.1-pro. Modeli i cijene

Polje Tip Zadano Opis Primjenjuju
model string shannon-1.6-lite Model koji odgovara: id s popisa modela. Šaljite ga sa svakim zahtjevom. Podudaranje ne razlikuje velika i mala slova. Id koji nije objavljen vraća 400 unknown model. Svi modeli
messages array Obavezno. Razgovor, najstarija poruka prva. Pogledajte Poruke u nastavku. Svi modeli
stream boolean false true šalje odgovor kao server-sent events dok se piše. Svi modeli
max_tokens integer 4096 Gornja granica odgovora, u tokenima. Vrijednost izvan raspona od 1 do 65,536 pomiče se u taj raspon. To je ujedno iznos koji se odvaja sa stanja dok zahtjev traje. Pogledajte Duljina izlaza u nastavku. Hostirani open-weight modeli, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
max_completion_tokens integer Isto kao max_tokens. Kada se pošalju oba, koristi se max_tokens. Hostirani open-weight modeli, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
temperature number Temperatura uzorkovanja. Na hostiranim open-weight modelima zadano je 1, a vrijednosti se drže između 0 i 2. Hostirani open-weight modeli, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number 0.95 Nucleus sampling. Vrijednosti se drže između 0 i 1. Hostirani open-weight modeli
seed integer Seed uzorkivača, bilo koji cijeli broj. Bez njega seed se izvodi iz modela i razgovora, pa isti zahtjev poslan dvaput koristi isti seed. Hostirani open-weight modeli
stop string | array String ili niz stringova. Koristi se do 4. Odgovor završava prije prvog koji se pojavi; sam stop tekst se ne vraća. Hostirani open-weight modeli
reasoning_effort string high Koliko model rezonira prije nego odgovori: off, low, medium ili high. none i minimal znače off, default znači medium, max znači high. Svaka druga vrijednost vraća 400. Hostirani open-weight modeli
reasoning object Ista postavka u obliku objekta: {"effort": "low"}. Kada se pošalju oba, koristi se reasoning_effort. Hostirani open-weight modeli
tools array Funkcije koje model smije pozvati, svaka kao {"type": "function", "function": {"name", "description", "parameters"}}. Pozivi modela vraćaju se u tool_calls; vaš kod ih izvršava. Svi modeli
tool_choice string | object auto "auto" prepušta odluku modelu. "required" tjera ga da pozove alat. {"type": "function", "function": {"name": "…"}} tjera ga da pozove taj alat. Hostirani open-weight modeli
response_format object {"type": "json_object"} za JSON odgovor ili {"type": "json_schema", "json_schema": {…}} za odgovor koji prati vašu shemu. Sve Shannon razine; hostirani open-weight modeli kako je navedeno po id-u
web_search boolean false true dopušta modelu da pretraži web prije odgovora. shannon-1.6-*, shannon-2-*, obitelj Shannon 3

Ostala OpenAI polja, kao što su n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store i prompt_cache_key, prihvaćaju se kako bi postojeći klijentski kod radio nepromijenjen. Ne mijenjaju odgovor: uvijek postoji jedan izbor, a stream uvijek završava upotrebom.

Polje s pogrešnim JSON tipom, na primjer "max_tokens": "100", vraća 422. Isto vrijedi za zahtjev bez messages.

Alati, strukturirani izlaz, rezoniranje i web pretraga imaju svaki svoju stranicu: Pozivanje funkcija, Strukturirani izlazi, Razina napora rezoniranja, Ugrađena web pretraga.

Zahtjev s opcijama

Ovaj zahtjev postavlja system poruku, polja uzorkovanja i razinu napora rezoniranja. Koristi hostirani open-weight model, koji primjenjuje sve njih.

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)

Odgovor ima isti oblik kao gore. Njegov usage na hostiranim open-weight modelima dodaje dva detalja: tokene prompta pročitane iz cachea i tokene potrošene na rezoniranje.

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

Duljina izlaza

max_tokens radi dvije stvari. Prvo, to je broj tokena koji se odvaja sa stanja kada zahtjev počne. Kada je odgovor gotov, taj iznos zamjenjuju tokeni koje je zahtjev iskoristio. Ako je max_tokens veći od onoga što je preostalo na stanju, zahtjev vraća 429 Quota exceeded čak i kada bi se sam odgovor stao. Pošaljite manji max_tokens da odvojite manje.

shannon-coder-1 se na ovom endpointu broji drukčije: svaki zahtjev je jedan od Shannon Coder poziva vašeg plana i za njega se ne odvajaju tokeni. Ograničenja i stanje

Drugo, ograničava duljinu odgovora na ovim modelima:

Modeli Što radi max_tokens
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 Odgovor staje kada dosegne ograničenje. Stream tada završava s finish_reason length.
Hostirani open-weight modeli Tekst odgovora staje na max_tokens. Rezoniranje se ne računa u to. Vrijednosti ispod 256 djeluju kao 256.

Bez max_tokens ili max_completion_tokens vrijednost je 4,096. Na shannon-coder-1 je 65,536.

Poruke

Svaka poruka je objekt s role i content. content je string ili niz dijelova kada poruka nosi više od teksta.

Uloga Opis Primjenjuju
system Upute za model. Stavite je prvu. Na Shannon razinama koristi se prva poruka system. Hostirani open-weight modeli, shannon-1.6-*, shannon-2-*, shannon-coder-1
developer Čita se kao system. Hostirani open-weight modeli
user Što pitate. Na Shannon razinama zadnja poruka user je prompt, a poruke prije nje su povijest. Svi modeli
assistant Raniji odgovori modela. Zadržite njegove tool_calls kada nakon njih šaljete rezultat alata. Svi modeli
tool Rezultat poziva alata: tool_call_id sadrži id poziva, a content rezultat kao string. Svi modeli

S id-om iz obitelji Shannon 3 upute koje moraju vrijediti stavite u poruku user.

Na Shannon razinama zahtjev bez korisničkog teksta i bez tools vraća 400 No user message provided.

Dijelovi sadržaja

Dio Opis Dostupno na
{"type": "text", "text": "…"} Običan tekst. Svi modeli
{"type": "image_url", "image_url": {"url": "…"}} Slika, kao data: URL s base64 sadržajem ili kao http(s) URL. Obitelj Shannon 3, shannon-1.6-lite, shannon-1.6-pro i hostirani open-weight modeli koji navode ulaz slike
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Dokument (PDF, Word, PowerPoint ili Excel), kao base64 ili putem URL-a. Obitelj Shannon 3

Veličine, ograničenja i potpun popis oblika imaju vlastitu stranicu. Slike i datoteke

Objekt odgovora

Polje Tip Opis
id string chatcmpl- iza kojeg slijedi 32 heksadecimalna znaka.
object string Uvijek chat.completion.
created integer Vrijeme odgovora, u Unix sekundama.
model string Kanonski id modela koji je odgovorio. Može se po pisanju razlikovati od id-a koji ste poslali.
choices array Uvijek točno jedan izbor, s index 0.
choices[0].message.role string Uvijek assistant.
choices[0].message.content string | null Tekst odgovora. S tool_calls je null na Shannon razinama; hostirani open-weight modeli mogu uz pozive slati tekst.
choices[0].message.reasoning_content string | null Rezoniranje koje je model napisao prije odgovora ili null kada ga nema.
choices[0].message.tool_calls array Prisutno samo kada model poziva alate. Svaki unos ima id, type function i function s name i arguments kao JSON stringom.
choices[0].message.annotations array Samo na zahtjevu s web_search: true čija je pretraga nešto pronašla. Jedan url_citation za svaki izvor koji oznaka u content imenuje, s url, title, start_index i end_index (položaj oznake, izbrojen u znakovima, kraj nije uključen).
choices[0].finish_reason string Zašto je odgovor završio. Pogledajte Razlozi završetka.
usage object Tokeni zahtjeva. Pogledajte Upotreba.
sources array Samo na zahtjevu s web_search: true čija je pretraga nešto pronašla: rezultati koje je model dobio, svaki s index, title i url. [1] u odgovoru je unos s index 1.

Razlozi završetka

finish_reason Opis
stop Model je završio svoj odgovor ili se pojavio stop string.
tool_calls Model poziva jedan ili više alata. Izvršite ih i pošaljite rezultate u porukama tool.
length Odgovor je prekinut na ograničenju izlaza. Prijavljuje se u streamovima shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 i obitelji Shannon 3.

Odgovor bez streama prijavljuje stop ili tool_calls.

Upotreba

Polje Tip Opis Dostupno na
usage.prompt_tokens integer Ulazni tokeni. Svi modeli
usage.completion_tokens integer Izlazni tokeni: rezoniranje, odgovor i pozivi alata zajedno. Svi modeli
usage.total_tokens integer prompt_tokens plus completion_tokens. Svi modeli
usage.prompt_tokens_details.cached_tokens integer Dio prompt_tokens koji je pročitan iz prompt cachea. Hostirani open-weight modeli
usage.completion_tokens_details.reasoning_tokens integer Dio completion_tokens potrošen na rezoniranje. Hostirani open-weight modeli

Na hostiranim open-weight modelima prompt_tokens su vaše poruke i definicije alata izbrojene tokenizerom samog modela, plus tokeni svih slika. Endpointi za brojanje tokena vraćaju isti broj prije nego pošaljete. Brojanje tokena

Na Shannon razinama prompt_tokens broji sve što je model pročitao da bi napisao odgovor, pa je veći od samog teksta vaših poruka.

Streaming

Kada je stream postavljen na true, odgovor stiže kao chat.completion.chunk događaji i završava s data: [DONE]. Zadnji chunk prije toga nosi finish_reason i usage; stream_options nisu potrebni. Oblici chunkova, keep-alive retci i greške unutar streama imaju vlastitu stranicu. Streaming

Greške

Greška je JSON objekt s članom error. Provjere se izvršavaju ovim redom: API ključ, tijelo zahtjeva, id modela, zatim stanje. Tablica navodi što ovaj endpoint najčešće vraća. Potpuni popis, s uputom što ponoviti, ima vlastitu stranicu. Upravljanje greškama

400 JSON
{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Status Tip Poruka Kada
401 authentication_error Missing authentication
Invalid API key
API ključ nije poslan, ili je ključ nepoznat ili opozvan.
400 invalid_request_error unknown model: <id> model nije objavljeni id.
400 invalid_request_error No user message provided Shannon razine: zahtjev nema korisnički tekst ni tools.
400 invalid_request_error <id> does not accept image input Dio sa slikom poslan je hostiranom open-weight modelu bez ulaza slike.
400 invalid_request_error <id> does not accept response_format response_format je poslan hostiranom open-weight modelu bez strukturiranog izlaza.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high reasoning_effort sadrži vrijednost izvan popisa.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … messages nedostaje ili polje ima pogrešan JSON tip.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens je veći od onoga što je preostalo na vašem stanju.
429 rate_limit_error Too many requests. Retry in <n>s. Flood protection: više od 120 zahtjeva u jednoj minuti na vašem računu.
500 server_error The model backend failed to answer. Please retry. Model nije proizveo odgovor. Pošaljite zahtjev ponovno.
502 api_error The model backend failed to answer. Please retry. Isto, na obitelji Shannon 3 i hostiranim open-weight modelima.