Hopp til innholdet
Chat Completions

Chat Completions

POST /v1/chat/completions tar en samtale og returnerer modellens neste melding i OpenAI Chat Completions-formatet. Bruk det fra en hvilken som helst OpenAI-SDK eller over ren HTTP; denne siden er referansen felt for felt.

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

Den minste forespørselen er en modell-id og én brukermelding.

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)

Svaret er ett 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
  }
}

Headere

Forespørsels-headere

Header Verdi Beskrivelse
Authorization Bearer YOUR_API_KEY API-nøkkelen din. x-api-key: YOUR_API_KEY godtas i stedet på alle endepunkter.
Content-Type application/json Påkrevd. Alle andre verdier gir 415.
x-request-id Valgfritt. Din egen id for forespørselen. Den kommer tilbake uendret i svaret.

Svar-headere

Header Beskrivelse
x-request-id På hvert svar, også feil og strømmer: verdien du sendte, eller 12 heksadesimale tegn hvis du ikke sendte noen. Oppgi den når du melder fra om et problem.
content-type application/json, eller text/event-stream når stream er true.

Forespørselsfelt

Bare messages er påkrevd. Kolonnen Brukes av nevner modellene der et felt endrer svaret. De hostede åpne vektmodellene er de tolv id-ene i modelllisten; Shannon 3-familien er shannon-3, shannon-3-pro, shannon-3.1 og shannon-3.1-pro. Modeller og priser

Felt Type Standard Beskrivelse Brukes av
model string shannon-1.6-lite Modellen som svarer: en id fra modelllisten. Send den med hver forespørsel. Det skilles ikke mellom store og små bokstaver. En id som ikke er publisert, gir 400 unknown model. Alle modeller
messages array Påkrevd. Samtalen, eldste melding først. Se Meldinger nedenfor. Alle modeller
stream boolean false true sender svaret som server-sent events mens det skrives. Alle modeller
max_tokens integer 4096 Øvre grense for svaret, i tokens. En verdi utenfor 1 til 65,536 flyttes inn i dette området. Det er også beløpet som settes av fra saldoen din mens forespørselen kjører. Se Output-lengde nedenfor. Hostede åpne vektmodeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
max_completion_tokens integer Samme som max_tokens. Når begge sendes, brukes max_tokens. Hostede åpne vektmodeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
temperature number Samplingtemperatur. På de hostede åpne vektmodellene er standardverdien 1, og verdiene holdes mellom 0 og 2. Hostede åpne vektmodeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number 0.95 Nucleus sampling. Verdiene holdes mellom 0 og 1. Hostede åpne vektmodeller
seed integer Seed for sampleren, et vilkårlig heltall. Uten den utledes seeden fra modellen og samtalen, så den samme forespørselen sendt to ganger bruker samme seed. Hostede åpne vektmodeller
stop string | array En streng eller en matrise av strenger. Opptil 4 brukes. Svaret avsluttes før den første som dukker opp; selve stopp-teksten returneres ikke. Hostede åpne vektmodeller
reasoning_effort string high Hvor mye modellen resonnerer før den svarer: off, low, medium eller high. none og minimal betyr off, default betyr medium, max betyr high. Alle andre verdier gir 400. Hostede åpne vektmodeller
reasoning object Den samme innstillingen i objektform: {"effort": "low"}. Når begge sendes, brukes reasoning_effort. Hostede åpne vektmodeller
tools array Funksjonene modellen kan kalle, hver som {"type": "function", "function": {"name", "description", "parameters"}}. Modellens kall kommer tilbake i tool_calls; koden din kjører dem. Alle modeller
tool_choice string | object auto "auto" lar modellen bestemme. "required" får den til å kalle et verktøy. {"type": "function", "function": {"name": "…"}} får den til å kalle akkurat det verktøyet. Hostede åpne vektmodeller
response_format object {"type": "json_object"} for et JSON-svar, eller {"type": "json_schema", "json_schema": {…}} for et svar som følger skjemaet ditt. Alle Shannon-nivåer; hostede åpne vektmodeller som oppført per id
web_search boolean false true lar modellen søke på nettet før den svarer. shannon-1.6-*, shannon-2-*, Shannon 3-familien

Andre OpenAI-felt, som n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store og prompt_cache_key, godtas slik at eksisterende klientkode kjører uendret. De endrer ikke svaret: det er alltid ett valg, og en strøm avsluttes alltid med bruksdata.

Et felt med feil JSON-type, for eksempel "max_tokens": "100", gir 422. Det gjør også en forespørsel uten messages.

Verktøy, strukturert output, resonnering og nettsøk har hver sin side: Funksjonskall, Strukturerte utdata, Resonneringsinnsats, Innebygd websøk.

En forespørsel med valg

Denne forespørselen setter en systemmelding, samplingfeltene og resonneringsinnsatsen. Den bruker en hostet åpen vektmodell, som anvender alle disse.

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)

Svaret har samme form som ovenfor. usage får to detaljer til på de hostede åpne vektmodellene: prompt-tokens lest fra cachen og tokens brukt på resonnering.

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

Output-lengde

max_tokens gjør to ting. For det første er det antallet tokens som settes av fra saldoen din når forespørselen starter. Når svaret er fullført, erstattes beløpet av tokens forespørselen brukte. Hvis max_tokens er større enn det som er igjen av saldoen din, gir forespørselen 429 Quota exceeded selv om selve svaret ville ha passet. Send en lavere max_tokens for å sette av mindre.

shannon-coder-1 telles annerledes på dette endepunktet: hver forespørsel er ett av Shannon Coder-kallene i planen din, og ingen tokens settes av for den. Grenser og saldo

For det andre begrenser det lengden på svaret på disse modellene:

Modeller Hva max_tokens gjør
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 Svaret stopper når det når grensen. En strøm avsluttes da med finish_reason length.
Hostede åpne vektmodeller Svarteksten stopper ved max_tokens. Resonnering regnes ikke med. Verdier under 256 virker som 256.

Uten max_tokens eller max_completion_tokens er verdien 4,096. På shannon-coder-1 er den 65,536.

Meldinger

Hver melding er et objekt med en role og et content. content er en streng, eller en matrise av deler når meldingen inneholder mer enn tekst.

Rolle Beskrivelse Brukes av
system Instruksjoner til modellen. Sett den først. På Shannon-nivåene er det den første system-meldingen som brukes. Hostede åpne vektmodeller, shannon-1.6-*, shannon-2-*, shannon-coder-1
developer Leses som system. Hostede åpne vektmodeller
user Det du spør om. På Shannon-nivåene er den siste user-meldingen prompten, og meldingene før den er historikken. Alle modeller
assistant Tidligere svar fra modellen. Behold tool_calls når du sender et verktøyresultat etter det. Alle modeller
tool Resultatet av et verktøykall: tool_call_id har id-en til kallet og content resultatet som streng. Alle modeller

Med en id fra Shannon 3-familien setter du instruksjoner som må gjelde, i user-meldingen.

På Shannon-nivåene gir en forespørsel uten brukertekst og uten tools 400 No user message provided.

Innholdsdeler

Del Beskrivelse Tilgjengelig på
{"type": "text", "text": "…"} Ren tekst. Alle modeller
{"type": "image_url", "image_url": {"url": "…"}} Et bilde, som en data:-URL med base64-innhold eller som en http(s)-URL. Shannon 3-familien, shannon-1.6-lite, shannon-1.6-pro og de hostede åpne vektmodellene som støtter bilde som input
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Et dokument (PDF, Word, PowerPoint eller Excel), som base64 eller via URL. Shannon 3-familien

Størrelser, grenser og den fullstendige listen over former har sin egen side. Bilder og filer

Svarobjektet

Felt Type Beskrivelse
id string chatcmpl- etterfulgt av 32 heksadesimale tegn.
object string Alltid chat.completion.
created integer Tidspunktet for svaret, i Unix-sekunder.
model string Den kanoniske id-en til modellen som svarte. Den kan avvike i skrivemåte fra id-en du sendte.
choices array Alltid nøyaktig ett valg, med index 0.
choices[0].message.role string Alltid assistant.
choices[0].message.content string | null Svarteksten. Med tool_calls er den null på Shannon-nivåene; de hostede åpne vektmodellene kan sende tekst ved siden av kallene.
choices[0].message.reasoning_content string | null Resonneringen modellen skrev før svaret, eller null når det ikke finnes noen.
choices[0].message.tool_calls array Finnes bare når modellen kaller verktøy. Hver oppføring har en id, type function, og function med name og arguments som en JSON-streng.
choices[0].message.annotations array Bare på en forespørsel med web_search: true der søket fant noe. Én url_citation for hver kilde en markør i content navngir, med url, title, start_index og end_index (posisjonen til markøren, talt i tegn, slutten er ikke med).
choices[0].finish_reason string Hvorfor svaret tok slutt. Se Avslutningsårsaker.
usage object Tokens i forespørselen. Se Bruk.
sources array Bare på en forespørsel med web_search: true der søket fant noe: resultatene modellen fikk, hvert med index, title og url. [1] i svaret er oppføringen med index 1.

Avslutningsårsaker

finish_reason Beskrivelse
stop Modellen fullførte svaret sitt, eller en stop-streng dukket opp.
tool_calls Modellen kaller ett eller flere verktøy. Kjør dem og send resultatene i tool-meldinger.
length Svaret ble kuttet ved output-grensen. Rapporteres i strømmer fra shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 og Shannon 3-familien.

Et svar uten strømming rapporterer stop eller tool_calls.

Bruk

Felt Type Beskrivelse Tilgjengelig på
usage.prompt_tokens integer Input-tokens. Alle modeller
usage.completion_tokens integer Output-tokens: resonnering, svar og verktøykall til sammen. Alle modeller
usage.total_tokens integer prompt_tokens pluss completion_tokens. Alle modeller
usage.prompt_tokens_details.cached_tokens integer Delen av prompt_tokens som ble lest fra prompt-cachen. Hostede åpne vektmodeller
usage.completion_tokens_details.reasoning_tokens integer Delen av completion_tokens som ble brukt på resonnering. Hostede åpne vektmodeller

På de hostede åpne vektmodellene er prompt_tokens meldingene og verktøydefinisjonene dine talt med modellens egen tokenizer, pluss tokens for eventuelle bilder. Endepunktene for token-telling returnerer det samme tallet før du sender. Token-telling

På Shannon-nivåene teller prompt_tokens alt modellen leste for å skrive svaret, så tallet er større enn teksten i meldingene dine alene.

Strømming

Med stream satt til true kommer svaret som chat.completion.chunk-hendelser og avsluttes med data: [DONE]. Den siste chunken før den har finish_reason og usage; ingen stream_options trengs. Chunk-formene, keep-alive-linjene og feil inne i en strøm har sin egen side. Strømming

Feil

En feil er et JSON-objekt med et error-medlem. Sjekkene kjøres i denne rekkefølgen: API-nøkkel, forespørselskropp, modell-id, deretter saldo. Tabellen viser det dette endepunktet oftest returnerer. Den fullstendige listen, med hva som kan prøves på nytt, har sin egen side. Feilhåndtering

400 JSON
{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Status Type Melding Når
401 authentication_error Missing authentication
Invalid API key
Ingen API-nøkkel ble sendt, eller nøkkelen er ukjent eller tilbakekalt.
400 invalid_request_error unknown model: <id> model er ikke en publisert id.
400 invalid_request_error No user message provided Shannon-nivåer: forespørselen har ingen brukertekst og ingen tools.
400 invalid_request_error <id> does not accept image input En bildedel ble sendt til en hostet åpen vektmodell uten støtte for bilde som input.
400 invalid_request_error <id> does not accept response_format response_format ble sendt til en hostet åpen vektmodell uten strukturert output.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high reasoning_effort har en verdi utenfor listen.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … messages mangler, eller et felt har feil JSON-type.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens er større enn det som er igjen av saldoen din.
429 rate_limit_error Too many requests. Retry in <n>s. Flood protection: mer enn 120 forespørsler i løpet av ett minutt på kontoen din.
500 server_error The model backend failed to answer. Please retry. Modellen ga ikke noe svar. Send forespørselen på nytt.
502 api_error The model backend failed to answer. Please retry. Det samme, på Shannon 3-familien og de hostede åpne vektmodellene.