Decide Beta
Beta: i brug, men detaljer kan stadig ændre sig.
Decide er i Beta. Decide besvarer typede spørgsmål om en tekst med sandsynligheder i stedet for fritekst: hvilken kategori et brev hører til, hvor hurtigt det skal besvares, og om det indeholder personoplysninger. En beslutningsmodel skriver ingen tekst, så der er intet at parse. Hvert svar har hele sandsynlighedsfordelingen bag sig og en sikkerhed.
Decide kører på komplais lokale infrastruktur i Danmark uden betaling for AI. Teksten gemmes ikke.
Før du starter
- Jeres organisation har Decide i aftalen og har godkendt behandlingen, og en administrator har givet dig adgang til Decide under Organisation › Personer › Adgang til værktøjer i hubben.
- Du har en personlig API-nøgle (
kp_live_...) med scopetdecide:process, oprettet på hubbens side API-nøgler på hub.komplai.dk/api-access. Organisationens integrationsnøgle (kp_org_...) får 403 integration_not_permitted. - Kald i beta kan stadig ændre sig, med varsel. Brug kun testdata, indtil jeres organisation har en godkendt databehandleraftale.
Dit første kald
Send én tekst i state og dine spørgsmål i questions, hvert under et id, du selv vælger.
curl https://api.komplai.dk/v1/decide \
-H "Authorization: Bearer $KOMPLAI_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"state": "Hej. Jeg vil gerne have en kopi af min ansøgning om byggetilladelse fra marts. Venlig hilsen Mette Kjærgaard Holm",
"questions": {
"category": {
"type": "choice",
"instructions": "Hvad handler henvendelsen om?",
"criteria": {
"aktindsigt": "Borgeren beder om kopi af dokumenter eller aktindsigt",
"klage": "Borgeren klager over en afgørelse",
"andet": "Noget andet"
}
},
"urgency": {
"type": "score",
"instructions": "Hvor hurtigt skal henvendelsen besvares?",
"criteria": ["Inden for den normale frist", "Inden for en uge", "Samme dag"]
},
"personal_data": {
"type": "noul",
"instructions": "Indeholder teksten personoplysninger?",
"criteria": {
"true": "Ja, for eksempel et navn eller et CPR-nummer",
"false": "Nej"
}
}
}
}'{
"model": "convaiinnovations/laya/multilingual",
"answers": {
"category": {
"type": "choice",
"choice": "aktindsigt",
"probabilities": { "aktindsigt": 0.91, "klage": 0.03, "andet": 0.06 },
"confidence": 0.672,
"action": { "act_probability": 0.88 }
},
"urgency": {
"type": "score",
"score": 0.32,
"max": 2,
"probabilities": [0.72, 0.24, 0.04],
"confidence": 0.356
},
"personal_data": {
"type": "noul",
"noul": 0.97,
"probabilities": { "true": 0.97, "false": 0.03 },
"confidence": 0.806
}
},
"usage": { "input_tokens": 118, "output_tokens": 0 },
"latency_ms": 38
}Svarene kommer tilbage under de samme id'er. usage.output_tokens er altid 0, og latency_ms er modellens egen tid uden netværket.
Spørgsmålstyper
Hvert spørgsmål har type, instructions (spørgsmålet med dine egne ord) og criteria, hvis form afhænger af typen.
| Type | criteria | Svaret |
|---|---|---|
choice | Et objekt med 2 til 32 muligheder: en kort nøgle og hvad muligheden betyder | choice er nøglen med den højeste sandsynlighed, og probabilities giver hver nøgle dens sandsynlighed |
score | En liste med 2 til 32 niveauer, laveste først | score er det forventede niveau (hvert niveau gange dets sandsynlighed, lagt sammen), max det højeste niveau, og probabilities én værdi pr. niveau i den rækkefølge, du sendte dem |
noul | true og false, og hvad hver af dem betyder | noul er sandsynligheden for, at udsagnet er sandt |
Sandsynlighederne i et svar giver tilsammen 1. Hold nøglerne til mulighederne korte og maskinvenlige, for svaret nævner nøglen.
Hvert svar har også:
confidence: hvor afgjort svaret er, fra 0 (jævnt fordelt) til 1 (alt på én mulighed). Det siger intet om, hvorvidt svaret er rigtigt.action.act_probability, når modellen giver den: hvor sandsynligt det er, at man kan handle på svaret, uden at en person kontrollerer det.
En forespørgsel tager fra 1 til 64 spørgsmål. De deler én læsning af teksten, så flere spørgsmål koster ikke meget mere end ét. state er en tekst eller et JSON-objekt, som komplai gør til tekst; lister og andre værdier afvises. Forespørgslen må højst fylde 80.000 tegn som JSON og body højst 320.000 bytes. Felter, der ikke er beskrevet, ignoreres.
Modeller
model vælger beslutningsmodellen:
model | Model |
|---|---|
komplai-decide | Laya |
komplai-decide-claes | Claes |
Udelad feltet for at bruge standarden: den model, du har valgt i hubben, ellers organisationens standard, ellers komplai-decide. model i svaret nævner den model, der svarede, ved dens checkpoint. En model, Decide ikke tilbyder jeres organisation, giver 409 model_not_enabled, og 404, når den lokale infrastruktur ikke tilbyder den lige nu. API'et vælger aldrig en anden model for dig.
Mange tekster i ét kald
POST /v1/decide/batch stiller de samme spørgsmål om op til 100 tekster i states i én kørsel af modellen. Svarene kommer i results i samme rækkefølge som states, og kørslen besvares samlet eller afvises samlet. Den tæller som ét kald i din grænse for kald.
curl https://api.komplai.dk/v1/decide/batch \
-H "Authorization: Bearer $KOMPLAI_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"states": [
"Hej. Jeg vil gerne have en kopi af min ansøgning om byggetilladelse fra marts.",
"Jeg klager over afslaget på min ansøgning om boligstøtte. Afgørelsen er forkert, og jeg har brug for svar hurtigt."
],
"questions": {
"category": {
"type": "choice",
"instructions": "Hvad handler henvendelsen om?",
"criteria": {
"aktindsigt": "Borgeren beder om kopi af dokumenter eller aktindsigt",
"klage": "Borgeren klager over en afgørelse",
"andet": "Noget andet"
}
}
}
}'{
"model": "convaiinnovations/laya/multilingual",
"results": [
{
"answers": {
"category": { "type": "choice", "choice": "aktindsigt", "probabilities": { "aktindsigt": 0.91, "klage": 0.03, "andet": 0.06 }, "confidence": 0.672 }
},
"usage": { "input_tokens": 61, "output_tokens": 0 }
},
{
"answers": {
"category": { "type": "choice", "choice": "klage", "probabilities": { "aktindsigt": 0.08, "klage": 0.86, "andet": 0.06 }, "confidence": 0.544 }
},
"usage": { "input_tokens": 66, "output_tokens": 0 }
}
],
"usage": { "input_tokens": 127, "output_tokens": 0 },
"latency_ms": 52
}En samlet forespørgsel må højst fylde 200.000 tegn som JSON og body højst 800.000 bytes.
Tidsgrænser og fejl
Modellen har 30 sekunder til at svare. Fejler den, svarer den ikke i tide, eller kan den ikke nås, giver kaldet service_unavailable. Et svar, der ikke består komplais kontrol, fx et manglende svar eller sandsynligheder, der ikke giver 1 tilsammen, sendes aldrig videre: kaldet giver invalid_response. En forespørgsel, der ikke har den beskrevne form, giver invalid_input.
Hvor data behandles
Decide kører kun på komplais validerede beslutningsmodeller på komplais lokale infrastruktur i Danmark. Data forlader ikke EU, og organisationens egne AI-forbindelser bruges aldrig til Decide. Teksten gemmes ikke; komplai registrerer kaldets metadata, fx hvem der kaldte, hvornår og med hvilken model.
Reference og fejl
- Decide-referencen: alle felter i POST /v1/decide og POST /v1/decide/batch med kodeeksempler og en konsol, hvor du kan prøve hvert kald.
- Fejl: alle koder, og hvad du kan gøre. Grænserne for kald står under Grænser.