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 preko običnog HTTP-a; 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 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 zahtjeva

Zaglavlje Vrijednost Opis
Authorization Bearer YOUR_API_KEY Vaš API ključ. Umjesto njega se na svakom endpointu prihvata x-api-key: YOUR_API_KEY.
Content-Type application/json Obavezno. Svaka druga vrijednost vraća 415.
x-request-id Opcionalno. 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 kada 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. Kolona Primjenjuje navodi modele na kojima polje mijenja odgovor. Hostirani open-weight modeli su dvanaest idova s liste modela; porodica Shannon 3 su shannon-3, shannon-3-pro, shannon-3.1 i shannon-3.1-pro. Modeli i cijene

Polje Tip Zadano Opis Primjenjuje
model string shannon-1.6-lite Model koji odgovara: id s liste modela. Šaljite ga uz svaki zahtjev. 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 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 pomjera se u taj raspon. To je i iznos koji se odvaja sa vašeg stanja dok zahtjev traje. Pogledajte Dužina 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 se seed 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 se završava prije prvog koji se pojavi; sam stop tekst se ne vraća. Hostirani open-weight modeli
reasoning_effort string high Koliko model rezonuje prije nego što 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 slijedi vašu šemu. Svi Shannon nivoi; hostirani open-weight modeli kako je navedeno po idu
web_search boolean false true omogućava modelu da pretraži web prije nego što odgovori. shannon-1.6-*, shannon-2-*, porodica 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, prihvataju se kako bi postojeći klijentski kod radio nepromijenjen. Ne mijenjaju odgovor: uvijek postoji jedan choice, a stream uvijek završava s usage.

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

Alati, strukturirani izlaz, reasoning i web pretraga imaju svaki vlastitu stranicu: Pozivanje funkcija, Strukturirani izlazi, Reasoning effort, Ugrađena web pretraga.

Zahtjev s opcijama

Ovaj zahtjev postavlja system poruku, polja uzorkovanja i reasoning effort. 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 keša i tokene potrošene na reasoning.

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 dvije stvari. Prvo, to je broj tokena koji se odvaja sa vašeg stanja kada zahtjev počne. Kada je odgovor završen, taj iznos se zamjenjuje tokenima koje je zahtjev stvarno iskoristio. Ako je max_tokens veći od onoga što je preostalo na vašem stanju, zahtjev vraća 429 Quota exceeded čak i kada bi se sam odgovor mogao smjestiti. Pošaljite manji max_tokens da odvojite manje.

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

Drugo, on 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 s finish_reason length.
Hostirani open-weight modeli Tekst odgovora staje na max_tokens. Reasoning 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 objekat s role i content. content je string, ili niz dijelova kada poruka nosi više od teksta.

Uloga Opis Primjenjuje
system Instrukcije za model. Stavite je prvu. Na Shannon nivoima koristi se prva system poruka. Hostirani open-weight modeli, shannon-1.6-*, shannon-2-*, shannon-coder-1
developer Čita se kao system. Hostirani open-weight modeli
user Ono što pitate. Na Shannon nivoima zadnja user poruka je prompt, a poruke prije nje su historija. 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

Uz id iz porodice Shannon 3, instrukcije koje moraju važiti stavite u user poruku.

Na Shannon nivoima 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 sa base64 sadržajem ili kao http(s) URL. Porodica 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. Porodica Shannon 3

Veličine, ograničenja i potpuna lista oblika imaju vlastitu stranicu. Slike i datoteke

Objekat 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 pisanjem razlikovati od ida koji ste poslali.
choices array Uvijek tačno jedan choice, s index 0.
choices[0].message.role string Uvijek assistant.
choices[0].message.content string | null Tekst odgovora. Uz tool_calls je null na Shannon nivoima; hostirani open-weight modeli mogu poslati tekst uz pozive.
choices[0].message.reasoning_content string | null Reasoning koji 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 string.
choices[0].message.annotations array Samo na zahtjevu s web_search: true čija je pretraga nešto našla. Jedan url_citation za svaki izvor koji imenuje oznaka u content, s url, title, start_index i end_index (pozicija oznake, brojana 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 Usage.
sources array Samo na zahtjevu s web_search: true čija je pretraga nešto našla: rezultati koji su dati modelu, 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 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 prekinut 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.

Usage

Polje Tip Opis Dostupno na
usage.prompt_tokens integer Ulazni tokeni. Svi modeli
usage.completion_tokens integer Izlazni tokeni: reasoning, 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 keša promptova. Hostirani open-weight modeli
usage.completion_tokens_details.reasoning_tokens integer Dio completion_tokens koji je potrošen na reasoning. Hostirani open-weight modeli

Na hostiranim open-weight modelima, prompt_tokens su vaše poruke i definicije alata izbrojane tokenizerom samog modela, plus tokeni eventualnih slika. Endpointi za brojanje tokena vraćaju isti broj prije slanja. 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 s data: [DONE]. Zadnji chunk prije toga nosi finish_reason i usage; stream_options nisu potrebni. Oblici chunkova, keep-alive linije i greške unutar streama imaju vlastitu stranicu. Streaming

Greške

Greška je JSON objekat s članom error. Provjere se izvršavaju ovim redoslijedom: API ključ, tijelo zahtjeva, id modela, zatim stanje. Tabela navodi šta ovaj endpoint najčešće vraća. Potpuna lista, s tim šta 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 nivoi: zahtjev nema korisnički tekst i nema 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 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. Flood zaštita: 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 dao odgovor. Pošaljite zahtjev ponovo.
502 api_error The model backend failed to answer. Please retry. Isto, na porodici Shannon 3 i hostiranim open-weight modelima.