Gå til indholdet

Værktøjer

Coding Beta

Beta: i brug, men detaljer kan stadig ændre sig.

Coding er i Beta. Coding giver kodeassistenter et OpenAI-kompatibelt chatsvar, der streames som server-sent events, med tekst, ræsonnement og funktionskald. komplai kører aldrig et værktøj: klienten kører det på din maskine, spørger dig, hvor det er nødvendigt, og sender resultatet med i næste forespørgsel.

Coding bruger organisationens adgang til Chat og de godkendte modeller. Modellen kører i komplais EU-cloud, og forbruget tæller med i organisationens månedlige loft for AI-forbrug. Coding kræver ingen særskilt licens.

Før du starter

  • Coding er slået til for jeres organisation, organisationens Chat kører i komplais EU-cloud med en godkendt opsætning, og du har adgang til Chat. Ellers giver alle kald 403 coding_not_enabled. Et svar kræver også et månedligt loft for AI-forbrug for måneden; uden det giver kaldet 403 ai_credit_not_granted.
  • Du har en personlig API-nøgle (kp_live_...) med scopes coding:read og coding:complete. komplais coding-klient opretter en, når du logger ind med organisationen, og den gælder i 30 dage; Coding-klient viser hvordan. Du kan også oprette en nøgle med begge scopes på hubbens side API-nøgler på hub.komplai.dk/api-access. Organisationens integrationsnøgle (kp_org_...) får 403 integration_not_permitted.

De tre kald

KaldScopeHvad det gør
GET /v1/coding/accountcoding:readOrganisationen, de gældende vilkår som contract, hvor et kalds data sendes hen, det månedlige loft for AI-forbrug og månedens forbrug, standardmodellen og kodemodellerne
GET /v1/coding/modelscoding:readKodemodellerne med deres grænser i OpenAI's listeformat
POST /v1/coding/chat/completionscoding:completeEt streamet svar
  1. Læs kontoen, og vis vilkårene til personen, før vedkommende forbinder.
  2. Vælg en model fra kontoens models eller fra GET /v1/coding/models.
  3. Stream et svar med den gældende contract i X-Komplai-Contract og et nyt UUID i X-Request-Id.

Læs kontoen

Shell
curl https://api.komplai.dk/v1/coding/account \
  -H "Authorization: Bearer $KOMPLAI_TOKEN"

Svaret, forkortet:

JSON
{
  "id": "2e7c4b9a-5d1f-4a3e-8b6c-9f0d1e2a3b4c",
  "name": "Eksempel Kommune",
  "contract": "86fb88e41acf1ec181a16eaf5d7725059473b626b7d4289ee1b9c3b2aaed45b0",
  "defaultModel": "mistral-small-3.2-24b-instruct-2506",
  "data": {
    "recipients": "komplai → EU-cloud",
    "region": "komplais API: Hetzner, Tyskland. Model: komplais EU-cloud, EU · Frankrig.",
    "checkedAt": "2026-10-13"
  },
  "models": [
    {
      "id": "mistral-small-3.2-24b-instruct-2506",
      "name": "Mistral Small 3.2 (24B)",
      "context_length": 128000,
      "max_output_tokens": 32768,
      "capabilities": { "function_calling": true },
      "reasoning_efforts": []
    }
  ],
  "credential": {
    "scopes": ["coding:read", "coding:complete"],
    "expiresAt": "2026-11-19T08:00:00.000Z"
  }
}
  • contract identificerer de gældende vilkår: udbyderen og dens vilkår, datatilstanden, organisationens aftale og kodemodellerne med deres priser. Send den med hver forespørgsel til POST /v1/coding/chat/completions.
  • data oplyser, hvem der modtager et kalds data, hvor det behandles, udbyderens vilkår for træning og opbevaring, hvordan forbruget opgøres, hvad komplai gemmer, kilden til udbyderens vilkår og hvornår komplai kontrollerede dem. Vis vilkårene til personen, før vedkommende forbinder.
  • balance indeholder det månedlige loft for AI-forbrug og månedens forbrug, det reserverede og det, der er tilbage. Hver model i models har udbyderens priser.
  • credential viser nøglens scopes, og hvornår den udløber.

Stream et svar

Gem kontrakten i en variabel, og send forespørgslen. -N får curl til at skrive hver hændelse, så snart den kommer.

Shell
KOMPLAI_CODING_CONTRACT=$(curl -s https://api.komplai.dk/v1/coding/account \
  -H "Authorization: Bearer $KOMPLAI_TOKEN" | jq -r .contract)

curl -N https://api.komplai.dk/v1/coding/chat/completions \
  -H "Authorization: Bearer $KOMPLAI_TOKEN" \
  -H "Content-Type: application/json" \
  -H "X-Komplai-Contract: $KOMPLAI_CODING_CONTRACT" \
  -H "X-Request-Id: $(uuidgen)" \
  -d '{
    "model": "mistral-small-3.2-24b-instruct-2506",
    "stream": true,
    "max_tokens": 256,
    "messages": [
      {"role": "system", "content": "Du er en omhyggelig kodeassistent."},
      {"role": "user", "content": "Hvad giver udtrykket 1 + 1?"}
    ]
  }'
text/event-stream
data: {"id":"chatcmpl-5f1e9d2c","object":"chat.completion.chunk","created":1792483200,"model":"mistral-small-3.2-24b-instruct-2506","choices":[{"index":0,"delta":{"role":"assistant","content":"Udtrykket giver 2"},"finish_reason":null}]}

data: {"id":"chatcmpl-5f1e9d2c","object":"chat.completion.chunk","created":1792483200,"model":"mistral-small-3.2-24b-instruct-2506","choices":[{"index":0,"delta":{"content":": summen af 1 og 1."},"finish_reason":null}]}

data: {"id":"chatcmpl-5f1e9d2c","object":"chat.completion.chunk","created":1792483200,"model":"mistral-small-3.2-24b-instruct-2506","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":31,"completion_tokens":14}}

data: [DONE]

Hver data-linje er en chat.completion.chunk fra modellen, som komplai har kontrolleret, før den sendes videre: tekst i choices[0].delta.content, ræsonnement i reasoning_content, funktionskald i tool_calls og forbruget i den sidste chunk. data: [DONE] afslutter et komplet svar.

En stream uden [DONE] er ikke et komplet svar

Fejler kaldet, efter streamen er begyndt, er den sidste hændelse data: {"error": {"message": ..., "code": ..., "request_id": ..., "doc_url": ...}}, og der kommer ingen [DONE]. Behandl resultatet som ukendt, ligesom en stream, der stopper for tidligt.

Forespørgslen skal have:

  • model: et id fra GET /v1/coding/models. Et andet id giver model_not_enabled.
  • stream: true. stream_options er valgfri; forbruget står altid i streamen.
  • Præcis ét af max_tokens og max_completion_tokens, fra 1 til 32.000 og inden for modellens max_output_tokens. Input og output skal tilsammen kunne være i modellens kontekst, ellers context_limit.

En forespørgsel har højst 512 beskeder og 64 værktøjer, og body højst 2.000.000 bytes. reasoning_effort tager en af modellens reasoning_efforts; en anden værdi giver reasoning_not_supported. Svaret skal være færdigt inden for 600 sekunder, ellers timeout.

Funktionskald

Beskriv de funktioner, modellen må kalde, i tools. Vil modellen bruge en, indeholder streamen tool_calls og slutter med finish_reason: "tool_calls". Din klient kører funktionen, spørger personen, hvor det er nødvendigt, og sender næste forespørgsel med samtalen indtil nu: assistentbeskeden med dens tool_calls og derefter en tool-besked med resultatet for hvert kald.

Beskederne i næste forespørgsel
[
  {"role": "user", "content": "Hvad står der i README.md?"},
  {
    "role": "assistant",
    "content": null,
    "tool_calls": [
      {"id": "call_7b2d", "type": "function", "function": {"name": "read_file", "arguments": "{\"path\":\"README.md\"}"}}
    ]
  },
  {"role": "tool", "tool_call_id": "call_7b2d", "content": "# Mit projekt\nEt lille kommandolinjeværktøj."}
]

Hvert funktionskald skal besvares med sit tool_call_id, før næste besked kommer. Send tidligere reasoning_content uændret tilbage på assistentbeskeden. tool_choice tager auto, none, required eller én funktion ved navn.

Forespørgsels-id og gentagelser

X-Request-Id tager et nyt UUID (version 4) for hver ny logisk handling. Ved du ikke, om en handling nåede frem til komplai, fx efter en afbrudt forbindelse, så send den igen med samme id. komplai svarer så duplicate_request i stedet for at kalde udbyderen en gang til. Gentag aldrig automatisk med et nyt id efter coding_service_unavailable eller timeout, for kaldet kan have nået modellen og talt med i loftet. Request-Id i svaret gentager dit id.

Når vilkårene ændres

Ændres udbyderen, dens vilkår, datatilstanden, aftalen eller kodemodellerne og deres priser, ændres contract også, og et svar med den gamle giver terms_changed. Læs kontoen igen, vis de nye vilkår til personen, og send den nye kontrakt. Godkend aldrig nye vilkår automatisk. Almindeligt AI-forbrug ændrer ikke kontrakten.

Det månedlige loft for AI-forbrug

Før udbyderen kaldes, reserverer komplai det mest, kaldet kan koste, under organisationens månedlige loft for AI-forbrug. Forbruget måles derefter til udbyderens pris. Cachet input har sin egen pris, hvor udbyderen har en, og ræsonnement tæller som outputtokens. Kaldene stopper, når loftet eller organisationens egen grænse er nået (ai_credit_exhausted), eller når din personlige grænse er nået (person_ai_credit_exhausted). API'et skifter aldrig til en anden model.

Hvor data behandles

Prompts, kode og værktøjsresultater sendes til kodemodellen i komplais EU-cloud i Frankrig. komplais API kører på komplais servere i Tyskland. Data forlader ikke EU. komplai gemmer hverken prompts, svar eller værktøjsresultater, kun kaldets metadata til regnskab og revision. Udbyderens egne vilkår for træning og opbevaring står i kontoens data.

Reference og fejl

  • Coding-referencen: alle felter i de tre kald med kodeeksempler.
  • Coding-klient: komplais klient til kommandolinjen og OpenCode, der logger ind, læser kontoen og sender headerne for dig.
  • Fejl: alle koder, og hvad du kan gøre.
komplaidevelopers
Kontakt os

Søg i dokumentationen

Vælg med piletasterne, og åbn med Enter.