Dansk LLM

Brug API'et

Chat completions

Send en samtale, og få modellens svar.

POST https://api.danskllm.dk/v1/chat/completions virker som OpenAI's Chat Completions API.

curl https://api.danskllm.dk/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DANSKLLM_API_KEY" \
  -d '{
    "model": "gemma-4-31b",
    "messages": [
      {"role": "system", "content": "Du er en hjælpsom assistent."},
      {"role": "user", "content": "Forklar kort, hvad en API-nøgle er."}
    ]
  }'

Samtalen

messages er hele samtalen indtil nu. Hver besked har en role og et content.

roleBruges til
system eller developerInstrukser til modellen, fx opgave og tone.
userDet, brugeren skriver.
assistantModellens tidligere svar.

API'et husker ikke samtaler. Send hele historikken med hver gang. Den del, der er den samme som sidst, læses fra cachen og koster mindre. Se prompt-caching.

Parametre

FeltBeskrivelse
modelModellens id, fx gemma-4-31b. Påkrævet.
messagesSamtalen. Påkrævet.
max_tokens eller max_completion_tokensDet højeste antal tokens i svaret.
temperature, top_pHvor meget svarene varierer.
stopTekst, der får modellen til at stoppe.
seedGør svarene mere ens fra gang til gang.
nAntal svar på samme forespørgsel, højst 4. Du betaler for hvert svar.
presence_penalty, frequency_penalty, logit_biasStyrer gentagelser og bestemte tokens.
logprobs, top_logprobsSandsynligheder for de valgte tokens.
stream, stream_optionsSe streaming.

tools, tool_choice, parallel_tool_calls og response_format bliver sendt videre til modellen, men virker kun, hvis modellen er sat op til det. Se modellens side. Andre felter bliver ignoreret, så kode skrevet til OpenAI ikke fejler.

Streaming

Sæt stream til true. Svaret kommer som server-sent events: en data:-linje for hvert stykke tekst og til sidst data: [DONE]. Indimellem kommer der kommentarlinjer, der starter med :. Dem kan du springe over; SDK'erne gør det selv.

curl -N https://api.danskllm.dk/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DANSKLLM_API_KEY" \
  -d '{
    "model": "gemma-4-31b",
    "messages": [{"role": "user", "content": "Skriv et kort digt om København."}],
    "stream": true
  }'

Forbruget kommer kun med i en stream, hvis du beder om det:

{ "stream": true, "stream_options": { "include_usage": true } }

Så har det sidste stykke før [DONE] et usage-felt og en tom choices-liste.

Hvis modellen holder op med at svare midt i et svar, slutter strømmen med en fejl i stedet for [DONE]. Du betaler ikke for et svar, vi har afbrudt.

data: {"error": {"message": "The model stopped answering before the reply was complete. Try again.", "type": "server_error", "param": null, "code": null}}

Forbrug

Svaret har et usage-felt med det, du betaler for:

"usage": {
  "prompt_tokens": 28,
  "completion_tokens": 87,
  "total_tokens": 115,
  "prompt_tokens_details": { "cached_tokens": 16 }
}

cached_tokens er den del af prompten, der blev læst fra cachen.

Kontekstvindue

Prompten og svaret skal tilsammen kunne være i modellens kontekstvindue. Er de for lange, får du status 400 med koden context_length_exceeded. Kontekstvinduet står på hver models side under Modeller.

På denne side