documentatie
API

Jev — beslissingsmodel

Markdown

Het beslissingsmodel Jev van TypeSafe beantwoordt getypeerde vragen over tekst of JSON: een optie kiezen, een score op een schaal of “ja/nee” met waarschijnlijkheden. Het is geen chat en genereert geen tekst.

Volledige gids
POSThttps://api.ailoot.ai/v1/systemone
Jev — beslissingsmodel
curl https://api.ailoot.ai/v1/systemone \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jev-latest",
    "state": "Help! Mijn uitbetalingen mislukken al 3 dagen.",
    "questions": {
      "is_urgent": {
        "type": "noul",
        "instructions": "Drukt dit urgentie uit?"
      }
    }
  }' 
200 OK
{
  "model": "jev-1.13.0",
  "answers": {
    "is_urgent": {
      "type": "noul",
      "noul": 0.95
    }
  },
  "usage": { "input_tokens": 296, "output_tokens": 20 }
}

Jev is een beslissingsmodel van TypeSafe in de klasse System One. Het schrijft geen tekst en voert geen gesprekken: je geeft een toestand (state) door — tekst of JSON — en een reeks vragen, en krijgt getypeerde waarden met waarschijnlijkheden terug. Je code kan daarmee direct vertakken, sorteren en routeren, zonder vrije tekst te hoeven parsen.

Alle vragen in één verzoek worden parallel en onafhankelijk van elkaar beoordeeld tegen dezelfde state. Volgens TypeSafe verandert het toevoegen van vragen de responstijd nauwelijks en beïnvloeden vragen elkaar niet.

WatIn het kort
Modeljev-latest — een alias voor de laatste stabiele versie van Jev; kaart in de catalogus
MethodePOST /v1/systemone. Dit is geen chat: de OpenAI-, Anthropic- en Gemini-formaten zijn niet geschikt voor Jev. Het antwoord komt volledig binnen als één JSON
Ondersteunde invoerAlleen tekst: een string, JSON-object of array van teksten. Zet afbeeldingen, audio en video eerst om naar tekst
Context64K tokens per verzoek — state en alle vragen samen; state met de langste vraag — maximaal 32K
TaalVolgens TypeSafe werkt het model het nauwkeurigst in het Engels; het accepteert andere talen, maar met een lagere nauwkeurigheid — controleer dit met je eigen gegevens
PrijsInvoer $0.084 per 1 miljoen tokens, output gratis

Verzoek

Authenticatie

  • Authorizationheaderverplicht

    Ailoot-sleutel in de vorm Bearer sk-….

Verzoekbody

  • modelstringverplicht

    jev-latest.

  • statestring | object | arrayverplicht

    Wat je wilt beoordelen: tekst of JSON — een klantvraag, databaserecord, correspondentie of de huidige toestand van je applicatie. Een object met duidelijke veldnamen is meestal handiger dan één string.

  • questionsobjectverplicht

    Vragen. Je kiest zelf de sleutels; de antwoorden gebruiken dezelfde sleutels. De sleutel beïnvloedt het antwoord niet — de vraag zelf staat in instructions.

  • questions.*.typestringverplicht

    noul, choice of score — zie hieronder.

  • questions.*.instructionsstring | object | arrayverplicht

    De vraag zelf. Een lange vraag met gegevens kun je als object doorgeven: de vraag in één veld, de gegevens in andere. Verwijs met backticks naar de veldnamen.

  • questions.*.criteriaobject | array

    Antwoordopties verschillen per type: omschrijvingen van “ja” en “nee” bij noul (optioneel), een woordenboek met opties bij choice en een geordende lijst met niveaus bij score.

Vraagtypen

TypeWat wordt gevraagdWat wordt teruggegeven
noulIs de bewering waar: ja of neenoul — de waarschijnlijkheid van “ja”, van 0 tot 1
choiceWelke van de opgegeven opties pastchoice, probabilities, confidence
scoreWaar state zich op jouw schaal van niveaus bevindtscore, legend, probabilities, confidence

Je kunt de typen binnen één verzoek combineren.

noul — ja of nee

Veld criteria is optioneel: hierin kun je beschrijven wat “ja” (true) en “nee” (false) betekenen. Het antwoord noul — een getal van 0 (nee) tot 1 (ja).

"is_urgent": {
  "type": "noul",
  "instructions": "Drukt dit urgentie uit?",
  "criteria": {
    "true": "Expliciet tijdsgevoelig",
    "false": "Geen urgentie aangegeven"
  }
}

choice — een optie kiezen

criteria — een woordenboek “optie → omschrijving”; geef null op als geen omschrijving nodig is. Maximaal 255 opties. In het antwoord is choice — de meest waarschijnlijke optie, probabilities — de waarschijnlijkheid van elke optie (samen 1), confidence — de mate van zekerheid, van 0 tot 1.

"department": {
  "type": "choice",
  "instructions": "Welk team moet dit behandelen?",
  "criteria": {
    "billing": "Betalingen, facturatie, terugbetalingen",
    "technical": "Bugs, uitval, integraties",
    "sales": "Prijsstelling, upgrades, nieuwe klanten"
  }
}

score — een score op een schaal

criteria — niveaus van laag naar hoog, maximaal 10 (TypeSafe raadt minimaal twee aan). In het antwoord is score — een waarde gewogen naar de waarschijnlijkheden van de niveaus (kan tussen niveaus liggen), legend — het nummer en de omschrijving van het niveau, probabilities en confidence. Volgens TypeSafe is score geschikt voor een vergelijking met een drempel, maar niet voor een exact getal tussen de niveaus.

"frustration": {
  "type": "score",
  "instructions": "Hoe gefrustreerd is de klant?",
  "criteria": ["Rustig", "Gefrustreerd", "Erg boos"]
}

Antwoord

  • modelstring

    Welke modelversie heeft geantwoord. De alias jev-latest verwijst na verloop van tijd naar nieuwe versies: als je drempels voor confidence voor een specifieke versie hebt ingesteld, houd dit veld dan in de gaten.

  • answersobject

    Eén antwoord per vraag, onder dezelfde sleutels. Elk antwoord heeft type, choice en score hebben ook confidence.

  • usageobject

    input_tokens en output_tokens. Alleen invoertokens worden in rekening gebracht.

Meerdere vragen in één verzoek

Stel alle vragen over één state in één verzoek: ze worden parallel beoordeeld en state wordt maar één keer doorgegeven. Volgens TypeSafe was in hun voorbeeld met 13 vragen één gezamenlijk verzoek 12,2 keer goedkoper en 10 keer sneller dan 13 afzonderlijke verzoeken die achter elkaar werden verstuurd, met dezelfde antwoorden.

Splits een complex oordeel liever op in eenvoudige vragen en combineer de antwoorden in code: bijvoorbeeld afzonderlijke beoordelingen van de markt, haalbaarheid en verschillen met concurrenten in plaats van “beoordeel de aanvraag”. De gewichten kun je dan in code wijzigen, in plaats van in de vraagtekst.

{
  "model": "jev-latest",
  "state": "Help! Mijn uitbetalingen mislukken al 3 dagen.",
  "questions": {
    "department": {
      "type": "choice",
      "instructions": "Welk team moet dit behandelen?",
      "criteria": {
        "billing": "Betalingen, facturatie, terugbetalingen",
        "technical": "Bugs, uitval, integraties",
        "sales": "Prijsstelling, upgrades, nieuwe klanten"
      }
    },
    "frustration": {
      "type": "score",
      "instructions": "Hoe gefrustreerd is de klant?",
      "criteria": ["Rustig", "Gefrustreerd", "Erg boos"]
    },
    "is_urgent": {
      "type": "noul",
      "instructions": "Drukt dit urgentie uit?"
    }
  }
}

Wanneer het geschikt is

  • Routering. Stuur een klantvraag naar de juiste afdeling en een verzoek naar de juiste verwerker: eenvoudige code, een groter model of een mens.
  • Sorteren en prioriteren. Urgentie, sentiment en risico: op een schaal, met drempels in code.
  • Moderatie en controles. Overtreedt een bericht de regels, onderbouwt een bron het citaat of staat het antwoord op de vraag in een document — controleer dit voordat de tekst verdergaat.
  • Scoring en rangschikking. Beoordeel documenten, kandidaten of gevonden fragmenten volgens je eigen rubric en beslis in code wat verdergaat.
  • In plaats van een kwetsbare instructie “geef JSON terug”. Een aanroep die door zijn opzet getypeerde waarden teruggeeft, in plaats van tekst die je nog moet parsen.

Wanneer het niet geschikt is

  • Chat, antwoorden aan gebruikers en tekst- of codegeneratie. Jev schrijft geen tekst — daarvoor zijn er tekstmodellen.
  • Als model voor Claude Code, Cursor en andere agents. Je kunt jev-latest niet als vervanger voor het agentmodel gebruiken: een agent heeft een model nodig dat tekst schrijft en tools aanroept. Je kunt Jev aanroepen vanuit de code die de agent voor je schrijft.
  • Rekenen, tellen en datums vergelijken. Volgens TypeSafe is het betrouwbaarder om dit in code te doen en alleen het inhoudelijke deel aan het model te vragen — bijvoorbeeld de onderdelen van een datum ophalen via choice.
  • Afbeeldingen, audio en video. Het model accepteert alleen tekst — zet zulke gegevens vooraf om naar tekst.

Prijs

Alleen invoertokens worden in rekening gebracht — veld usage.input_tokens van het antwoord: $0.084 per 1 miljoen. Outputtokens zijn gratis.

Het voorbeeldverzoek op deze pagina (296 invoertokens) kost minder dan $0.0001.

Vóór het verzoek reserveert Ailoot een bedrag op het saldo en na het antwoord wordt één keer het daadwerkelijke verbruik afgeschreven — zo werkt het.

Limieten

WatLimiet
Het volledige verzoek: state en alle vragen64K tokens
state met de langste vraag32K tokens
Opties in één choicemaximaal 255
Niveaus in één scorevan 2 tot 10
Invoeralleen tekst: een string, JSON-object of array van teksten

De modellimieten zijn volgens TypeSafe. De beperkingen van je sleutel en saldo gelden zoals voor elk Ailoot-model: Fouten en limieten.

Fouten

Fouten komen in het algemene Ailoot API-formaat: een code, duidelijke tekst en de Request ID. Bij deze methode komen vooral de volgende fouten voor:

CodeWanneerWat je moet doen
400 invalid_requestDe body is niet door de validatie gekomen: state, model of questions ontbreekt, onbekend type, meer dan 255 opties bij choice of meer dan 10 niveaus bij scorePas het verzoek aan op basis van de foutmelding: zonder wijziging zal het opnieuw mislukken
400 context_length_exceededstate en vragen zijn samen langer dan de modellimietFilter state in code en behoud wat de vragen nodig hebben
401 invalid_api_keyDe sleutel ontbreekt of is ongeldigGeef de sleutel mee in de Authorization-header
402 insufficient_balanceOnvoldoende vrij saldo voor de reserveringWaardeer je saldo op
404 model_not_found, unsupported_endpointEen fout in de ID of het model is via de verkeerde methode aangeroepen, bijvoorbeeld /v1/chat/completionsRoep jev-latest alleen aan via POST /v1/systemone
429 rate_limit_exceededTe veel verzoekenWacht het aantal seconden in de Retry-After-header en probeer opnieuw
503 model_overloaded, model_unavailableHet model is tijdelijk overbelast of niet beschikbaarAls X-Should-Retry: true — probeer opnieuw na het aantal seconden in Retry-After; bij false — controleer eerst de Request ID in de geschiedenis
504 model_timeoutHet model heeft niet op tijd geantwoordVerstuur het verzoek niet opnieuw voordat je de Request ID in de geschiedenis hebt gecontroleerd

De volledige lijst met codes staat op de pagina Fouten en limieten.

Nog vragen? Stuur de Request ID en een beschrijving — we helpen je verder.Contact opnemen met support