Preskoči na sadržaj
Chat Completions

Chat Completions

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

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

Najmanji zahtev 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 objekat:

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 zahteva

Zaglavlje Vrednost Opis
Authorization Bearer YOUR_API_KEY Vaš API ključ. Umesto njega se na svakom endpointu prihvata x-api-key: YOUR_API_KEY.
Content-Type application/json Obavezno. Svaka druga vrednost vraća 415.
x-request-id Opciono. Vaš sopstveni id zahteva. Vraća se nepromenjen u odgovoru.

Zaglavlja odgovora

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

Polja zahteva

Obavezan je samo messages. Kolona Primenjuju navodi modele na kojima polje menja odgovor. Hostovani open-weight modeli su dvanaest id-jeva sa liste modela; porodica Shannon 3 su shannon-3, shannon-3-pro, shannon-3.1 i shannon-3.1-pro. Modeli i cene

Polje Tip Podrazumevano Opis Primenjuju
model string shannon-1.6-lite Model koji odgovara: id sa liste modela. Šaljite ga uz svaki zahtev. Poređenje ne razlikuje velika i mala slova. Id koji nije objavljen vraća 400 unknown model. Svi modeli
messages array Obavezno. Razgovor, najstarija poruka prvo. Pogledajte Poruke ispod. 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. Vrednost van opsega od 1 do 65,536 pomera se u taj opseg. To je i iznos koji se izdvaja sa vašeg stanja dok zahtev traje. Pogledajte Dužina izlaza ispod. Hostovani 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. Hostovani open-weight modeli, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
temperature number Temperatura uzorkovanja. Na hostovanim open-weight modelima podrazumevano je 1, a vrednosti se drže između 0 i 2. Hostovani open-weight modeli, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number 0.95 Nucleus uzorkovanje. Vrednosti se drže između 0 i 1. Hostovani open-weight modeli
seed integer Seed uzorkivača, bilo koji ceo broj. Bez njega se seed izvodi iz modela i razgovora, pa isti zahtev poslat dvaput koristi isti seed. Hostovani open-weight modeli
stop string | array String ili niz stringova. Koristi se do 4. Odgovor se završava pre prvog koji se pojavi; sam stop tekst se ne vraća. Hostovani open-weight modeli
reasoning_effort string high Koliko model rezonuje pre nego što odgovori: off, low, medium ili high. none i minimal znače off, default znači medium, max znači high. Svaka druga vrednost vraća 400. Hostovani open-weight modeli
reasoning object Ista postavka u obliku objekta: {"effort": "low"}. Kada se pošalju oba, koristi se reasoning_effort. Hostovani open-weight modeli
tools array Funkcije koje model sme da pozove, 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" tera ga da pozove alat. {"type": "function", "function": {"name": "…"}} tera ga da pozove taj alat. Hostovani open-weight modeli
response_format object {"type": "json_object"} za JSON odgovor, ili {"type": "json_schema", "json_schema": {…}} za odgovor koji prati vašu šemu. Svi Shannon nivoi; hostovani open-weight modeli kako je navedeno po id-ju
web_search boolean false true dozvoljava modelu da pretraži web pre nego što odgovori. shannon-1.6-*, shannon-2-*, porodica Shannon 3

Druga 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, prihvataju se da bi postojeći klijentski kod radio nepromenjen. Ne menjaju odgovor: uvek postoji jedan izbor, a stream uvek završava upotrebom.

Polje sa pogrešnim JSON tipom, na primer "max_tokens": "100", vraća 422. Isto važi i za zahtev bez messages.

Alati, strukturirani izlaz, reasoning i web pretraga imaju svoje stranice: Pozivanje funkcija, Strukturirani izlazi, Napor pri zaključivanju, Ugrađena web pretraga.

Zahtev sa opcijama

Ovaj zahtev postavlja system poruku, polja uzorkovanja i napor pri zaključivanju. Koristi hostovani open-weight model, koji primenjuje sve to.

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 hostovanim open-weight modelima dodaje dva detalja: tokene prompta pročitane iz keša i tokene potrošene na rezonovanje.

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

Dužina izlaza

max_tokens radi dve stvari. Prvo, to je broj tokena koji se izdvaja sa vašeg stanja kada zahtev počne. Kada je odgovor završen, taj iznos se zamenjuje tokenima koje je zahtev iskoristio. Ako je max_tokens veći od onoga što je preostalo na vašem stanju, zahtev vraća 429 Quota exceeded čak i kada bi se sam odgovor uklopio. Pošaljite manji max_tokens da izdvojite manje.

shannon-coder-1 se na ovom endpointu računa drugačije: svaki zahtev je jedan od Shannon Coder poziva vašeg plana i za njega se ne izdvajaju tokeni. Ograničenja i stanje

Drugo, ograničava dužinu odgovora na ovim modelima:

Modeli Šta radi max_tokens
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 Odgovor staje kada dostigne ograničenje. Stream tada završava sa finish_reason length.
Hostovani open-weight modeli Tekst odgovora staje na max_tokens. Rezonovanje se ne računa u to. Vrednosti ispod 256 deluju kao 256.

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

Poruke

Svaka poruka je objekat sa role i content. content je string, ili niz delova kada poruka nosi više od teksta.

Uloga Opis Primenjuju
system Uputstva za model. Stavite je prvu. Na Shannon nivoima koristi se prva system poruka. Hostovani open-weight modeli, shannon-1.6-*, shannon-2-*, shannon-coder-1
developer Čita se kao system. Hostovani open-weight modeli
user Ono što pitate. Na Shannon nivoima poslednja user poruka je prompt, a poruke pre nje su istorija. Svi modeli
assistant Raniji odgovori modela. Zadržite njegove tool_calls kada posle njih šaljete rezultat alata. Svi modeli
tool Rezultat poziva alata: tool_call_id sadrži id poziva, a content rezultat kao string. Svi modeli

Sa id-jem iz porodice Shannon 3 stavite uputstva koja moraju da važe u user poruku.

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

Delovi sadržaja

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

Veličine, ograničenja i kompletna lista oblika imaju svoju stranicu. Slike i fajlovi

Objekat odgovora

Polje Tip Opis
id string chatcmpl- iza kog sledi 32 heksadecimalna znaka.
object string Uvek chat.completion.
created integer Vreme odgovora, u Unix sekundama.
model string Kanonski id modela koji je odgovorio. Može se pravopisom razlikovati od id-ja koji ste poslali.
choices array Uvek tačno jedan izbor, sa index 0.
choices[0].message.role string Uvek assistant.
choices[0].message.content string | null Tekst odgovora. Uz tool_calls on je null na Shannon nivoima; hostovani open-weight modeli mogu da šalju tekst pored poziva.
choices[0].message.reasoning_content string | null Rezonovanje koje je model napisao pre 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 sa name i arguments kao JSON stringom.
choices[0].message.annotations array Samo na zahtevu sa web_search: true čija je pretraga nešto našla. Jedan url_citation za svaki izvor koji imenuje neka oznaka u content, sa url, title, start_index i end_index (pozicija oznake, izbrojana u znakovima, kraj nije uključen).
choices[0].finish_reason string Zašto je odgovor završen. Pogledajte Razlozi završetka.
usage object Tokeni zahteva. Pogledajte Upotreba.
sources array Samo na zahtevu sa web_search: true čija je pretraga nešto našla: rezultati koji su dati modelu, svaki sa index, title i url. [1] u odgovoru je unos sa index 1.

Razlozi završetka

finish_reason Opis
stop Model je završio odgovor, ili se pojavio stop string.
tool_calls Model poziva jedan ili više alata. Izvršite ih i pošaljite rezultate u tool porukama.
length Odgovor je presečen na ograničenju izlaza. Prijavljuje se u streamovima shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 i porodice 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: rezonovanje, 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 Deo prompt_tokens koji je pročitan iz keša promptova. Hostovani open-weight modeli
usage.completion_tokens_details.reasoning_tokens integer Deo completion_tokens koji je potrošen na rezonovanje. Hostovani open-weight modeli

Na hostovanim open-weight modelima prompt_tokens su vaše poruke i definicije alata izbrojane sopstvenim tokenizerom modela, plus tokeni svih slika. Endpointi za brojanje tokena vraćaju isti broj pre nego što pošaljete. Brojanje tokena

Na Shannon nivoima prompt_tokens broji sve što je model pročitao da napiše 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 se sa data: [DONE]. Poslednji deo pre toga nosi finish_reason i usage; stream_options nisu potrebni. Oblici delova, keep-alive linije i greške unutar streama imaju svoju stranicu. Streaming

Greške

Greška je JSON objekat sa članom error. Provere idu ovim redom: API ključ, telo zahteva, id modela, pa stanje. Tabela navodi šta ovaj endpoint najčešće vraća. Kompletna lista, sa uputstvom šta ponoviti, ima svoju 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 poslat, 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 nivoi: zahtev nema korisnički tekst i nema tools.
400 invalid_request_error <id> does not accept image input Deo sa slikom poslat je hostovanom open-weight modelu bez podrške za sliku na ulazu.
400 invalid_request_error <id> does not accept response_format response_format je poslat hostovanom open-weight modelu bez strukturiranog izlaza.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high reasoning_effort sadrži vrednost van liste.
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. Zaštita od flooda (flood protection): više od 120 zahteva u jednom minutu na vašem nalogu.
500 server_error The model backend failed to answer. Please retry. Model nije proizveo odgovor. Pošaljite zahtev ponovo.
502 api_error The model backend failed to answer. Please retry. Isto, na porodici Shannon 3 i hostovanim open-weight modelima.