dokumentation
API

Jev — beslutningsmodel

Markdown

Jev fra TypeSafe er en beslutningsmodel, der besvarer typede spørgsmål om tekst eller JSON: valg mellem muligheder, vurdering på en skala eller »ja/nej« med sandsynligheder. Den er ikke en chat og genererer ikke tekst.

Komplet guide
POSThttps://api.ailoot.ai/v1/systemone
Jev — beslutningsmodel
curl https://api.ailoot.ai/v1/systemone \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jev-latest",
    "state": "Hjælp! Mine udbetalinger har slået fejl i 3 dage.",
    "questions": {
      "is_urgent": {
        "type": "noul",
        "instructions": "Udtrykker dette, at det haster?"
      }
    }
  }' 
200 OK
{
  "model": "jev-1.13.0",
  "answers": {
    "is_urgent": {
      "type": "noul",
      "noul": 0.95
    }
  },
  "usage": { "input_tokens": 296, "output_tokens": 20 }
}

Jev fra TypeSafe er en beslutningsmodel af klassen System One. Den skriver ikke tekst og fører ikke samtaler: du sender en tilstand (state) — tekst eller JSON — og et sæt spørgsmål, og får typede værdier med sandsynligheder tilbage. Koden kan straks forgrene sig, sortere og foretage routning ud fra dem uden at fortolke fri tekst.

Alle spørgsmål i én anmodning vurderes parallelt og uafhængigt af hinanden i forhold til den samme state. Ifølge TypeSafe ændrer ekstra spørgsmål næsten ikke svartiden, og spørgsmålene påvirker ikke hinanden.

HvadKort fortalt
Modeljev-latest — et alias for den seneste stabile version af Jev; kort i kataloget
MetodePOST /v1/systemone. Det er ikke en chat: OpenAI-, Anthropic- og Gemini-formaterne passer ikke til Jev. Svaret kommer samlet som ét JSON-objekt
Accepteret inputKun tekst: en streng, et JSON-objekt eller en liste af tekster. Omdan først billeder, lyd og video til tekst
Kontekst64K tokens pr. anmodning — state og alle spørgsmål tilsammen; state sammen med det længste spørgsmål — op til 32K
SprogIfølge TypeSafe er modellen mest præcis på engelsk; den accepterer andre sprog, men med lavere præcision — afprøv den med dine egne data
PrisInput $0.084 pr. 1 mio. tokens, gratis output

Anmodning

Godkendelse

  • Authorizationheaderpåkrævet

    Ailoot-nøgle i formen Bearer sk-….

Anmodningens indhold

  • modelstringpåkrævet

    jev-latest.

  • statestring | object | arraypåkrævet

    Det, der skal vurderes: en tekststreng eller JSON — en kundehenvendelse, en databasepost, en samtale eller applikationens aktuelle tilstand. Et objekt med beskrivende feltnavne er normalt mere praktisk end én streng.

  • questionsobjectpåkrævet

    Spørgsmål. Du vælger nøglerne, og svarene kommer med de samme nøgler; nøglen påvirker ikke svaret — selve spørgsmålet angives i instructions.

  • questions.*.typestringpåkrævet

    noul, choice eller score — se nedenfor.

  • questions.*.instructionsstring | object | arraypåkrævet

    Selve spørgsmålet. Et langt spørgsmål med data kan sendes som et objekt: spørgsmålet i ét felt, data i andre; henvis til felterne ved navn i backticks.

  • questions.*.criteriaobject | array

    Svarmuligheder, som afhænger af typen: beskrivelser af »ja« og »nej« for noul (valgfrit), en ordbog over muligheder for choice og en ordnet liste af niveauer for score.

Spørgsmålstyper

TypeHvad den spørger omHvad den returnerer
noulOm et udsagn er sandt: ja eller nejnoul — sandsynligheden for »ja« fra 0 til 1
choiceHvilken af de angivne muligheder der passerchoice, probabilities, confidence
scoreHvor state ligger på din niveauskalascore, legend, probabilities, confidence

Typerne kan blandes i én anmodning.

noul — ja eller nej

Feltet criteria er valgfrit: her kan du beskrive, hvad »ja« (true) og »nej« (false) betyder. Svaret noul — et tal fra 0 (nej) til 1 (ja).

"is_urgent": {
  "type": "noul",
  "instructions": "Udtrykker dette, at det haster?",
  "criteria": {
    "true": "Udtrykkeligt tidskritisk",
    "false": "Intet tyder på, at det haster"
  }
}

choice — valg af mulighed

criteria — en ordbog »mulighed → beskrivelse«; hvis en beskrivelse ikke er nødvendig, angiv null. Op til 255 muligheder. I svaret er choice — den mest sandsynlige mulighed, probabilities — sandsynligheden for hver mulighed (tilsammen 1), confidence — sikkerhed fra 0 til 1.

"department": {
  "type": "choice",
  "instructions": "Hvilket team skal håndtere dette?",
  "criteria": {
    "billing": "Betalinger, fakturering, refusioner",
    "technical": "Fejl, nedbrud, integrationer",
    "sales": "Priser, opgraderinger, nye kunder"
  }
}

score — vurdering på en skala

criteria — niveauer fra lavest til højest, højst 10 (TypeSafe anbefaler mindst to). I svaret er score — en værdi vægtet efter niveauernes sandsynligheder (kan ligge mellem niveauer), legend — niveauets nummer og beskrivelse, probabilities og confidence. Ifølge TypeSafe er score egnet til sammenligning med en tærskel, men ikke som et præcist tal mellem niveauerne.

"frustration": {
  "type": "score",
  "instructions": "Hvor frustreret er kunden?",
  "criteria": ["Rolig", "Frustreret", "Meget vred"]
}

Svar

  • modelstring

    Hvilken modelversion der svarede. Aliaset jev-latest peger med tiden på nye versioner: hvis du har tilpasset tærsklerne confidence til en bestemt version, skal du holde øje med dette felt.

  • answersobject

    Ét svar pr. spørgsmål med de samme nøgler. Hvert svar har type, choice og score har desuden confidence.

  • usageobject

    input_tokens og output_tokens. Kun inputtokens betales.

Flere spørgsmål i én anmodning

Stil alle spørgsmål til samme state i én anmodning: de vurderes parallelt, og state sendes kun én gang. Ifølge TypeSafe var én samlet anmodning i deres eksempel med 13 spørgsmål 12,2 gange billigere og 10 gange hurtigere end 13 separate anmodninger sendt efter hinanden, med de samme svar.

Del helst en kompleks vurdering op i enkle spørgsmål, og kombiner svarene i koden: brug eksempelvis separate vurderinger af marked, gennemførlighed og forskelle fra konkurrenterne i stedet for »vurdér ansøgningen«. Vægtene ændres så i koden frem for i spørgsmålsteksten.

{
  "model": "jev-latest",
  "state": "Hjælp! Mine udbetalinger har slået fejl i 3 dage.",
  "questions": {
    "department": {
      "type": "choice",
      "instructions": "Hvilket team skal håndtere dette?",
      "criteria": {
        "billing": "Betalinger, fakturering, refusioner",
        "technical": "Fejl, nedbrud, integrationer",
        "sales": "Priser, opgraderinger, nye kunder"
      }
    },
    "frustration": {
      "type": "score",
      "instructions": "Hvor frustreret er kunden?",
      "criteria": ["Rolig", "Frustreret", "Meget vred"]
    },
    "is_urgent": {
      "type": "noul",
      "instructions": "Udtrykker dette, at det haster?"
    }
  }
}

Hvornår den passer

  • Routing. Send en henvendelse til den rette afdeling og en anmodning til den rette behandler: enkel kode, en stor model eller et menneske.
  • Sortering og prioritering. Hastegrad, tone og risiko — på en skala med tærskler i koden.
  • Moderation og kontrol. Om en besked bryder reglerne, en kilde bekræfter et citat, eller et dokument indeholder svaret på et spørgsmål — før teksten sendes videre.
  • Scoring og rangering. Vurdér dokumenter, kandidater eller fundne tekstuddrag efter dine egne vurderingskriterier, og afgør i koden, hvad der skal videre.
  • I stedet for en skrøbelig »returnér JSON«-instruktion. Et kald, der er konstrueret til at returnere typede værdier, frem for tekst, der skal fortolkes.

Hvornår den ikke passer

  • Chat, svar til brugeren og generering af tekst eller kode. Jev skriver ikke tekst — til det findes tekstmodeller.
  • Som model til Claude Code, Cursor og andre agenter. Du kan ikke erstatte agentens model med jev-latest: agenten har brug for en model, der skriver tekst og kalder værktøjer. Jev kan kaldes fra den kode, som agenten skriver til dig.
  • Regning, optælling og sammenligning af datoer. Ifølge TypeSafe er det mere pålideligt at gøre dette i koden og kun spørge modellen om den betydningsmæssige del — for eksempel at udtrække datodele via choice.
  • Billeder, lyd og video. Modellen accepterer kun tekst — omdan disse data til tekst på forhånd.

Pris

Kun inputtokens betales — feltet usage.input_tokens i svaret: $0.084 pr. 1 million. Outputtokens er gratis.

Anmodningen i eksemplet på denne side (296 inputtokens) koster mindre end $0.0001.

Før anmodningen reserverer Ailoot beløbet på saldoen og debiterer efter svaret én gang ud fra det faktiske forbrug — sådan fungerer det.

Grænser

HvadGrænse
Hele anmodningen: state og alle spørgsmål64K tokens
state sammen med det længste spørgsmål32K tokens
Muligheder i én choiceop til 255
Niveauer i én scorefra 2 til 10
Inputkun tekst: en streng, et JSON-objekt eller en liste af tekster

Modelgrænserne er oplyst af TypeSafe. Begrænsninger for din nøgle og saldo gælder som for enhver anden Ailoot-model: Fejl og grænser.

Fejl

Fejl kommer i Ailoot APIs fælles format: kode, forståelig tekst og Request ID. De hyppigste for denne metode er:

KodeHvornårHvad du skal gøre
400 invalid_requestAnmodningens indhold bestod ikke valideringen: state, model eller questions mangler, type er ukendt, choice har mere end 255 muligheder, eller score har mere end 10 niveauerRet anmodningen ud fra fejlteksten: uden en rettelse bliver den afvist igen
400 context_length_exceededstate og spørgsmålene overskrider tilsammen modellens grænseFiltrér state i koden, og behold det, spørgsmålene kræver
401 invalid_api_keyNøglen mangler eller er ugyldigSend nøglen i Authorization-headeren
402 insufficient_balanceDen ledige saldo rækker ikke til reservationenFyld saldoen op
404 model_not_found, unsupported_endpointID indeholder en fejl, eller modellen kaldes med den forkerte metode, eksempelvis via /v1/chat/completionsKald kun jev-latest via POST /v1/systemone
429 rate_limit_exceededFor mange anmodningerVent det antal sekunder, som står i Retry-After-headeren, og prøv igen
503 model_overloaded, model_unavailableModellen er midlertidigt overbelastet eller utilgængeligHvis X-Should-Retry: true — prøv igen efter Retry-After sekunder; hvis false — kontrollér først Request ID i historikken
504 model_timeoutModellen svarede ikke i tideSend ikke anmodningen igen, før du har kontrolleret Request ID i historikken

Den fulde liste over koder findes på siden Fejl og grænser.

Har du stadig spørgsmål? Send Request ID og en beskrivelse — så hjælper vi med at finde ud af det.Kontakt support