Hoppa till innehållet
Chat Completions

Chat Completions

POST /v1/chat/completions tar en konversation och returnerar modellens nästa meddelande i formatet OpenAI Chat Completions. Använd det från valfri OpenAI SDK eller över ren HTTP; den här sidan är referensen fält för fält.

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

Den minsta begäran är ett modell-id och ett användarmeddelande.

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

Headers

Begäransheaders

Header Värde Beskrivning
Authorization Bearer YOUR_API_KEY Din API-nyckel. x-api-key: YOUR_API_KEY accepteras i stället på varje endpoint.
Content-Type application/json Obligatoriskt. Alla andra värden ger 415.
x-request-id Valfritt. Ditt eget id för begäran. Det kommer tillbaka oförändrat i svaret.

Svarsheaders

Header Beskrivning
x-request-id På varje svar, även fel och strömmar: värdet du skickade, eller 12 hexadecimala tecken om du inte skickade något. Ange det när du rapporterar ett problem.
content-type application/json, eller text/event-stream när stream är true.

Begäranfält

Endast messages är obligatoriskt. Kolumnen Tillämpas av anger de modeller där ett fält ändrar svaret. De hostade open-weight-modellerna är de tolv id:n i modellistan; Shannon 3-familjen är shannon-3, shannon-3-pro, shannon-3.1 och shannon-3.1-pro. Modeller och priser

Fält Typ Standard Beskrivning Tillämpas av
model string shannon-1.6-lite Modellen som svarar: ett id från modellistan. Skicka det med varje begäran. Matchningen är inte skiftlägeskänslig. Ett id som inte är publicerat ger 400 unknown model. Alla modeller
messages array Obligatoriskt. Konversationen, äldsta meddelandet först. Se Meddelanden nedan. Alla modeller
stream boolean false true skickar svaret som server-sent events medan det skrivs. Alla modeller
max_tokens integer 4096 Övre gräns för svaret, i tokens. Ett värde utanför 1 till 65,536 flyttas in i det intervallet. Det är också det belopp som reserveras från din balans medan begäran körs. Se Outputlängd nedan. Hostade open-weight-modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
max_completion_tokens integer Samma som max_tokens. När båda skickas används max_tokens. Hostade open-weight-modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
temperature number Samplingstemperatur. På de hostade open-weight-modellerna är standardvärdet 1 och värdena hålls mellan 0 och 2. Hostade open-weight-modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number 0.95 Nucleus-sampling. Värdena hålls mellan 0 och 1. Hostade open-weight-modeller
seed integer Seed för samplern, valfritt heltal. Utan det härleds seed från modellen och konversationen, så samma begäran som skickas två gånger använder samma seed. Hostade open-weight-modeller
stop string | array En sträng eller en array av strängar. Upp till 4 används. Svaret slutar före den första som förekommer; själva stopptexten returneras inte. Hostade open-weight-modeller
reasoning_effort string high Hur mycket modellen resonerar innan den svarar: off, low, medium eller high. none och minimal betyder off, default betyder medium, max betyder high. Alla andra värden ger 400. Hostade open-weight-modeller
reasoning object Samma inställning i objektform: {"effort": "low"}. När båda skickas används reasoning_effort. Hostade open-weight-modeller
tools array De funktioner som modellen får anropa, var och en som {"type": "function", "function": {"name", "description", "parameters"}}. Modellens anrop kommer tillbaka i tool_calls; din kod kör dem. Alla modeller
tool_choice string | object auto "auto" låter modellen avgöra. "required" får den att anropa ett verktyg. {"type": "function", "function": {"name": "…"}} får den att anropa just det verktyget. Hostade open-weight-modeller
response_format object {"type": "json_object"} för ett JSON-svar, eller {"type": "json_schema", "json_schema": {…}} för ett svar som följer ditt schema. Alla Shannon-nivåer; hostade open-weight-modeller enligt listan per id
web_search boolean false true låter modellen söka på webben innan den svarar. shannon-1.6-*, shannon-2-*, Shannon 3-familjen

Andra OpenAI-fält, som n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store och prompt_cache_key, accepteras så att befintlig klientkod körs oförändrad. De ändrar inte svaret: det finns alltid ett val (choice), och en ström slutar alltid med usage.

Ett fält med fel JSON-typ, till exempel "max_tokens": "100", ger 422. Det gör även en begäran utan messages.

Verktyg, strukturerad utdata, resonemang och webbsökning har var sin sida: Funktionsanrop, Strukturerade utdata, Resonemangsansträngning, Inbyggd webbsökning.

En begäran med alternativ

Den här begäran anger ett systemmeddelande, samplingsfälten och resonemangsansträngningen. Den använder en hostad open-weight-modell, som tillämpar alla dessa.

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 samma form som ovan. Dess usage lägger till två uppgifter på de hostade open-weight-modellerna: de prompttokens som lästs från cachen och de tokens som gått åt till resonemang.

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

Outputlängd

max_tokens gör två saker. För det första är det antalet tokens som reserveras från din balans när begäran startar. När svaret är klart ersätts det beloppet av de tokens som begäran förbrukade. Om max_tokens är större än vad som återstår av din balans ger begäran 429 Quota exceeded även om själva svaret hade fått plats. Skicka ett lägre max_tokens för att reservera mindre.

shannon-coder-1 räknas annorlunda på den här endpointen: varje begäran är ett av din plans Shannon Coder-anrop, och inga tokens reserveras för den. Gränser och balans

För det andra begränsar det svarets längd på de här modellerna:

Modeller Vad max_tokens gör
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 Svaret stannar när det når gränsen. En ström slutar då med finish_reason length.
Hostade open-weight-modeller Svarstexten stannar vid max_tokens. Resonemang räknas inte mot det. Värden under 256 fungerar som 256.

Utan max_tokens eller max_completion_tokens är värdet 4,096. På shannon-coder-1 är det 65,536.

Meddelanden

Varje meddelande är ett objekt med en role och ett content. content är en sträng, eller en array av delar när meddelandet innehåller mer än text.

Roll Beskrivning Tillämpas av
system Instruktioner till modellen. Lägg det först. På Shannon-nivåerna är det första system-meddelandet det som används. Hostade open-weight-modeller, shannon-1.6-*, shannon-2-*, shannon-coder-1
developer Läses som system. Hostade open-weight-modeller
user Det du frågar om. På Shannon-nivåerna är det sista user-meddelandet prompten och meddelandena före det är historiken. Alla modeller
assistant Modellens tidigare svar. Behåll dess tool_calls när du skickar ett verktygsresultat efter det. Alla modeller
tool Resultatet av ett verktygsanrop: tool_call_id innehåller anropets id och content resultatet som en sträng. Alla modeller

Med ett id i Shannon 3-familjen ska instruktioner som måste gälla läggas i user-meddelandet.

På Shannon-nivåerna ger en begäran utan användartext och utan tools 400 No user message provided.

Innehållsdelar

Del Beskrivning Tillgänglig på
{"type": "text", "text": "…"} Ren text. Alla modeller
{"type": "image_url", "image_url": {"url": "…"}} En bild, som en data:-URL med base64-innehåll eller som en http(s)-URL. Shannon 3-familjen, shannon-1.6-lite, shannon-1.6-pro och de hostade open-weight-modeller som anger bildinput
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Ett dokument (PDF, Word, PowerPoint eller Excel), som base64 eller via URL. Shannon 3-familjen

Storlekar, gränser och den fullständiga listan över former har en egen sida. Bilder och filer

Svarsobjektet

Fält Typ Beskrivning
id string chatcmpl- följt av 32 hexadecimala tecken.
object string Alltid chat.completion.
created integer Svarets tidpunkt, i Unix-sekunder.
model string Kanoniskt id för modellen som svarade. Det kan skilja sig i stavning från det id du skickade.
choices array Alltid exakt ett val (choice), med index 0.
choices[0].message.role string Alltid assistant.
choices[0].message.content string | null Svarstexten. Med tool_calls är den null på Shannon-nivåerna; de hostade open-weight-modellerna kan skicka text vid sidan av anropen.
choices[0].message.reasoning_content string | null Det resonemang som modellen skrev före svaret, eller null när det saknas.
choices[0].message.tool_calls array Finns bara när modellen anropar verktyg. Varje post har ett id, type function och function med name och arguments som en JSON-sträng.
choices[0].message.annotations array Bara på en begäran med web_search: true vars sökning fann något. En url_citation för varje källa som en markör i content namnger, med url, title, start_index och end_index (markörens position, räknad i tecken, slutet ingår inte).
choices[0].finish_reason string Varför svaret tog slut. Se Avslutsorsaker.
usage object Begärans tokens. Se Användning.
sources array Bara på en begäran med web_search: true vars sökning fann något: de resultat som modellen fick, vart och ett med index, title och url. [1] i svaret är posten med index 1.

Avslutsorsaker

finish_reason Beskrivning
stop Modellen avslutade sitt svar, eller en stop-sträng förekom.
tool_calls Modellen anropar ett eller flera verktyg. Kör dem och skicka resultaten i tool-meddelanden.
length Svaret avbröts vid outputgränsen. Rapporteras i strömmar från shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 och Shannon 3-familjen.

Ett svar som inte streamas rapporterar stop eller tool_calls.

Användning

Fält Typ Beskrivning Tillgänglig på
usage.prompt_tokens integer Inputtokens. Alla modeller
usage.completion_tokens integer Outputtokens: resonemang, svar och verktygsanrop tillsammans. Alla modeller
usage.total_tokens integer prompt_tokens plus completion_tokens. Alla modeller
usage.prompt_tokens_details.cached_tokens integer Den del av prompt_tokens som lästes från promptcachen. Hostade open-weight-modeller
usage.completion_tokens_details.reasoning_tokens integer Den del av completion_tokens som gick åt till resonemang. Hostade open-weight-modeller

På de hostade open-weight-modellerna är prompt_tokens dina meddelanden och verktygsdefinitioner räknade med modellens egen tokenizer, plus tokens för eventuella bilder. Endpointsen för tokenräkning returnerar samma tal innan du skickar. Tokenräkning

På Shannon-nivåerna räknar prompt_tokens allt som modellen läste för att skriva svaret, så det är större än enbart texten i dina meddelanden.

Streaming

Med stream satt till true kommer svaret som chat.completion.chunk-händelser och slutar med data: [DONE]. Sista chunken före den bär finish_reason och usage; inga stream_options behövs. Chunkformerna, keep-alive-raderna och felen inuti en ström har en egen sida. Streaming

Fel

Ett fel är ett JSON-objekt med en error-medlem. Kontrollerna körs i den här ordningen: API-nyckel, begäranskropp, modell-id, därefter balans. Tabellen listar det som den här endpointen oftast returnerar. Den fullständiga listan, med vad som ska försökas igen, har en egen sida. Felhantering

400 JSON
{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Status Typ Meddelande När
401 authentication_error Missing authentication
Invalid API key
Ingen API-nyckel skickades, eller så är nyckeln okänd eller återkallad.
400 invalid_request_error unknown model: <id> model är inte ett publicerat id.
400 invalid_request_error No user message provided Shannon-nivåer: begäran har ingen användartext och inga tools.
400 invalid_request_error <id> does not accept image input En bilddel skickades till en hostad open-weight-modell utan bildinput.
400 invalid_request_error <id> does not accept response_format response_format skickades till en hostad open-weight-modell utan strukturerad utdata.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high reasoning_effort har ett värde utanför listan.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … messages saknas, eller ett fält har fel JSON-typ.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens är större än vad som återstår av din balans.
429 rate_limit_error Too many requests. Retry in <n>s. Flood protection: fler än 120 begäranden på en minut på ditt konto.
500 server_error The model backend failed to answer. Please retry. Modellen gav inget svar. Skicka begäran igen.
502 api_error The model backend failed to answer. Please retry. Detsamma, på Shannon 3-familjen och de hostade open-weight-modellerna.