Preskoči na vsebino
Chat Completions

Chat Completions

POST /v1/chat/completions sprejme pogovor in vrne naslednje sporočilo modela v formatu OpenAI Chat Completions. Uporabite ga iz katerega koli SDK-ja OpenAI ali prek navadnega HTTP; ta stran je referenca polje za poljem.

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

Najmanjši zahtevek je id modela in eno uporabnikovo sporočilo.

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

Glave

Glave zahtevka

Glava Vrednost Opis
Authorization Bearer YOUR_API_KEY Vaš API ključ. Namesto njega je na vsakem endpointu sprejet x-api-key: YOUR_API_KEY.
Content-Type application/json Obvezno. Vsaka druga vrednost vrne 415.
x-request-id Neobvezno. Vaš lasten id zahtevka. V odgovoru se vrne nespremenjen.

Glave odgovora

Glava Opis
x-request-id Na vsakem odgovoru, tudi pri napakah in tokovih: vrednost, ki ste jo poslali, ali 12 šestnajstiških znakov, če je niste poslali. Navedite jo, ko poročate o težavi.
content-type application/json ali text/event-stream, kadar je stream enak true.

Polja zahtevka

Zahtevano je samo messages. Stolpec Uporabljajo navaja modele, pri katerih polje spremeni odgovor. Gostovani modeli z odprtimi utežmi so dvanajst id-jev s seznama modelov; družina Shannon 3 so shannon-3, shannon-3-pro, shannon-3.1 in shannon-3.1-pro. Modeli in cene

Polje Tip Privzeto Opis Uporabljajo
model string shannon-1.6-lite Model, ki odgovori: id s seznama modelov. Pošljite ga z vsakim zahtevkom. Ujemanje ne razlikuje velikih in malih črk. Id, ki ni objavljen, vrne 400 unknown model. Vsi modeli
messages array Obvezno. Pogovor, najstarejše sporočilo prvo. Glejte spodaj Sporočila. Vsi modeli
stream boolean false true pošlje odgovor kot dogodke, ki jih pošilja strežnik, med pisanjem. Vsi modeli
max_tokens integer 4096 Zgornja meja odgovora v tokenih. Vrednost zunaj obsega od 1 do 65,536 se premakne v ta obseg. To je tudi znesek, ki se med izvajanjem zahtevka odloži z vašega stanja. Glejte spodaj Dolžina izhoda. Gostovani modeli z odprtimi utežmi, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
max_completion_tokens integer Enako kot max_tokens. Če sta poslana oba, se uporabi max_tokens. Gostovani modeli z odprtimi utežmi, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
temperature number Temperatura vzorčenja. Pri gostovanih modelih z odprtimi utežmi je privzeta 1, vrednosti pa se omejijo med 0 in 2. Gostovani modeli z odprtimi utežmi, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number 0.95 Jedrno vzorčenje (nucleus sampling). Vrednosti se omejijo med 0 in 1. Gostovani modeli z odprtimi utežmi
seed integer Seme vzorčevalnika, poljubno celo število. Brez njega je seme izpeljano iz modela in pogovora, zato isti zahtevek, poslan dvakrat, uporabi isto seme. Gostovani modeli z odprtimi utežmi
stop string | array Niz ali polje nizov. Uporabijo se do 4. Odgovor se konča pred prvim, ki se pojavi; samo ustavitveno besedilo se ne vrne. Gostovani modeli z odprtimi utežmi
reasoning_effort string high Koliko model razmišlja, preden odgovori: off, low, medium ali high. none in minimal pomenita off, default pomeni medium, max pomeni high. Vsaka druga vrednost vrne 400. Gostovani modeli z odprtimi utežmi
reasoning object Ista nastavitev v obliki objekta: {"effort": "low"}. Če sta poslana oba, se uporabi reasoning_effort. Gostovani modeli z odprtimi utežmi
tools array Funkcije, ki jih model lahko pokliče, vsaka kot {"type": "function", "function": {"name", "description", "parameters"}}. Klici modela se vrnejo v tool_calls; vaša koda jih zažene. Vsi modeli
tool_choice string | object auto "auto" prepusti odločitev modelu. "required" ga prisili, da pokliče orodje. {"type": "function", "function": {"name": "…"}} ga prisili, da pokliče to orodje. Gostovani modeli z odprtimi utežmi
response_format object {"type": "json_object"} za odgovor JSON ali {"type": "json_schema", "json_schema": {…}} za odgovor, ki sledi vaši shemi. Vse ravni Shannon; gostovani modeli z odprtimi utežmi, kot je navedeno za posamezen id
web_search boolean false true omogoči modelu iskanje po spletu, preden odgovori. shannon-1.6-*, shannon-2-*, družina Shannon 3

Druga polja OpenAI, kot so n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store in prompt_cache_key, so sprejeta, da obstoječa koda odjemalca deluje nespremenjena. Odgovora ne spremenijo: izbira je vedno ena, tok pa se vedno konča s porabo.

Polje z napačnim tipom JSON, na primer "max_tokens": "100", vrne 422. Enako velja za zahtevek brez messages.

Orodja, strukturiran izhod, razmišljanje in spletno iskanje imajo vsak svojo stran: Klicanje funkcij, Strukturirani izhodi, Napor razmišljanja, Vgrajeno spletno iskanje.

Zahtevek z možnostmi

Ta zahtevek nastavi sistemsko sporočilo, polja vzorčenja in napor razmišljanja. Uporablja gostovani model z odprtimi utežmi, ki upošteva vse našteto.

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 enako obliko kot zgoraj. Njegov usage pri gostovanih modelih z odprtimi utežmi doda dve podrobnosti: tokene prompta, prebrane iz predpomnilnika, in tokene, porabljene za razmišljanje.

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

Dolžina izhoda

max_tokens naredi dvoje. Prvič, to je število tokenov, ki se ob začetku zahtevka odložijo z vašega stanja. Ko je odgovor končan, ta znesek nadomestijo tokeni, ki jih je zahtevek porabil. Če je max_tokens večji od tega, kar je ostalo na vašem stanju, zahtevek vrne 429 Quota exceeded, tudi če bi se odgovor sam še izšel. Pošljite manjši max_tokens, da odložite manj.

shannon-coder-1 se na tem endpointu šteje drugače: vsak zahtevek je eden od klicev Shannon Coder vašega paketa in zanj se ne odloži noben token. Omejitve in stanje

Drugič, omejuje dolžino odgovora na teh modelih:

Modeli Kaj naredi max_tokens
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 Odgovor se ustavi, ko doseže omejitev. Tok se nato konča s finish_reason length.
Gostovani modeli z odprtimi utežmi Besedilo odgovora se ustavi pri max_tokens. Razmišljanje se ne šteje vanj. Vrednosti pod 256 veljajo kot 256.

Brez max_tokens ali max_completion_tokens je vrednost 4,096. Pri shannon-coder-1 je 65,536.

Sporočila

Vsako sporočilo je objekt z role in content. content je niz ali polje delov, kadar sporočilo nosi več kot besedilo.

Vloga Opis Uporabljajo
system Navodila za model. Postavite ga prvega. Pri ravneh Shannon se uporabi prvo sporočilo system. Gostovani modeli z odprtimi utežmi, shannon-1.6-*, shannon-2-*, shannon-coder-1
developer Prebere se kot system. Gostovani modeli z odprtimi utežmi
user Kar vprašate. Pri ravneh Shannon je zadnje sporočilo user prompt, sporočila pred njim pa zgodovina. Vsi modeli
assistant Prejšnji odgovori modela. Njegove tool_calls obdržite, ko za njimi pošljete rezultat orodja. Vsi modeli
tool Rezultat klica orodja: tool_call_id vsebuje id klica, content pa rezultat kot niz. Vsi modeli

Pri id-ju iz družine Shannon 3 navodila, ki morajo veljati, vstavite v sporočilo user.

Pri ravneh Shannon zahtevek brez besedila uporabnika in brez tools vrne 400 No user message provided.

Deli vsebine

Del Opis Na voljo pri
{"type": "text", "text": "…"} Navadno besedilo. Vsi modeli
{"type": "image_url", "image_url": {"url": "…"}} Slika, kot URL data: z vsebino base64 ali kot URL http(s). Družina Shannon 3, shannon-1.6-lite, shannon-1.6-pro in gostovani modeli z odprtimi utežmi, ki navajajo vhod s slikami
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Dokument (PDF, Word, PowerPoint ali Excel), kot base64 ali prek URL-ja. Družina Shannon 3

Velikosti, omejitve in celoten seznam oblik imajo svojo stran. Slike in datoteke

Objekt odgovora

Polje Tip Opis
id string chatcmpl-, ki mu sledi 32 šestnajstiških znakov.
object string Vedno chat.completion.
created integer Čas odgovora v sekundah Unix.
model string Kanonični id modela, ki je odgovoril. Po črkovanju se lahko razlikuje od ida, ki ste ga poslali.
choices array Vedno natanko ena izbira, z index 0.
choices[0].message.role string Vedno assistant.
choices[0].message.content string | null Besedilo odgovora. Pri tool_calls je na ravneh Shannon null; gostovani modeli z odprtimi utežmi lahko poleg klicev pošljejo besedilo.
choices[0].message.reasoning_content string | null Razmišljanje, ki ga je model zapisal pred odgovorom, ali null, kadar ga ni.
choices[0].message.tool_calls array Prisotno samo, kadar model pokliče orodja. Vsak vnos ima id, type function in function z name in arguments kot nizom JSON.
choices[0].message.annotations array Samo pri zahtevku z web_search: true, katerega iskanje je kaj našlo. En url_citation za vsak vir, ki ga poimenuje oznaka v content, z url, title, start_index in end_index (položaj oznake, štet v znakih, konec ni vključen).
choices[0].finish_reason string Zakaj se je odgovor končal. Glejte Razlogi za konec.
usage object Tokeni zahtevka. Glejte Poraba.
sources array Samo pri zahtevku z web_search: true, katerega iskanje je kaj našlo: rezultati, ki jih je model dobil, vsak z index, title in url. [1] v odgovoru je vnos z index 1.

Razlogi za konec

finish_reason Opis
stop Model je dokončal odgovor ali pa se je pojavil niz stop.
tool_calls Model pokliče eno ali več orodij. Zaženite jih in rezultate pošljite v sporočilih tool.
length Odgovor je bil odrezan na omejitvi izhoda. Sporoča se v tokovih shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 in družine Shannon 3.

Odgovor, ki ni pretočen, sporoča stop ali tool_calls.

Poraba

Polje Tip Opis Na voljo pri
usage.prompt_tokens integer Vhodni tokeni. Vsi modeli
usage.completion_tokens integer Izhodni tokeni: razmišljanje, odgovor in klici orodij skupaj. Vsi modeli
usage.total_tokens integer prompt_tokens plus completion_tokens. Vsi modeli
usage.prompt_tokens_details.cached_tokens integer Del prompt_tokens, ki je bil prebran iz predpomnilnika promptov. Gostovani modeli z odprtimi utežmi
usage.completion_tokens_details.reasoning_tokens integer Del completion_tokens, ki je bil porabljen za razmišljanje. Gostovani modeli z odprtimi utežmi

Pri gostovanih modelih z odprtimi utežmi so prompt_tokens vaša sporočila in definicije orodij, prešteti z modelovim lastnim tokenizerjem, plus tokeni morebitnih slik. Endpointa za štetje tokenov vrneta isto število, preden pošljete. Štetje tokenov

Pri ravneh Shannon prompt_tokens šteje vse, kar je model prebral, da je napisal odgovor, zato je večje od besedila samih vaših sporočil.

Pretakanje

Ko je stream nastavljen na true, odgovor prihaja kot dogodki chat.completion.chunk in se konča z data: [DONE]. Zadnji kos pred tem nosi finish_reason in usage; stream_options ni treba. Oblike kosov, vrstice keep-alive in napake znotraj toka imajo svojo stran. Pretakanje

Napake

Napaka je objekt JSON s članom error. Preverjanja potekajo v tem vrstnem redu: API ključ, telo zahtevka, id modela, nato stanje. Tabela navaja, kaj ta endpoint najpogosteje vrne. Celoten seznam s priporočili, kaj ponoviti, ima svojo stran. Obravnava napak

400 JSON
{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Status Tip Sporočilo Kdaj
401 authentication_error Missing authentication
Invalid API key
API ključ ni bil poslan ali pa je ključ neznan ali preklican.
400 invalid_request_error unknown model: <id> model ni objavljen id.
400 invalid_request_error No user message provided Ravni Shannon: zahtevek nima besedila uporabnika in nima tools.
400 invalid_request_error <id> does not accept image input Del s sliko je bil poslan gostovanemu modelu z odprtimi utežmi brez vhoda s slikami.
400 invalid_request_error <id> does not accept response_format response_format je bil poslan gostovanemu modelu z odprtimi utežmi brez strukturiranega izhoda.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high reasoning_effort vsebuje vrednost zunaj seznama.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … messages manjka ali ima polje napačen tip JSON.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens je večji od tega, kar je ostalo na vašem stanju.
429 rate_limit_error Too many requests. Retry in <n>s. Zaščita pred poplavo zahtevkov: več kot 120 zahtevkov v eni minuti na vašem računu.
500 server_error The model backend failed to answer. Please retry. Model ni ustvaril odgovora. Pošljite zahtevek znova.
502 api_error The model backend failed to answer. Please retry. Enako, na družini Shannon 3 in gostovanih modelih z odprtimi utežmi.