Gå til indhold
Chat Completions

Chat Completions

POST /v1/chat/completions tager en samtale og returnerer modellens næste besked i OpenAI Chat Completions-formatet. Brug det fra enhver OpenAI SDK eller over almindelig HTTP; denne side er referencen felt for felt.

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

Den mindste anmodning er et model-id og én brugerbesked.

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 ét 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

Anmodningsheaders

Header Værdi Beskrivelse
Authorization Bearer YOUR_API_KEY Din API-nøgle. x-api-key: YOUR_API_KEY accepteres i stedet på alle endpoints.
Content-Type application/json Påkrævet. Enhver anden værdi returnerer 415.
x-request-id Valgfri. Dit eget id for anmodningen. Det kommer uændret tilbage i svaret.

Svarheaders

Header Beskrivelse
x-request-id På hvert svar, fejl og streams inklusive: den værdi, du sendte, eller 12 hexadecimale tegn, hvis du ikke sendte nogen. Oplys den, når du melder et problem.
content-type application/json eller text/event-stream, når stream er true.

Anmodningsfelter

Kun messages er påkrævet. Kolonnen Anvendes af angiver de modeller, hvor et felt ændrer svaret. De hostede open-weight-modeller er de tolv id'er på modellisten; Shannon 3-familien er shannon-3, shannon-3-pro, shannon-3.1 og shannon-3.1-pro. Modeller og priser

Felt Type Standard Beskrivelse Anvendes af
model string shannon-1.6-lite Den model, der svarer: et id fra modellisten. Send det med hver anmodning. Der skelnes ikke mellem store og små bogstaver. Et id, der ikke er offentliggjort, returnerer 400 unknown model. Alle modeller
messages array Påkrævet. Samtalen med den ældste besked først. Se Beskeder nedenfor. Alle modeller
stream boolean false true sender svaret som server-sent events, mens det skrives. Alle modeller
max_tokens integer 4096 Øvre grænse for svaret, i tokens. En værdi uden for 1 til 65,536 flyttes ind i det interval. Det er også det beløb, der reserveres fra din saldo, mens anmodningen kører. Se Outputlængde nedenfor. Hostede open-weight-modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
max_completion_tokens integer Det samme som max_tokens. Når begge sendes, bruges max_tokens. Hostede open-weight-modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
temperature number Samplingtemperatur. På de hostede open-weight-modeller er standarden 1, og værdierne holdes mellem 0 og 2. Hostede open-weight-modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number 0.95 Nucleus sampling. Værdierne holdes mellem 0 og 1. Hostede open-weight-modeller
seed integer Samplerens seed, et vilkårligt heltal. Uden det udledes seedet af modellen og samtalen, så den samme anmodning sendt to gange bruger det samme seed. Hostede open-weight-modeller
stop string | array En streng eller et array af strenge. Op til 4 bruges. Svaret slutter før den første, der forekommer; selve stoptesten returneres ikke. Hostede open-weight-modeller
reasoning_effort string high Hvor meget modellen ræsonnerer, før den svarer: off, low, medium eller high. none og minimal betyder off, default betyder medium, max betyder high. Enhver anden værdi returnerer 400. Hostede open-weight-modeller
reasoning object Den samme indstilling i objektform: {"effort": "low"}. Når begge sendes, bruges reasoning_effort. Hostede open-weight-modeller
tools array De funktioner, modellen må kalde, hver som {"type": "function", "function": {"name", "description", "parameters"}}. Modellens kald kommer tilbage i tool_calls; din kode kører dem. Alle modeller
tool_choice string | object auto "auto" lader modellen bestemme. "required" får den til at kalde et værktøj. {"type": "function", "function": {"name": "…"}} får den til at kalde netop det værktøj. Hostede open-weight-modeller
response_format object {"type": "json_object"} for et JSON-svar eller {"type": "json_schema", "json_schema": {…}} for et svar, der følger dit skema. Alle Shannon-niveauer; hostede open-weight-modeller som angivet per id
web_search boolean false true lader modellen søge på nettet, før den svarer. shannon-1.6-*, shannon-2-*, Shannon 3-familien

Andre OpenAI-felter, f.eks. n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store og prompt_cache_key, accepteres, så eksisterende klientkode kører uændret. De ændrer ikke svaret: der er altid ét valg, og en stream slutter altid med forbrug.

Et felt med den forkerte JSON-type, f.eks. "max_tokens": "100", returnerer 422. Det gør en anmodning uden messages også.

Værktøjer, struktureret output, reasoning og websøgning har hver deres egen side: Funktionskald, Strukturerede outputs, Reasoning effort, Indbygget websøgning.

En anmodning med indstillinger

Denne anmodning angiver en systembesked, samplingfelterne og reasoning effort. Den bruger en hostet open-weight-model, som anvender dem alle.

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. Dets usage tilføjer to detaljer på de hostede open-weight-modeller: de prompt-tokens, der er læst fra cachen, og de tokens, der er brugt på 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
    }
  }
}

Outputlængde

max_tokens gør to ting. For det første er det det antal tokens, der reserveres fra din saldo, når anmodningen starter. Når svaret er færdigt, erstattes det beløb af de tokens, anmodningen brugte. Hvis max_tokens er større end det, der er tilbage af din saldo, returnerer anmodningen 429 Quota exceeded, selv om selve svaret ville have passet. Send en lavere max_tokens for at reservere mindre.

shannon-coder-1 tælles anderledes på dette endpoint: hver anmodning er ét af din plans Shannon Coder-kald, og der reserveres ingen tokens til den. Grænser og saldo

For det andet begrænser det svarets længde på disse modeller:

Modeller Hvad max_tokens gør
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 Svaret stopper, når det når grænsen. En stream slutter da med finish_reason length.
Hostede open-weight-modeller Svarteksten stopper ved max_tokens. Reasoning tælles ikke med. Værdier under 256 virker som 256.

Uden max_tokens eller max_completion_tokens er værdien 4,096. På shannon-coder-1 er den 65,536.

Beskeder

Hver besked er et objekt med en role og et content. content er en streng eller et array af dele, når beskeden indeholder mere end tekst.

Rolle Beskrivelse Anvendes af
system Instruktioner til modellen. Sæt den først. På Shannon-niveauerne er det den første system-besked, der bruges. Hostede open-weight-modeller, shannon-1.6-*, shannon-2-*, shannon-coder-1
developer Læses som system. Hostede open-weight-modeller
user Det, du spørger om. På Shannon-niveauerne er den sidste user-besked prompten, og beskederne før den er historikken. Alle modeller
assistant Modellens tidligere svar. Behold dens tool_calls, når du sender et værktøjsresultat efter den. Alle modeller
tool Resultatet af et værktøjskald: tool_call_id indeholder kaldets id og content resultatet som en streng. Alle modeller

Med et id fra Shannon 3-familien skal du lægge instruktioner, der skal overholdes, i user-beskeden.

På Shannon-niveauerne returnerer en anmodning uden brugertekst og uden tools 400 No user message provided.

Indholdsdele

Del Beskrivelse Tilgængelig på
{"type": "text", "text": "…"} Ren tekst. Alle modeller
{"type": "image_url", "image_url": {"url": "…"}} Et billede, som en data:-URL med base64-indhold eller som en http(s)-URL. Shannon 3-familien, shannon-1.6-lite, shannon-1.6-pro og de hostede open-weight-modeller, der angiver billedinput
{"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, grænser og den fulde liste over former har deres egen side. Billeder og filer

Svarobjektet

Felt Type Beskrivelse
id string chatcmpl- efterfulgt af 32 hexadecimale tegn.
object string Altid chat.completion.
created integer Svarets tidspunkt, i Unix-sekunder.
model string Det kanoniske id for den model, der svarede. Det kan afvige i stavemåde fra det id, du sendte.
choices array Altid præcis ét valg med index 0.
choices[0].message.role string Altid assistant.
choices[0].message.content string | null Svarteksten. Med tool_calls er den null på Shannon-niveauerne; de hostede open-weight-modeller kan sende tekst ved siden af kaldene.
choices[0].message.reasoning_content string | null Den reasoning, modellen skrev før svaret, eller null, når der ingen er.
choices[0].message.tool_calls array Findes kun, når modellen kalder værktøjer. Hver post har et id, type function og function med name og arguments som en JSON-streng.
choices[0].message.annotations array Kun på en anmodning med web_search: true, hvis søgning fandt noget. Én url_citation for hver kilde, en markør i content nævner, med url, title, start_index og end_index (markørens position, talt i tegn, slutningen er ikke med).
choices[0].finish_reason string Hvorfor svaret sluttede. Se Afslutningsårsager.
usage object Anmodningens tokens. Se Forbrug.
sources array Kun på en anmodning med web_search: true, hvis søgning fandt noget: de resultater, modellen fik, hver med index, title og url. [1] i svaret er posten med index 1.

Afslutningsårsager

finish_reason Beskrivelse
stop Modellen afsluttede sit svar, eller en stop-streng forekom.
tool_calls Modellen kalder ét eller flere værktøjer. Kør dem, og send resultaterne i tool-beskeder.
length Svaret blev afbrudt ved outputgrænsen. Rapporteres i streams fra shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 og Shannon 3-familien.

Et svar, der ikke streames, rapporterer stop eller tool_calls.

Forbrug

Felt Type Beskrivelse Tilgængelig på
usage.prompt_tokens integer Input-tokens. Alle modeller
usage.completion_tokens integer Output-tokens: reasoning, svar og værktøjskald tilsammen. Alle modeller
usage.total_tokens integer prompt_tokens plus completion_tokens. Alle modeller
usage.prompt_tokens_details.cached_tokens integer Den del af prompt_tokens, der blev læst fra prompt-cachen. Hostede open-weight-modeller
usage.completion_tokens_details.reasoning_tokens integer Den del af completion_tokens, der blev brugt på reasoning. Hostede open-weight-modeller

På de hostede open-weight-modeller er prompt_tokens dine beskeder og værktøjsdefinitioner talt med modellens egen tokenizer plus tokens fra eventuelle billeder. Endpointene til tokentælling returnerer det samme tal, før du sender. Tælling af tokens

På Shannon-niveauerne tæller prompt_tokens alt, modellen læste for at skrive svaret, så tallet er større end teksten i dine beskeder alene.

Streaming

Når stream er sat til true, kommer svaret som chat.completion.chunk-hændelser og slutter med data: [DONE]. Den sidste chunk før den indeholder finish_reason og usage; der er ikke brug for nogen stream_options. Chunk-formerne, keep-alive-linjerne og fejl inde i en stream har deres egen side. Streaming

Fejl

En fejl er et JSON-objekt med et error-medlem. Kontrollerne køres i denne rækkefølge: API-nøgle, anmodningens body, model-id og til sidst saldo. Tabellen viser, hvad dette endpoint oftest returnerer. Den fulde liste med, hvad der kan prøves igen, har sin egen side. Fejlhåndtering

400 JSON
{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Status Type Besked Hvornår
401 authentication_error Missing authentication
Invalid API key
Der blev ikke sendt nogen API-nøgle, eller nøglen er ukendt eller tilbagekaldt.
400 invalid_request_error unknown model: <id> model er ikke et offentliggjort id.
400 invalid_request_error No user message provided Shannon-niveauer: anmodningen har ingen brugertekst og ingen tools.
400 invalid_request_error <id> does not accept image input En billeddel blev sendt til en hostet open-weight-model uden billedinput.
400 invalid_request_error <id> does not accept response_format response_format blev sendt til en hostet open-weight-model uden struktureret output.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high reasoning_effort indeholder en værdi uden for listen.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … messages mangler, eller et felt har den forkerte JSON-type.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens er større end det, der er tilbage af din saldo.
429 rate_limit_error Too many requests. Retry in <n>s. Flood protection: mere end 120 anmodninger på ét minut på din konto.
500 server_error The model backend failed to answer. Please retry. Modellen gav ikke noget svar. Send anmodningen igen.
502 api_error The model backend failed to answer. Please retry. Det samme, på Shannon 3-familien og de hostede open-weight-modeller.