{
  "aboutHtml": "<p>Jev är TypeSafes flaggskeppsmodell och den första modellen i den nya klassen <strong>System One</strong>. Den skriver inte text utan fattar snabbt beslut som ett program kan använda direkt. Du skickar ett <strong>tillstånd</strong> (<code>state</code>), text eller JSON, och en uppsättning <strong>frågor</strong>, och får typade värden med kalibrerade sannolikheter tillbaka.</p><p>Språkmodeller skriver ord för människor. Enligt TypeSafe ligger Jev närmare kod: svaret är direkt i kodens önskade form, med hög hastighet och inga värden utanför de angivna alternativen. Modellen är utformad för stabila svar vid upprepade anrop.</p><h4>Så skiljer sig System One från en språkmodell</h4><ul><li><strong>Genererar inte.</strong> Jev skriver inte användarsvar, kod eller förklaringar av resonemang. Du anger de möjliga svaren genom en av tre frågetyper.</li><li><strong>Tränad för kalibrerade beslut.</strong> TypeSafe tränar modellen med RLCD (Reinforcement Learning for Calibrated Decisions): sannolikheterna anpassas till verkliga utfall och speglar osäkerhet. Bland många svar med sannolikhet 0,8 bör ungefär 80% vara korrekta. Kalibrering är en egenskap för stora urval, inte en garanti för att ett enskilt svar är rätt.</li><li><strong>Annat träningsmål.</strong> Chattmodeller tränas att tilltala människor (RLHF). Enligt TypeSafes observationer uppmuntrar det inställsamhet och självsäkert uttryckta fel. En av RLHF:s medförfattare, Diogo Almeida, är medgrundare av TypeSafe.</li></ul><p>Namnet syftar på ”System 1” i Daniel Kahnemans bok ”Tänka, snabbt och långsamt”: snabbt intuitivt omdöme jämfört med det långsamma, genomtänkta tänkandet i ”System 2”. Jev är skapad för snabba, avgränsade bedömningar.</p><h4>Tre frågetyper</h4><p>En fråga är en bedömning av tillståndet. Svaret är ett värde som koden jämför med en tröskel, sorterar eller skickar vidare.</p><ol><li><strong>Choice – val av alternativ.</strong> Avdelning för ett ärende, produktkategori eller språk i ett kodavsnitt. Alternativen är en ordlista ”alternativ → beskrivning”, med upp till 255 alternativ. Svaret innehåller vald <code>choice</code>, <code>probabilities</code> för alla alternativ (med summan 1) och säkerhet <code>confidence</code>. Om listan kanske inte täcker alla fall kan ”annat” eller ”inget av ovanstående” läggas till.</li><li><strong>Score – skalbedömning.</strong> Placering på en ordnad skala som du beskriver: felets allvar, kundens irritation eller färdighetsnivå. Från 2 till 10 nivåer, från lägsta till högsta. Modellen bedömer varje nivå separat utan att se dess nummer eller grannar. Svaret innehåller <code>score</code> (summan av nivånumren multiplicerade med deras sannolikheter, så värdet kan hamna mellan nivåer), <code>legend</code> med nivåbeskrivningar, <code>probabilities</code> och <code>confidence</code>.</li><li><strong>Noul – ja eller nej.</strong> Om påståendet är sant. Svaret <code>noul</code> är sannolikheten för ”ja” från 0 till 1: nära 1 ett säkert ”ja”, nära 0 ett säkert ”nej”, nära 0,5 tvekar modellen. Separat <code>confidence</code> finns inte. Ett tal beskriver hela svaret. Valfri <code>criteria</code> preciserar vad som ska räknas som ”ja” respektive ”nej”.</li></ol><p>Så väljer du: kända oordnade alternativ använder choice, steg i ett spektrum score och rent ”ja/nej” där själva sannolikheten är viktig noul. Noul 0,5 innebär lika chanser för ”ja” och ”nej”, inte en ”medelnivå”. Graden mäts med score. Om två typer passar, välj den som koden direkt kan agera på: choice för grenar, score för trösklar och noul för <code>if</code>.</p><p>Typer kan blandas i samma anrop. Svaret begränsas alltid av dina alternativ och beror inte på andra frågor. Frågor kan läggas till och tas bort utan att övriga svar ändras.</p><h4>Tillstånd</h4><p>Tillståndet är det som modellen bedömer: kundens meddelande, ett dokumentutdrag, en databaspost eller applikationens tillstånd.</p><ul><li><strong>Sträng</strong> när det finns en text: ett meddelande, en artikel eller ett utdrag.</li><li><strong>Objekt</strong> för namngivna fält, relaterade poster eller applikationstillstånd. TypeSafe rekommenderar objekt för de flesta anrop: varje del får ett tydligt namn.</li><li><strong>Array</strong> för en följd av meddelanden eller poster.</li></ul><p>Förbered det som material för experter: lägg korrespondens, beställning och returregler tillsammans om beslutet kräver jämförelse. Behåll innehållet i tillståndet och bedömningarna i frågorna. Om en fråga gäller en del av tillståndet, ange sökvägen till den inom backtick-tecken, till exempel <code>ticket.messages[0].text</code>.</p><h4>Så formuleras frågor</h4><ul><li><strong>En snabb bedömning per fråga.</strong> En bra fråga kan en kunnig person med rätt kontext besvara på en sekund: ”Finns brådska i meddelandet?” ”Analysera meddelandet och avgör vad som ska göras” kräver redan långsamt resonemang och behöver delas i enkla frågor.</li><li><strong>Hela frågan i <code>instructions</code>.</strong> Frågans nyckel, till exempel <code>refund_requested</code>, behövs bara för din kod och skickas inte till modellen.</li><li><strong>Alla frågor om samma tillstånd i ett anrop.</strong> Modellen bedömer dem parallellt. Enligt TypeSafe ökar extra frågor knappt svarstiden och kostar bara sina egna token. En fråga ”för säkerhets skull” kostar nästan inget. Koden avgör själv vilka svar som behövs.</li><li><strong>Dela upp komplexa bedömningar.</strong> I stället för ”bedöm startupansökan”, fråga separat om marknadsstorlek, teknisk genomförbarhet och skillnader mot konkurrenterna. Beräkna resultatet i kod med vikter. Ändrade prioriteringar innebär ändrade vikter, inte en omskriven fråga.</li><li><strong>Beroende frågor i ett andra anrop.</strong> Svaren i samma anrop utgör inte kontext för varandra. Ett andra anrop behövs bara om det inte går att bygga utan det första svaret, till exempel om data måste hämtas eller nästa frågas alternativ väljas.</li><li><strong>Lång fråga som objekt.</strong> <code>instructions</code> och <code>criteria</code> är vanligtvis strängar men kan vara objekt eller arrayer: frågan i ett fält och data i andra. Det är praktiskt för att jämföra ett CV med databasposter i samma fråga.</li></ul><h4>Säkerhet</h4><p>För choice och score visar <code>confidence</code> från 0 till 1 hur koncentrerad sannolikheten är till ett svar: 1 innebär allt på ett alternativ och 0 lika mycket på alla. För score minskar en intilliggande nivå säkerheten mindre än en avlägsen. För noul är säkerheten själva värdet. Ju längre från 0,5, desto säkrare svar.</p><p>TypeSafe rekommenderar tre intervall:</p><ol><li><strong>Hög säkerhet</strong> – agera automatiskt.</li><li><strong>Medelhög</strong> – agera försiktigt, till exempel be användaren bekräfta.</li><li><strong>Låg</strong> – lämna fallet till en människa, precisera förfrågan eller använd en reservväg, till exempel en kraftfullare modell med resonemang.</li></ol><p>Ju dyrare felet är, desto striktare tröskel: högre för oåterkalleliga åtgärder än för läsning. Svaret anger vad som ska väljas och säkerheten om det är lämpligt att agera. Anpassa trösklarna till egna data genom att jämföra säkerhet och precision.</p><h4>Så byggs ett system kring Jev</h4><p>Jev är inte utformad för agenter som själva väljer nästa steg och kan tappa riktningen i varje cykel, utan för program där koden styr flödet och modellen svarar på avgränsade betydelsefrågor. TypeSafes åtta designsteg:</p><ol><li>Gör allt som kan göras i kod med kod, tillförlitligt och billigt.</li><li>Lägg bara det som de aktuella frågorna behöver i tillståndet. Hämta aktuella fakta från din egen kunskapsbas, inte modellens minne.</li><li>Struktur i tillståndet: nästlad JSON och sökvägen till rätt fält inom backtick-tecken i frågan om det minskar mångtydighet.</li><li>De mest avgränsade och specifika frågorna är enligt TypeSafe kanske huvudregeln: en bred fråga gömmer flera bedömningar bakom ett svar.</li><li>Struktur i frågorna: själva frågan är kort. Förklaringar, exempel och värden från din databas finns i närliggande fält i objektet <code>instructions</code> eller <code>criteria</code>, inte i en lång sträng.</li><li>Många oberoende frågor om samma tillstånd i ett anrop ger mer nytta per dollar.</li><li>Koden kombinerar svaren med regler, viktad summa eller som egenskaper för en klassisk maskininlärningsmodell.</li><li>Förgrening efter säkerhet: osäkra fall lämnas till en människa eller en modell med resonemang.</li></ol><p>Jev är varken chatt eller kodkompletteringsmodell och kan inte ersätta en språkmodell i en programmeringsagent. Däremot kan en agent skriva kod åt dig som anropar Jev där ett snabbt kalibrerat svar behövs.</p><h4>Användningsområden</h4><ul><li><strong>Bakgrundsautomatisering</strong> – beslut som körs en miljon gånger utan en människa i närheten.</li><li><strong>Realtid</strong> – enligt TypeSafe utförs de flesta anrop på ungefär 100 ms, vilket räcker för löpande bearbetning och gränssnitt.</li><li><strong>Stora datamängder</strong> – sökning i enorma korpusar, märkning av agentloggar och egenskaper för prognoser.</li><li><strong>Granskning av andra modeller</strong> – förfrågningar, extraheringar, resonemang och verktygsanrop: kringgående av begränsningar, citeringsfel och påhitt.</li><li><strong>Sökning och rangordning</strong> – relevans för paret ”fråga – kandidat”, omrangordning och kontexturval.</li><li><strong>Förgrening efter avsikt</strong> – vad användaren vill och vilken hanterare som behövs: enkel logik, specialiserad modell eller människa. Ämne, svårighet och risk avgör vilken språkmodell som får förfrågan.</li><li><strong>Skyddskontroller</strong> – språkmodellens indata, utdata och verktygsanrop: injicerade instruktioner, regelöverträdelser och personuppgiftsläckor.</li><li><strong>Support</strong> – ärendets ämne och avsikt, brådska, irritation, avhoppsrisk, återbetalningsbegäran och kö.</li><li><strong>Moderering</strong> – enligt plattformens regler: toxicitet, trakasserier, skräppost, bedrägeri, farliga råd och personuppgifter. Allvar och säkerhet avgör om material släpps igenom, får en varning, granskas eller blockeras.</li><li><strong>Branscher</strong> – försäkringsfall, finansiella utredningar och KYC, avtal och reklam, produktkort, rekrytering, leads, spel, risker, efterfrågeprognoser, kunskapsgrafer, vetenskapliga översikter och semantiska kodkontroller i CI.</li></ul><h4>Egenskaper</h4><ul><li><strong><code>jev-latest</code></strong> är alias för den senaste stabila versionen, för närvarande Jev 1.13. Versionen som svarade finns i fältet <code>model</code>, till exempel <code>jev-1.13.0</code>. Med en ny version pekar aliaset på den och svaren kan ändras utan dina ändringar. Följ fältet om trösklarna är anpassade till en viss version.</li><li><strong>Kontext</strong> är 64K token per anrop för tillstånd och alla frågor tillsammans. Tillstånd med den längsta frågan får vara upp till 32K. Modellen läser tillståndet en gång och prövar alla frågor mot det parallellt.</li><li><strong>Indata</strong> är bara text: sträng, JSON-objekt eller textarray. Bilder, ljud och video stöds ännu inte. Omvandla dem till text i förväg.</li><li><strong>Språk</strong> – huvudspråket i träningen är engelska och precisionen är för närvarande högst på det. Andra språk, bland annat kinesiska, japanska och koreanska, tas emot av modellen men med lägre precision. Pröva på egna data.</li><li><strong>Priser och debitering i Ailoot API</strong> — villkoren beror på den valda metoden och anges på metodens kort.</li><li><strong>Anpassning</strong> – Jev finjusteras inte på kunddata. Egna material läggs i <code>state</code> och ämnesområdets regler i <code>instructions</code> och <code>criteria</code>.</li><li><strong>Data</strong> – TypeSafe uppger att Jev inte tränas på kunders anrop och svar.</li></ul><h4>Kända svagheter i Jev 1.13</h4><p>TypeSafe räknar öppet upp den aktuella versionens svagheter och lovar att åtgärda mycket i kommande versioner. Modellen är snabb, kalibrerad och bedömer väl med sunt förnuft, men:</p><ol><li><strong>Läser bokstavligt.</strong> Svarar på den skrivna frågan, inte den underförstådda. Förbehåll, negationer och dolda villkor förstås ordagrant. Skriv exakta villkor och gränsfall i <code>criteria</code>. Dela ofrånkomlig tolkning i två bokstavliga frågor.</li><li><strong>Ingen räknare.</strong> Räkning av tecken, upprepningar och listelement är opålitlig och felen växer med storleken. Räkna i kod med en fråga per kandidat. Modellen förstår färger i hex eller RGB sämre än färgnamn. <code>score</code> passar för en tröskel men inte för ett exakt tal mellan nivåer.</li><li><strong>Datum och tid.</strong> Vilket datum som är tidigare, avståndet mellan dem och om ett datum ligger inom en period är opålitligt, särskilt med blandade format och relativa datum. Extrahera datumdelar med choice och alternativet ”ej angivet” och jämför i kod.</li><li><strong>Indirekthet.</strong> Dubbla negationer och frågor om egenskaper hos egenskaper sänker precisionen. Skriv direkt och namnge tillståndets delar.</li><li><strong>Överflöd i tillståndet.</strong> Ovidkommande text sänker precisionen. Filtrera i kod, eller avskilj irrelevanta delar med noul-frågor om filtrering inte är möjlig.</li><li><strong>Fientlig text.</strong> Modellen förväntar sig inte som standard knep i tillståndet. En injicerad instruktion eller text som argumenterar om sin egen klassificering kan påverka svaret. Skriv exakta kriterier och kontrollera gränsfall före start.</li><li><strong>Motsägelser.</strong> Om <code>instructions</code> och <code>criteria</code> begär olika saker, till exempel om ”ja” för noul beskrivs som ”nej”, sjunker precisionen. Kriterierna är en fortsättning på frågan.</li><li><strong>Alternativordning.</strong> Ibland föredrar modellen det första choice-alternativet. Ändra ordningen och kontrollera att svaret inte ändras.</li><li><strong>Generering.</strong> Jev har inte tränats att skriva text. För dataextrahering kan kandidater hittas med reguljära uttryck eller en generativ modell. Låt sedan Jev välja den rätta med choice.</li></ol>",
  "aboutText": "Jev är TypeSafes flaggskeppsmodell och den första modellen i den nya klassen **System One**. Den skriver inte text utan fattar snabbt beslut som ett program kan använda direkt. Du skickar ett **tillstånd** (`state`), text eller JSON, och en uppsättning **frågor**, och får typade värden med kalibrerade sannolikheter tillbaka.\n\nSpråkmodeller skriver ord för människor. Enligt TypeSafe ligger Jev närmare kod: svaret är direkt i kodens önskade form, med hög hastighet och inga värden utanför de angivna alternativen. Modellen är utformad för stabila svar vid upprepade anrop.\n\n### Så skiljer sig System One från en språkmodell\n\n- **Genererar inte.** Jev skriver inte användarsvar, kod eller förklaringar av resonemang. Du anger de möjliga svaren genom en av tre frågetyper.\n- **Tränad för kalibrerade beslut.** TypeSafe tränar modellen med RLCD (Reinforcement Learning for Calibrated Decisions): sannolikheterna anpassas till verkliga utfall och speglar osäkerhet. Bland många svar med sannolikhet 0,8 bör ungefär 80% vara korrekta. Kalibrering är en egenskap för stora urval, inte en garanti för att ett enskilt svar är rätt.\n- **Annat träningsmål.** Chattmodeller tränas att tilltala människor (RLHF). Enligt TypeSafes observationer uppmuntrar det inställsamhet och självsäkert uttryckta fel. En av RLHF:s medförfattare, Diogo Almeida, är medgrundare av TypeSafe.\n\nNamnet syftar på ”System 1” i Daniel Kahnemans bok ”Tänka, snabbt och långsamt”: snabbt intuitivt omdöme jämfört med det långsamma, genomtänkta tänkandet i ”System 2”. Jev är skapad för snabba, avgränsade bedömningar.\n\n### Tre frågetyper\n\nEn fråga är en bedömning av tillståndet. Svaret är ett värde som koden jämför med en tröskel, sorterar eller skickar vidare.\n\n1. **Choice – val av alternativ.** Avdelning för ett ärende, produktkategori eller språk i ett kodavsnitt. Alternativen är en ordlista ”alternativ → beskrivning”, med upp till 255 alternativ. Svaret innehåller vald `choice`, `probabilities` för alla alternativ (med summan 1) och säkerhet `confidence`. Om listan kanske inte täcker alla fall kan ”annat” eller ”inget av ovanstående” läggas till.\n2. **Score – skalbedömning.** Placering på en ordnad skala som du beskriver: felets allvar, kundens irritation eller färdighetsnivå. Från 2 till 10 nivåer, från lägsta till högsta. Modellen bedömer varje nivå separat utan att se dess nummer eller grannar. Svaret innehåller `score` (summan av nivånumren multiplicerade med deras sannolikheter, så värdet kan hamna mellan nivåer), `legend` med nivåbeskrivningar, `probabilities` och `confidence`.\n3. **Noul – ja eller nej.** Om påståendet är sant. Svaret `noul` är sannolikheten för ”ja” från 0 till 1: nära 1 ett säkert ”ja”, nära 0 ett säkert ”nej”, nära 0,5 tvekar modellen. Separat `confidence` finns inte. Ett tal beskriver hela svaret. Valfri `criteria` preciserar vad som ska räknas som ”ja” respektive ”nej”.\n\nSå väljer du: kända oordnade alternativ använder choice, steg i ett spektrum score och rent ”ja/nej” där själva sannolikheten är viktig noul. Noul 0,5 innebär lika chanser för ”ja” och ”nej”, inte en ”medelnivå”. Graden mäts med score. Om två typer passar, välj den som koden direkt kan agera på: choice för grenar, score för trösklar och noul för `if`.\n\nTyper kan blandas i samma anrop. Svaret begränsas alltid av dina alternativ och beror inte på andra frågor. Frågor kan läggas till och tas bort utan att övriga svar ändras.\n\n### Tillstånd\n\nTillståndet är det som modellen bedömer: kundens meddelande, ett dokumentutdrag, en databaspost eller applikationens tillstånd.\n\n- **Sträng** när det finns en text: ett meddelande, en artikel eller ett utdrag.\n- **Objekt** för namngivna fält, relaterade poster eller applikationstillstånd. TypeSafe rekommenderar objekt för de flesta anrop: varje del får ett tydligt namn.\n- **Array** för en följd av meddelanden eller poster.\n\nFörbered det som material för experter: lägg korrespondens, beställning och returregler tillsammans om beslutet kräver jämförelse. Behåll innehållet i tillståndet och bedömningarna i frågorna. Om en fråga gäller en del av tillståndet, ange sökvägen till den inom backtick-tecken, till exempel `ticket.messages[0].text`.\n\n### Så formuleras frågor\n\n- **En snabb bedömning per fråga.** En bra fråga kan en kunnig person med rätt kontext besvara på en sekund: ”Finns brådska i meddelandet?” ”Analysera meddelandet och avgör vad som ska göras” kräver redan långsamt resonemang och behöver delas i enkla frågor.\n- **Hela frågan i `instructions`.** Frågans nyckel, till exempel `refund_requested`, behövs bara för din kod och skickas inte till modellen.\n- **Alla frågor om samma tillstånd i ett anrop.** Modellen bedömer dem parallellt. Enligt TypeSafe ökar extra frågor knappt svarstiden och kostar bara sina egna token. En fråga ”för säkerhets skull” kostar nästan inget. Koden avgör själv vilka svar som behövs.\n- **Dela upp komplexa bedömningar.** I stället för ”bedöm startupansökan”, fråga separat om marknadsstorlek, teknisk genomförbarhet och skillnader mot konkurrenterna. Beräkna resultatet i kod med vikter. Ändrade prioriteringar innebär ändrade vikter, inte en omskriven fråga.\n- **Beroende frågor i ett andra anrop.** Svaren i samma anrop utgör inte kontext för varandra. Ett andra anrop behövs bara om det inte går att bygga utan det första svaret, till exempel om data måste hämtas eller nästa frågas alternativ väljas.\n- **Lång fråga som objekt.** `instructions` och `criteria` är vanligtvis strängar men kan vara objekt eller arrayer: frågan i ett fält och data i andra. Det är praktiskt för att jämföra ett CV med databasposter i samma fråga.\n\n### Säkerhet\n\nFör choice och score visar `confidence` från 0 till 1 hur koncentrerad sannolikheten är till ett svar: 1 innebär allt på ett alternativ och 0 lika mycket på alla. För score minskar en intilliggande nivå säkerheten mindre än en avlägsen. För noul är säkerheten själva värdet. Ju längre från 0,5, desto säkrare svar.\n\nTypeSafe rekommenderar tre intervall:\n\n1. **Hög säkerhet** – agera automatiskt.\n2. **Medelhög** – agera försiktigt, till exempel be användaren bekräfta.\n3. **Låg** – lämna fallet till en människa, precisera förfrågan eller använd en reservväg, till exempel en kraftfullare modell med resonemang.\n\nJu dyrare felet är, desto striktare tröskel: högre för oåterkalleliga åtgärder än för läsning. Svaret anger vad som ska väljas och säkerheten om det är lämpligt att agera. Anpassa trösklarna till egna data genom att jämföra säkerhet och precision.\n\n### Så byggs ett system kring Jev\n\nJev är inte utformad för agenter som själva väljer nästa steg och kan tappa riktningen i varje cykel, utan för program där koden styr flödet och modellen svarar på avgränsade betydelsefrågor. TypeSafes åtta designsteg:\n\n1. Gör allt som kan göras i kod med kod, tillförlitligt och billigt.\n2. Lägg bara det som de aktuella frågorna behöver i tillståndet. Hämta aktuella fakta från din egen kunskapsbas, inte modellens minne.\n3. Struktur i tillståndet: nästlad JSON och sökvägen till rätt fält inom backtick-tecken i frågan om det minskar mångtydighet.\n4. De mest avgränsade och specifika frågorna är enligt TypeSafe kanske huvudregeln: en bred fråga gömmer flera bedömningar bakom ett svar.\n5. Struktur i frågorna: själva frågan är kort. Förklaringar, exempel och värden från din databas finns i närliggande fält i objektet `instructions` eller `criteria`, inte i en lång sträng.\n6. Många oberoende frågor om samma tillstånd i ett anrop ger mer nytta per dollar.\n7. Koden kombinerar svaren med regler, viktad summa eller som egenskaper för en klassisk maskininlärningsmodell.\n8. Förgrening efter säkerhet: osäkra fall lämnas till en människa eller en modell med resonemang.\n\nJev är varken chatt eller kodkompletteringsmodell och kan inte ersätta en språkmodell i en programmeringsagent. Däremot kan en agent skriva kod åt dig som anropar Jev där ett snabbt kalibrerat svar behövs.\n\n### Användningsområden\n\n- **Bakgrundsautomatisering** – beslut som körs en miljon gånger utan en människa i närheten.\n- **Realtid** – enligt TypeSafe utförs de flesta anrop på ungefär 100 ms, vilket räcker för löpande bearbetning och gränssnitt.\n- **Stora datamängder** – sökning i enorma korpusar, märkning av agentloggar och egenskaper för prognoser.\n- **Granskning av andra modeller** – förfrågningar, extraheringar, resonemang och verktygsanrop: kringgående av begränsningar, citeringsfel och påhitt.\n- **Sökning och rangordning** – relevans för paret ”fråga – kandidat”, omrangordning och kontexturval.\n- **Förgrening efter avsikt** – vad användaren vill och vilken hanterare som behövs: enkel logik, specialiserad modell eller människa. Ämne, svårighet och risk avgör vilken språkmodell som får förfrågan.\n- **Skyddskontroller** – språkmodellens indata, utdata och verktygsanrop: injicerade instruktioner, regelöverträdelser och personuppgiftsläckor.\n- **Support** – ärendets ämne och avsikt, brådska, irritation, avhoppsrisk, återbetalningsbegäran och kö.\n- **Moderering** – enligt plattformens regler: toxicitet, trakasserier, skräppost, bedrägeri, farliga råd och personuppgifter. Allvar och säkerhet avgör om material släpps igenom, får en varning, granskas eller blockeras.\n- **Branscher** – försäkringsfall, finansiella utredningar och KYC, avtal och reklam, produktkort, rekrytering, leads, spel, risker, efterfrågeprognoser, kunskapsgrafer, vetenskapliga översikter och semantiska kodkontroller i CI.\n\n### Egenskaper\n\n- **`jev-latest`** är alias för den senaste stabila versionen, för närvarande Jev 1.13. Versionen som svarade finns i fältet `model`, till exempel `jev-1.13.0`. Med en ny version pekar aliaset på den och svaren kan ändras utan dina ändringar. Följ fältet om trösklarna är anpassade till en viss version.\n- **Kontext** är 64K token per anrop för tillstånd och alla frågor tillsammans. Tillstånd med den längsta frågan får vara upp till 32K. Modellen läser tillståndet en gång och prövar alla frågor mot det parallellt.\n- **Indata** är bara text: sträng, JSON-objekt eller textarray. Bilder, ljud och video stöds ännu inte. Omvandla dem till text i förväg.\n- **Språk** – huvudspråket i träningen är engelska och precisionen är för närvarande högst på det. Andra språk, bland annat kinesiska, japanska och koreanska, tas emot av modellen men med lägre precision. Pröva på egna data.\n- **Priser och debitering i Ailoot API** — villkoren beror på den valda metoden och anges på metodens kort.\n- **Anpassning** – Jev finjusteras inte på kunddata. Egna material läggs i `state` och ämnesområdets regler i `instructions` och `criteria`.\n- **Data** – TypeSafe uppger att Jev inte tränas på kunders anrop och svar.\n\n### Kända svagheter i Jev 1.13\n\nTypeSafe räknar öppet upp den aktuella versionens svagheter och lovar att åtgärda mycket i kommande versioner. Modellen är snabb, kalibrerad och bedömer väl med sunt förnuft, men:\n\n1. **Läser bokstavligt.** Svarar på den skrivna frågan, inte den underförstådda. Förbehåll, negationer och dolda villkor förstås ordagrant. Skriv exakta villkor och gränsfall i `criteria`. Dela ofrånkomlig tolkning i två bokstavliga frågor.\n2. **Ingen räknare.** Räkning av tecken, upprepningar och listelement är opålitlig och felen växer med storleken. Räkna i kod med en fråga per kandidat. Modellen förstår färger i hex eller RGB sämre än färgnamn. `score` passar för en tröskel men inte för ett exakt tal mellan nivåer.\n3. **Datum och tid.** Vilket datum som är tidigare, avståndet mellan dem och om ett datum ligger inom en period är opålitligt, särskilt med blandade format och relativa datum. Extrahera datumdelar med choice och alternativet ”ej angivet” och jämför i kod.\n4. **Indirekthet.** Dubbla negationer och frågor om egenskaper hos egenskaper sänker precisionen. Skriv direkt och namnge tillståndets delar.\n5. **Överflöd i tillståndet.** Ovidkommande text sänker precisionen. Filtrera i kod, eller avskilj irrelevanta delar med noul-frågor om filtrering inte är möjlig.\n6. **Fientlig text.** Modellen förväntar sig inte som standard knep i tillståndet. En injicerad instruktion eller text som argumenterar om sin egen klassificering kan påverka svaret. Skriv exakta kriterier och kontrollera gränsfall före start.\n7. **Motsägelser.** Om `instructions` och `criteria` begär olika saker, till exempel om ”ja” för noul beskrivs som ”nej”, sjunker precisionen. Kriterierna är en fortsättning på frågan.\n8. **Alternativordning.** Ibland föredrar modellen det första choice-alternativet. Ändra ordningen och kontrollera att svaret inte ändras.\n9. **Generering.** Jev har inte tränats att skriva text. För dataextrahering kan kandidater hittas med reguljära uttryck eller en generativ modell. Låt sedan Jev välja den rätta med choice.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "f3ddcdd83ed277ae9f297c4efbd3e085f4ca00a0ebd7e3ff3e8121e2b3c67ed3",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "sv",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">TS</span><h2 id=\"sheet-title\">jev-latest</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Stäng\">×</button></div><div class=\"idline\"><span>TypeSafe /</span><code>jev-latest</code><button type=\"button\" id=\"copy-id\">Kopiera ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Modellkortets avsnitt\"><button type=\"button\" data-card-jump=\"overview\">Start</button><button type=\"button\" data-card-jump=\"methods\">Indata &amp; metoder</button><button type=\"button\" data-card-jump=\"pricing\">Priser</button><button type=\"button\" data-card-jump=\"examples\">Exempel</button><button type=\"button\" data-card-jump=\"results\">Resultat</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-metoder\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Core|systemone|/v1/systemone|jev-latest\">System One</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Start</h3><p class=\"mdesc-full\">Beslutsmodell från TypeSafe: skriver inte text utan svarar på typade frågor om text eller JSON, med val av alternativ, skalbedömning eller ”ja/nej” med sannolikheter. Passar för routning, sortering av ärenden, moderering och poängsättning. Alla frågor i ett anrop bedöms parallellt.</p><dl class=\"card-io\" data-card-io><div><dt>Godkända indata</dt><dd>Text</dd></div><div><dt>Resultat</dt><dd>structured</dd></div></dl><details class=\"card-about\"><summary>Om modellen</summary><p class=\"note-s\" data-model-method-boundary>Den här beskrivningen omfattar modellens förmågor. Tillgängliga indata, utdata och alternativ i Ailoot anges nedan för den valda metoden.</p><div class=\"mabout\" id=\"m-about\"><p>Jev är TypeSafes flaggskeppsmodell och den första modellen i den nya klassen <strong>System One</strong>. Den skriver inte text utan fattar snabbt beslut som ett program kan använda direkt. Du skickar ett <strong>tillstånd</strong> (<code>state</code>), text eller JSON, och en uppsättning <strong>frågor</strong>, och får typade värden med kalibrerade sannolikheter tillbaka.</p><p>Språkmodeller skriver ord för människor. Enligt TypeSafe ligger Jev närmare kod: svaret är direkt i kodens önskade form, med hög hastighet och inga värden utanför de angivna alternativen. Modellen är utformad för stabila svar vid upprepade anrop.</p><h4>Så skiljer sig System One från en språkmodell</h4><ul><li><strong>Genererar inte.</strong> Jev skriver inte användarsvar, kod eller förklaringar av resonemang. Du anger de möjliga svaren genom en av tre frågetyper.</li><li><strong>Tränad för kalibrerade beslut.</strong> TypeSafe tränar modellen med RLCD (Reinforcement Learning for Calibrated Decisions): sannolikheterna anpassas till verkliga utfall och speglar osäkerhet. Bland många svar med sannolikhet 0,8 bör ungefär 80% vara korrekta. Kalibrering är en egenskap för stora urval, inte en garanti för att ett enskilt svar är rätt.</li><li><strong>Annat träningsmål.</strong> Chattmodeller tränas att tilltala människor (RLHF). Enligt TypeSafes observationer uppmuntrar det inställsamhet och självsäkert uttryckta fel. En av RLHF:s medförfattare, Diogo Almeida, är medgrundare av TypeSafe.</li></ul><p>Namnet syftar på ”System 1” i Daniel Kahnemans bok ”Tänka, snabbt och långsamt”: snabbt intuitivt omdöme jämfört med det långsamma, genomtänkta tänkandet i ”System 2”. Jev är skapad för snabba, avgränsade bedömningar.</p><h4>Tre frågetyper</h4><p>En fråga är en bedömning av tillståndet. Svaret är ett värde som koden jämför med en tröskel, sorterar eller skickar vidare.</p><ol><li><strong>Choice – val av alternativ.</strong> Avdelning för ett ärende, produktkategori eller språk i ett kodavsnitt. Alternativen är en ordlista ”alternativ → beskrivning”, med upp till 255 alternativ. Svaret innehåller vald <code>choice</code>, <code>probabilities</code> för alla alternativ (med summan 1) och säkerhet <code>confidence</code>. Om listan kanske inte täcker alla fall kan ”annat” eller ”inget av ovanstående” läggas till.</li><li><strong>Score – skalbedömning.</strong> Placering på en ordnad skala som du beskriver: felets allvar, kundens irritation eller färdighetsnivå. Från 2 till 10 nivåer, från lägsta till högsta. Modellen bedömer varje nivå separat utan att se dess nummer eller grannar. Svaret innehåller <code>score</code> (summan av nivånumren multiplicerade med deras sannolikheter, så värdet kan hamna mellan nivåer), <code>legend</code> med nivåbeskrivningar, <code>probabilities</code> och <code>confidence</code>.</li><li><strong>Noul – ja eller nej.</strong> Om påståendet är sant. Svaret <code>noul</code> är sannolikheten för ”ja” från 0 till 1: nära 1 ett säkert ”ja”, nära 0 ett säkert ”nej”, nära 0,5 tvekar modellen. Separat <code>confidence</code> finns inte. Ett tal beskriver hela svaret. Valfri <code>criteria</code> preciserar vad som ska räknas som ”ja” respektive ”nej”.</li></ol><p>Så väljer du: kända oordnade alternativ använder choice, steg i ett spektrum score och rent ”ja/nej” där själva sannolikheten är viktig noul. Noul 0,5 innebär lika chanser för ”ja” och ”nej”, inte en ”medelnivå”. Graden mäts med score. Om två typer passar, välj den som koden direkt kan agera på: choice för grenar, score för trösklar och noul för <code>if</code>.</p><p>Typer kan blandas i samma anrop. Svaret begränsas alltid av dina alternativ och beror inte på andra frågor. Frågor kan läggas till och tas bort utan att övriga svar ändras.</p><h4>Tillstånd</h4><p>Tillståndet är det som modellen bedömer: kundens meddelande, ett dokumentutdrag, en databaspost eller applikationens tillstånd.</p><ul><li><strong>Sträng</strong> när det finns en text: ett meddelande, en artikel eller ett utdrag.</li><li><strong>Objekt</strong> för namngivna fält, relaterade poster eller applikationstillstånd. TypeSafe rekommenderar objekt för de flesta anrop: varje del får ett tydligt namn.</li><li><strong>Array</strong> för en följd av meddelanden eller poster.</li></ul><p>Förbered det som material för experter: lägg korrespondens, beställning och returregler tillsammans om beslutet kräver jämförelse. Behåll innehållet i tillståndet och bedömningarna i frågorna. Om en fråga gäller en del av tillståndet, ange sökvägen till den inom backtick-tecken, till exempel <code>ticket.messages[0].text</code>.</p><h4>Så formuleras frågor</h4><ul><li><strong>En snabb bedömning per fråga.</strong> En bra fråga kan en kunnig person med rätt kontext besvara på en sekund: ”Finns brådska i meddelandet?” ”Analysera meddelandet och avgör vad som ska göras” kräver redan långsamt resonemang och behöver delas i enkla frågor.</li><li><strong>Hela frågan i <code>instructions</code>.</strong> Frågans nyckel, till exempel <code>refund_requested</code>, behövs bara för din kod och skickas inte till modellen.</li><li><strong>Alla frågor om samma tillstånd i ett anrop.</strong> Modellen bedömer dem parallellt. Enligt TypeSafe ökar extra frågor knappt svarstiden och kostar bara sina egna token. En fråga ”för säkerhets skull” kostar nästan inget. Koden avgör själv vilka svar som behövs.</li><li><strong>Dela upp komplexa bedömningar.</strong> I stället för ”bedöm startupansökan”, fråga separat om marknadsstorlek, teknisk genomförbarhet och skillnader mot konkurrenterna. Beräkna resultatet i kod med vikter. Ändrade prioriteringar innebär ändrade vikter, inte en omskriven fråga.</li><li><strong>Beroende frågor i ett andra anrop.</strong> Svaren i samma anrop utgör inte kontext för varandra. Ett andra anrop behövs bara om det inte går att bygga utan det första svaret, till exempel om data måste hämtas eller nästa frågas alternativ väljas.</li><li><strong>Lång fråga som objekt.</strong> <code>instructions</code> och <code>criteria</code> är vanligtvis strängar men kan vara objekt eller arrayer: frågan i ett fält och data i andra. Det är praktiskt för att jämföra ett CV med databasposter i samma fråga.</li></ul><h4>Säkerhet</h4><p>För choice och score visar <code>confidence</code> från 0 till 1 hur koncentrerad sannolikheten är till ett svar: 1 innebär allt på ett alternativ och 0 lika mycket på alla. För score minskar en intilliggande nivå säkerheten mindre än en avlägsen. För noul är säkerheten själva värdet. Ju längre från 0,5, desto säkrare svar.</p><p>TypeSafe rekommenderar tre intervall:</p><ol><li><strong>Hög säkerhet</strong> – agera automatiskt.</li><li><strong>Medelhög</strong> – agera försiktigt, till exempel be användaren bekräfta.</li><li><strong>Låg</strong> – lämna fallet till en människa, precisera förfrågan eller använd en reservväg, till exempel en kraftfullare modell med resonemang.</li></ol><p>Ju dyrare felet är, desto striktare tröskel: högre för oåterkalleliga åtgärder än för läsning. Svaret anger vad som ska väljas och säkerheten om det är lämpligt att agera. Anpassa trösklarna till egna data genom att jämföra säkerhet och precision.</p><h4>Så byggs ett system kring Jev</h4><p>Jev är inte utformad för agenter som själva väljer nästa steg och kan tappa riktningen i varje cykel, utan för program där koden styr flödet och modellen svarar på avgränsade betydelsefrågor. TypeSafes åtta designsteg:</p><ol><li>Gör allt som kan göras i kod med kod, tillförlitligt och billigt.</li><li>Lägg bara det som de aktuella frågorna behöver i tillståndet. Hämta aktuella fakta från din egen kunskapsbas, inte modellens minne.</li><li>Struktur i tillståndet: nästlad JSON och sökvägen till rätt fält inom backtick-tecken i frågan om det minskar mångtydighet.</li><li>De mest avgränsade och specifika frågorna är enligt TypeSafe kanske huvudregeln: en bred fråga gömmer flera bedömningar bakom ett svar.</li><li>Struktur i frågorna: själva frågan är kort. Förklaringar, exempel och värden från din databas finns i närliggande fält i objektet <code>instructions</code> eller <code>criteria</code>, inte i en lång sträng.</li><li>Många oberoende frågor om samma tillstånd i ett anrop ger mer nytta per dollar.</li><li>Koden kombinerar svaren med regler, viktad summa eller som egenskaper för en klassisk maskininlärningsmodell.</li><li>Förgrening efter säkerhet: osäkra fall lämnas till en människa eller en modell med resonemang.</li></ol><p>Jev är varken chatt eller kodkompletteringsmodell och kan inte ersätta en språkmodell i en programmeringsagent. Däremot kan en agent skriva kod åt dig som anropar Jev där ett snabbt kalibrerat svar behövs.</p><h4>Användningsområden</h4><ul><li><strong>Bakgrundsautomatisering</strong> – beslut som körs en miljon gånger utan en människa i närheten.</li><li><strong>Realtid</strong> – enligt TypeSafe utförs de flesta anrop på ungefär 100 ms, vilket räcker för löpande bearbetning och gränssnitt.</li><li><strong>Stora datamängder</strong> – sökning i enorma korpusar, märkning av agentloggar och egenskaper för prognoser.</li><li><strong>Granskning av andra modeller</strong> – förfrågningar, extraheringar, resonemang och verktygsanrop: kringgående av begränsningar, citeringsfel och påhitt.</li><li><strong>Sökning och rangordning</strong> – relevans för paret ”fråga – kandidat”, omrangordning och kontexturval.</li><li><strong>Förgrening efter avsikt</strong> – vad användaren vill och vilken hanterare som behövs: enkel logik, specialiserad modell eller människa. Ämne, svårighet och risk avgör vilken språkmodell som får förfrågan.</li><li><strong>Skyddskontroller</strong> – språkmodellens indata, utdata och verktygsanrop: injicerade instruktioner, regelöverträdelser och personuppgiftsläckor.</li><li><strong>Support</strong> – ärendets ämne och avsikt, brådska, irritation, avhoppsrisk, återbetalningsbegäran och kö.</li><li><strong>Moderering</strong> – enligt plattformens regler: toxicitet, trakasserier, skräppost, bedrägeri, farliga råd och personuppgifter. Allvar och säkerhet avgör om material släpps igenom, får en varning, granskas eller blockeras.</li><li><strong>Branscher</strong> – försäkringsfall, finansiella utredningar och KYC, avtal och reklam, produktkort, rekrytering, leads, spel, risker, efterfrågeprognoser, kunskapsgrafer, vetenskapliga översikter och semantiska kodkontroller i CI.</li></ul><h4>Egenskaper</h4><ul><li><strong><code>jev-latest</code></strong> är alias för den senaste stabila versionen, för närvarande Jev 1.13. Versionen som svarade finns i fältet <code>model</code>, till exempel <code>jev-1.13.0</code>. Med en ny version pekar aliaset på den och svaren kan ändras utan dina ändringar. Följ fältet om trösklarna är anpassade till en viss version.</li><li><strong>Kontext</strong> är 64K token per anrop för tillstånd och alla frågor tillsammans. Tillstånd med den längsta frågan får vara upp till 32K. Modellen läser tillståndet en gång och prövar alla frågor mot det parallellt.</li><li><strong>Indata</strong> är bara text: sträng, JSON-objekt eller textarray. Bilder, ljud och video stöds ännu inte. Omvandla dem till text i förväg.</li><li><strong>Språk</strong> – huvudspråket i träningen är engelska och precisionen är för närvarande högst på det. Andra språk, bland annat kinesiska, japanska och koreanska, tas emot av modellen men med lägre precision. Pröva på egna data.</li><li><strong>Priser och debitering i Ailoot API</strong> — villkoren beror på den valda metoden och anges på metodens kort.</li><li><strong>Anpassning</strong> – Jev finjusteras inte på kunddata. Egna material läggs i <code>state</code> och ämnesområdets regler i <code>instructions</code> och <code>criteria</code>.</li><li><strong>Data</strong> – TypeSafe uppger att Jev inte tränas på kunders anrop och svar.</li></ul><h4>Kända svagheter i Jev 1.13</h4><p>TypeSafe räknar öppet upp den aktuella versionens svagheter och lovar att åtgärda mycket i kommande versioner. Modellen är snabb, kalibrerad och bedömer väl med sunt förnuft, men:</p><ol><li><strong>Läser bokstavligt.</strong> Svarar på den skrivna frågan, inte den underförstådda. Förbehåll, negationer och dolda villkor förstås ordagrant. Skriv exakta villkor och gränsfall i <code>criteria</code>. Dela ofrånkomlig tolkning i två bokstavliga frågor.</li><li><strong>Ingen räknare.</strong> Räkning av tecken, upprepningar och listelement är opålitlig och felen växer med storleken. Räkna i kod med en fråga per kandidat. Modellen förstår färger i hex eller RGB sämre än färgnamn. <code>score</code> passar för en tröskel men inte för ett exakt tal mellan nivåer.</li><li><strong>Datum och tid.</strong> Vilket datum som är tidigare, avståndet mellan dem och om ett datum ligger inom en period är opålitligt, särskilt med blandade format och relativa datum. Extrahera datumdelar med choice och alternativet ”ej angivet” och jämför i kod.</li><li><strong>Indirekthet.</strong> Dubbla negationer och frågor om egenskaper hos egenskaper sänker precisionen. Skriv direkt och namnge tillståndets delar.</li><li><strong>Överflöd i tillståndet.</strong> Ovidkommande text sänker precisionen. Filtrera i kod, eller avskilj irrelevanta delar med noul-frågor om filtrering inte är möjlig.</li><li><strong>Fientlig text.</strong> Modellen förväntar sig inte som standard knep i tillståndet. En injicerad instruktion eller text som argumenterar om sin egen klassificering kan påverka svaret. Skriv exakta kriterier och kontrollera gränsfall före start.</li><li><strong>Motsägelser.</strong> Om <code>instructions</code> och <code>criteria</code> begär olika saker, till exempel om ”ja” för noul beskrivs som ”nej”, sjunker precisionen. Kriterierna är en fortsättning på frågan.</li><li><strong>Alternativordning.</strong> Ibland föredrar modellen det första choice-alternativet. Ändra ordningen och kontrollera att svaret inte ändras.</li><li><strong>Generering.</strong> Jev har inte tränats att skriva text. För dataextrahering kan kandidater hittas med reguljära uttryck eller en generativ modell. Låt sedan Jev välja den rätta med choice.</li></ol></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Tillgängligt i Ailoot · indata &amp; metoder</h3><details class=\"card-method\" open><summary><b>Ailoot · System One</b> <code>POST /v1/systemone</code></summary><dl class=\"method-capabilities\"><div><dt>Indatatyper</dt><dd><code>text</code></dd></div><div><dt>Utdatatyper</dt><dd><code>structured</code></dd></div><div><dt>Kontext</dt><dd>64 000 tokens</dd></div><div><dt>Utdataformat</dt><dd>json</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Fält</th><th>Typ</th><th>Krav</th><th>Värden &amp; gränser</th><th>Standard</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Obligatoriskt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span><div>jev-latest</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">state</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string|object|array</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Obligatoriskt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">questions</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>object</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Obligatoriskt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span><div>Minsta antal objektfält: 1</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">questions.&lt;id&gt;.type</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Obligatoriskt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span><div>noul, choice, score</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">questions.&lt;id&gt;.instructions</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string|object|array|null</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valfritt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">questions.&lt;id&gt;.criteria</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>object|array|null</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valfritt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span><div>Villkor: noul: valfria beskrivningar av true/false som får vara null; choice: kriterieobjekt; score: icke-tom kriteriearray</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">stream</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>boolean|null</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valfritt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span><div>false, null</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinationer av indatamaterial</summary><p class=\"note-s\"><b>noul</b> · Krävs: state, questions.&lt;id&gt;.type=noul</p><p class=\"note-s\"><b>choice</b> · Krävs: state, questions.&lt;id&gt;.type=choice, criteria object</p><p class=\"note-s\"><b>score</b> · Krävs: state, questions.&lt;id&gt;.type=score, nonemptycriteriaarray</p></details><details class=\"note-s\" data-method-contract><summary>Metodparametrar och livscykel</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Avtal</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Avtal\"><span class=\"card-cell-label\">Avtal</span>text</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Avtal\"><span class=\"card-cell-label\">Avtal</span>model, state, questions</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional_controls</code></th><td data-cell-label=\"Avtal\"><span class=\"card-cell-label\">Avtal</span>null</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Avtal\"><span class=\"card-cell-label\">Avtal</span>application/json</td></tr></tbody></table></div><p>Livscykel: <code>exact retained published method</code></p><p class=\"note-s\">Metodernas strukturer och ID:n är exakta; leverantörens funktioner är åtskilda från att begäran tillåts.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Priser</h3><h4>Priser för Ailoot-metoder</h4><section class=\"meth\" data-route=\"Core\"><header><b><span class=\"alias\">Ailoot</span> System One</b><code>POST /v1/systemone</code></header><dl><div><dt>Indata</dt><dd>≈0,000084 US$ <em>/ 1K</em></dd></div><div><dt>Utdata</dt><dd>0,00 US$ <em>/ 1K</em></dd></div></dl></section><p class=\"note-s\">Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. <a href=\"/docs/sv/billing/reserve/\">Så fungerar reservation och slutreglering →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Exempelbegäranden</h3><h4>Ailoot · System One</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kodvarianter\"><button class=\"cg-tab\" id=\"model-code-665-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-665-panel-0\" aria-selected=\"true\" tabindex=\"0\">Klassificeringsexempel</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiera kod\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-665-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-665-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_TEXT_FILE:?Set your actual UTF-8 customer message}&quot;\nexport AILOOT_TEXT_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;jev-latest&quot;, &quot;state&quot;: &quot;&quot;, &quot;questions&quot;: {&quot;is_urgent&quot;: {&quot;type&quot;: &quot;noul&quot;, &quot;instructions&quot;: &quot;Does the supplied customer message express urgency?&quot;}}}&#39;)\nf=Path(os.environ[&quot;AILOOT_TEXT_FILE&quot;])\nif not f.is_file():raise SystemExit(&quot;Choose your actual UTF-8 source material&quot;)\ntext=f.read_text(encoding=&quot;utf-8&quot;)\nif not text.strip():raise SystemExit(&quot;Source material must contain text&quot;)\np[&quot;state&quot;]=text\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/systemone \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;result.json&quot;).read_text()),ensure_ascii=False,indent=2))\nPY_RESULT\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Ta emot och spara resultat</h3><h4>Ailoot · System One</h4><p class=\"note-s\">json</p><div class=\"card-result-process\" data-all-results><h5>Behåll alla färdiga resultat</h5><p class=\"note-s\">Behåll varje fullständigt returnerat svar, fil och innehållsdel.</p><p class=\"note-s\">Behåll varje svar med dess angivna fråge-ID, sannolikhet och teckenförklaring; konfidensformeln som använder n kräver n&gt;1 utan att därmed fastställa någon regel för API:ets minsta antal alternativ.</p></div><details class=\"card-about\" data-output-fields><summary>Svarsfält</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Fält</th><th>Typ</th></tr></thead><tbody><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">answers.&lt;id&gt;.type</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">answers.&lt;id&gt;.noul</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>number</td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">answers.&lt;id&gt;.choice</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">answers.&lt;id&gt;.score</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>number</td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">answers.&lt;id&gt;.confidence</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>number</td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">answers.&lt;id&gt;.probabilities</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>object</td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">answers.&lt;id&gt;.legend</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>object</td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>object</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Fel och nästa steg</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Svar</th><th>Villkor</th><th>Nästa steg</th></tr></thead><tbody><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Villkor\"><span class=\"card-cell-label\">Villkor</span>Ogiltiga obligatoriska fält, ogiltig representation av underlaget eller ogiltigt parametervärde</td><td data-cell-label=\"Nästa steg\"><span class=\"card-cell-label\">Nästa steg</span>Korrigera de angivna fälten före en ny begäran om att skapa.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Modellalias</h4><p class=\"note-s\"><span data-model-alias-route=\"Core\"><b>Ailoot</b> <a href=\"#m=jev-latest&amp;route=Core&amp;caller=jev-latest&amp;fmt=systemone\"><code>jev-latest</code></a></span></p><h4>Alias för metodsökvägar</h4><p class=\"note-s\">Använd metodsökvägarna som visas ovan.</p><h4>Relaterade anropar-ID:n</h4><p class=\"note-s\"><a href=\"#m=jev-latest&amp;route=Core&amp;caller=jev-latest&amp;fmt=systemone\"><code>jev-latest</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "jev-latest",
        "fmt": "systemone",
        "http": "POST",
        "path": "/v1/systemone",
        "request_model_id": "jev-latest",
        "route_label": "Core"
      },
      "method_key": "Core|systemone|/v1/systemone|jev-latest",
      "ordinal": 0,
      "rawMethod": {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Retain every answer by its supplied question ID, probability and legend; confidenceformulausingnrequiresn>1withoutassertinganAPIminchoicesrule.",
            "errors": [
              {
                "code": null,
                "condition": "Ogiltiga obligatoriska fält, ogiltig representation av underlaget eller ogiltigt parametervärde",
                "http_status": 400,
                "recovery": "Korrigera de angivna fälten före en ny begäran om att skapa.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "mode": "exact retained published method"
            },
            "material_combinations": [
              {
                "mode": "noul",
                "required": [
                  "state",
                  "questions.<id>.type=noul"
                ]
              },
              {
                "mode": "choice",
                "required": [
                  "state",
                  "questions.<id>.type=choice",
                  "criteria object"
                ]
              },
              {
                "mode": "score",
                "required": [
                  "state",
                  "questions.<id>.type=score",
                  "nonemptycriteriaarray"
                ]
              }
            ],
            "operation_modes": [
              "noul",
              "choice",
              "score"
            ],
            "outputs": {
              "all_results": "Behåll varje svar med dess angivna fråge-ID, sannolikhet och teckenförklaring; konfidensformeln som använder n kräver n>1 utan att därmed fastställa någon regel för API:ets minsta antal alternativ.",
              "family": "structured",
              "fields": [
                {
                  "description": null,
                  "name": "answers.<id>.type",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "answers.<id>.noul",
                  "type": "number"
                },
                {
                  "description": null,
                  "name": "answers.<id>.choice",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "answers.<id>.score",
                  "type": "number"
                },
                {
                  "description": null,
                  "name": "answers.<id>.confidence",
                  "type": "number"
                },
                {
                  "description": null,
                  "name": "answers.<id>.probabilities",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "answers.<id>.legend",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "jev-latest"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "state",
                "required": true,
                "type": "string|object|array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_properties": 1,
                "name": "questions",
                "required": true,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "noul",
                  "choice",
                  "score"
                ],
                "enum_known": true,
                "name": "questions.<id>.type",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "questions.<id>.instructions",
                "required": false,
                "type": "string|object|array|null"
              },
              {
                "availability": "source_interface",
                "conditions": "noul: valfria beskrivningar av true/false som får vara null; choice: kriterieobjekt; score: icke-tom kriteriearray",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "questions.<id>.criteria",
                "required": false,
                "type": "object|array|null"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  null
                ],
                "enum_known": true,
                "name": "stream",
                "required": false,
                "type": "boolean|null"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "stream=true",
              "duplicateandcase-variedcanonicalkeys"
            ]
          },
          "hints": [
            "Metodernas strukturer och ID:n är exakta; leverantörens funktioner är åtskilda från att begäran tillåts."
          ],
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": [
              "model",
              "state",
              "questions"
            ]
          },
          "lifecycle": {
            "mode": "exact retained published method"
          },
          "method": {
            "http": "POST",
            "path": "/v1/systemone"
          },
          "operation_modes": [
            "systemone"
          ],
          "output": {
            "family": [
              "structured"
            ],
            "format": "structured decisions JSON",
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": 64000,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 customer message}\"\nexport AILOOT_TEXT_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"jev-latest\", \"state\": \"\", \"questions\": {\"is_urgent\": {\"type\": \"noul\", \"instructions\": \"Does the supplied customer message express urgency?\"}}}')\nf=Path(os.environ[\"AILOOT_TEXT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 source material\")\ntext=f.read_text(encoding=\"utf-8\")\nif not text.strip():raise SystemExit(\"Source material must contain text\")\np[\"state\"]=text\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/systemone \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"result.json\").read_text()),ensure_ascii=False,indent=2))\nPY_RESULT\n",
            "label": "Classify your actual customer message",
            "language": "bash"
          }
        ],
        "family": "systemone",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "systemone",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": 0.084,
        "input": [
          "text"
        ],
        "label": "System One",
        "max_out": 0,
        "max_tool_calls": null,
        "out": 0,
        "output": [
          "structured"
        ],
        "path": "/v1/systemone",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.084,
                "amount_unit": "usd_per_million_tokens",
                "key": "in",
                "label": "Input",
                "side": "in"
              },
              {
                "amount": 0,
                "amount_unit": "usd_per_million_tokens",
                "key": "out",
                "label": "Output",
                "side": "out"
              }
            ]
          }
        ],
        "request_model_id": "jev-latest",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "token",
        "units": []
      }
    }
  ],
  "model_id": "jev-latest",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "09891b83e1aae16e6d8b46750e7216752b736ee080084fac80437c8eff281bf8",
    "input_html_sha256": "c2152f4c2a0bd7585007fc411d6f025035743bfbf13fc3c987c3f34f5c3f4a5f",
    "private_audit_sha256": "4bd0d6890b5684e3e178bfe93ef927bf268d7ac98c6d7959ede4e04f37c5ebf1",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/sv/jev-latest/",
    "description": "Beslutsmodell från TypeSafe: skriver inte text utan svarar på typade frågor om text eller JSON, med val av alternativ, skalbedömning eller ”ja/nej” med sannolikheter. Passar för routning, sortering av ärenden, moderering och poängsättning. Alla frågor i ett anrop bedöms parallellt.",
    "locale": "sv",
    "md_url": "https://ailoot.ai/models/sv/jev-latest/index.md",
    "title": "jev-latest — Ailoot",
    "url": "https://ailoot.ai/models/sv/jev-latest/"
  },
  "rawModel": {
    "about": "Jev är TypeSafes flaggskeppsmodell och den första modellen i den nya klassen **System One**. Den skriver inte text utan fattar snabbt beslut som ett program kan använda direkt. Du skickar ett **tillstånd** (`state`), text eller JSON, och en uppsättning **frågor**, och får typade värden med kalibrerade sannolikheter tillbaka.\n\nSpråkmodeller skriver ord för människor. Enligt TypeSafe ligger Jev närmare kod: svaret är direkt i kodens önskade form, med hög hastighet och inga värden utanför de angivna alternativen. Modellen är utformad för stabila svar vid upprepade anrop.\n\n### Så skiljer sig System One från en språkmodell\n\n- **Genererar inte.** Jev skriver inte användarsvar, kod eller förklaringar av resonemang. Du anger de möjliga svaren genom en av tre frågetyper.\n- **Tränad för kalibrerade beslut.** TypeSafe tränar modellen med RLCD (Reinforcement Learning for Calibrated Decisions): sannolikheterna anpassas till verkliga utfall och speglar osäkerhet. Bland många svar med sannolikhet 0,8 bör ungefär 80% vara korrekta. Kalibrering är en egenskap för stora urval, inte en garanti för att ett enskilt svar är rätt.\n- **Annat träningsmål.** Chattmodeller tränas att tilltala människor (RLHF). Enligt TypeSafes observationer uppmuntrar det inställsamhet och självsäkert uttryckta fel. En av RLHF:s medförfattare, Diogo Almeida, är medgrundare av TypeSafe.\n\nNamnet syftar på ”System 1” i Daniel Kahnemans bok ”Tänka, snabbt och långsamt”: snabbt intuitivt omdöme jämfört med det långsamma, genomtänkta tänkandet i ”System 2”. Jev är skapad för snabba, avgränsade bedömningar.\n\n### Tre frågetyper\n\nEn fråga är en bedömning av tillståndet. Svaret är ett värde som koden jämför med en tröskel, sorterar eller skickar vidare.\n\n1. **Choice – val av alternativ.** Avdelning för ett ärende, produktkategori eller språk i ett kodavsnitt. Alternativen är en ordlista ”alternativ → beskrivning”, med upp till 255 alternativ. Svaret innehåller vald `choice`, `probabilities` för alla alternativ (med summan 1) och säkerhet `confidence`. Om listan kanske inte täcker alla fall kan ”annat” eller ”inget av ovanstående” läggas till.\n2. **Score – skalbedömning.** Placering på en ordnad skala som du beskriver: felets allvar, kundens irritation eller färdighetsnivå. Från 2 till 10 nivåer, från lägsta till högsta. Modellen bedömer varje nivå separat utan att se dess nummer eller grannar. Svaret innehåller `score` (summan av nivånumren multiplicerade med deras sannolikheter, så värdet kan hamna mellan nivåer), `legend` med nivåbeskrivningar, `probabilities` och `confidence`.\n3. **Noul – ja eller nej.** Om påståendet är sant. Svaret `noul` är sannolikheten för ”ja” från 0 till 1: nära 1 ett säkert ”ja”, nära 0 ett säkert ”nej”, nära 0,5 tvekar modellen. Separat `confidence` finns inte. Ett tal beskriver hela svaret. Valfri `criteria` preciserar vad som ska räknas som ”ja” respektive ”nej”.\n\nSå väljer du: kända oordnade alternativ använder choice, steg i ett spektrum score och rent ”ja/nej” där själva sannolikheten är viktig noul. Noul 0,5 innebär lika chanser för ”ja” och ”nej”, inte en ”medelnivå”. Graden mäts med score. Om två typer passar, välj den som koden direkt kan agera på: choice för grenar, score för trösklar och noul för `if`.\n\nTyper kan blandas i samma anrop. Svaret begränsas alltid av dina alternativ och beror inte på andra frågor. Frågor kan läggas till och tas bort utan att övriga svar ändras.\n\n### Tillstånd\n\nTillståndet är det som modellen bedömer: kundens meddelande, ett dokumentutdrag, en databaspost eller applikationens tillstånd.\n\n- **Sträng** när det finns en text: ett meddelande, en artikel eller ett utdrag.\n- **Objekt** för namngivna fält, relaterade poster eller applikationstillstånd. TypeSafe rekommenderar objekt för de flesta anrop: varje del får ett tydligt namn.\n- **Array** för en följd av meddelanden eller poster.\n\nFörbered det som material för experter: lägg korrespondens, beställning och returregler tillsammans om beslutet kräver jämförelse. Behåll innehållet i tillståndet och bedömningarna i frågorna. Om en fråga gäller en del av tillståndet, ange sökvägen till den inom backtick-tecken, till exempel `ticket.messages[0].text`.\n\n### Så formuleras frågor\n\n- **En snabb bedömning per fråga.** En bra fråga kan en kunnig person med rätt kontext besvara på en sekund: ”Finns brådska i meddelandet?” ”Analysera meddelandet och avgör vad som ska göras” kräver redan långsamt resonemang och behöver delas i enkla frågor.\n- **Hela frågan i `instructions`.** Frågans nyckel, till exempel `refund_requested`, behövs bara för din kod och skickas inte till modellen.\n- **Alla frågor om samma tillstånd i ett anrop.** Modellen bedömer dem parallellt. Enligt TypeSafe ökar extra frågor knappt svarstiden och kostar bara sina egna token. En fråga ”för säkerhets skull” kostar nästan inget. Koden avgör själv vilka svar som behövs.\n- **Dela upp komplexa bedömningar.** I stället för ”bedöm startupansökan”, fråga separat om marknadsstorlek, teknisk genomförbarhet och skillnader mot konkurrenterna. Beräkna resultatet i kod med vikter. Ändrade prioriteringar innebär ändrade vikter, inte en omskriven fråga.\n- **Beroende frågor i ett andra anrop.** Svaren i samma anrop utgör inte kontext för varandra. Ett andra anrop behövs bara om det inte går att bygga utan det första svaret, till exempel om data måste hämtas eller nästa frågas alternativ väljas.\n- **Lång fråga som objekt.** `instructions` och `criteria` är vanligtvis strängar men kan vara objekt eller arrayer: frågan i ett fält och data i andra. Det är praktiskt för att jämföra ett CV med databasposter i samma fråga.\n\n### Säkerhet\n\nFör choice och score visar `confidence` från 0 till 1 hur koncentrerad sannolikheten är till ett svar: 1 innebär allt på ett alternativ och 0 lika mycket på alla. För score minskar en intilliggande nivå säkerheten mindre än en avlägsen. För noul är säkerheten själva värdet. Ju längre från 0,5, desto säkrare svar.\n\nTypeSafe rekommenderar tre intervall:\n\n1. **Hög säkerhet** – agera automatiskt.\n2. **Medelhög** – agera försiktigt, till exempel be användaren bekräfta.\n3. **Låg** – lämna fallet till en människa, precisera förfrågan eller använd en reservväg, till exempel en kraftfullare modell med resonemang.\n\nJu dyrare felet är, desto striktare tröskel: högre för oåterkalleliga åtgärder än för läsning. Svaret anger vad som ska väljas och säkerheten om det är lämpligt att agera. Anpassa trösklarna till egna data genom att jämföra säkerhet och precision.\n\n### Så byggs ett system kring Jev\n\nJev är inte utformad för agenter som själva väljer nästa steg och kan tappa riktningen i varje cykel, utan för program där koden styr flödet och modellen svarar på avgränsade betydelsefrågor. TypeSafes åtta designsteg:\n\n1. Gör allt som kan göras i kod med kod, tillförlitligt och billigt.\n2. Lägg bara det som de aktuella frågorna behöver i tillståndet. Hämta aktuella fakta från din egen kunskapsbas, inte modellens minne.\n3. Struktur i tillståndet: nästlad JSON och sökvägen till rätt fält inom backtick-tecken i frågan om det minskar mångtydighet.\n4. De mest avgränsade och specifika frågorna är enligt TypeSafe kanske huvudregeln: en bred fråga gömmer flera bedömningar bakom ett svar.\n5. Struktur i frågorna: själva frågan är kort. Förklaringar, exempel och värden från din databas finns i närliggande fält i objektet `instructions` eller `criteria`, inte i en lång sträng.\n6. Många oberoende frågor om samma tillstånd i ett anrop ger mer nytta per dollar.\n7. Koden kombinerar svaren med regler, viktad summa eller som egenskaper för en klassisk maskininlärningsmodell.\n8. Förgrening efter säkerhet: osäkra fall lämnas till en människa eller en modell med resonemang.\n\nJev är varken chatt eller kodkompletteringsmodell och kan inte ersätta en språkmodell i en programmeringsagent. Däremot kan en agent skriva kod åt dig som anropar Jev där ett snabbt kalibrerat svar behövs.\n\n### Användningsområden\n\n- **Bakgrundsautomatisering** – beslut som körs en miljon gånger utan en människa i närheten.\n- **Realtid** – enligt TypeSafe utförs de flesta anrop på ungefär 100 ms, vilket räcker för löpande bearbetning och gränssnitt.\n- **Stora datamängder** – sökning i enorma korpusar, märkning av agentloggar och egenskaper för prognoser.\n- **Granskning av andra modeller** – förfrågningar, extraheringar, resonemang och verktygsanrop: kringgående av begränsningar, citeringsfel och påhitt.\n- **Sökning och rangordning** – relevans för paret ”fråga – kandidat”, omrangordning och kontexturval.\n- **Förgrening efter avsikt** – vad användaren vill och vilken hanterare som behövs: enkel logik, specialiserad modell eller människa. Ämne, svårighet och risk avgör vilken språkmodell som får förfrågan.\n- **Skyddskontroller** – språkmodellens indata, utdata och verktygsanrop: injicerade instruktioner, regelöverträdelser och personuppgiftsläckor.\n- **Support** – ärendets ämne och avsikt, brådska, irritation, avhoppsrisk, återbetalningsbegäran och kö.\n- **Moderering** – enligt plattformens regler: toxicitet, trakasserier, skräppost, bedrägeri, farliga råd och personuppgifter. Allvar och säkerhet avgör om material släpps igenom, får en varning, granskas eller blockeras.\n- **Branscher** – försäkringsfall, finansiella utredningar och KYC, avtal och reklam, produktkort, rekrytering, leads, spel, risker, efterfrågeprognoser, kunskapsgrafer, vetenskapliga översikter och semantiska kodkontroller i CI.\n\n### Egenskaper\n\n- **`jev-latest`** är alias för den senaste stabila versionen, för närvarande Jev 1.13. Versionen som svarade finns i fältet `model`, till exempel `jev-1.13.0`. Med en ny version pekar aliaset på den och svaren kan ändras utan dina ändringar. Följ fältet om trösklarna är anpassade till en viss version.\n- **Kontext** är 64K token per anrop för tillstånd och alla frågor tillsammans. Tillstånd med den längsta frågan får vara upp till 32K. Modellen läser tillståndet en gång och prövar alla frågor mot det parallellt.\n- **Indata** är bara text: sträng, JSON-objekt eller textarray. Bilder, ljud och video stöds ännu inte. Omvandla dem till text i förväg.\n- **Språk** – huvudspråket i träningen är engelska och precisionen är för närvarande högst på det. Andra språk, bland annat kinesiska, japanska och koreanska, tas emot av modellen men med lägre precision. Pröva på egna data.\n- **Priser och debitering i Ailoot API** — villkoren beror på den valda metoden och anges på metodens kort.\n- **Anpassning** – Jev finjusteras inte på kunddata. Egna material läggs i `state` och ämnesområdets regler i `instructions` och `criteria`.\n- **Data** – TypeSafe uppger att Jev inte tränas på kunders anrop och svar.\n\n### Kända svagheter i Jev 1.13\n\nTypeSafe räknar öppet upp den aktuella versionens svagheter och lovar att åtgärda mycket i kommande versioner. Modellen är snabb, kalibrerad och bedömer väl med sunt förnuft, men:\n\n1. **Läser bokstavligt.** Svarar på den skrivna frågan, inte den underförstådda. Förbehåll, negationer och dolda villkor förstås ordagrant. Skriv exakta villkor och gränsfall i `criteria`. Dela ofrånkomlig tolkning i två bokstavliga frågor.\n2. **Ingen räknare.** Räkning av tecken, upprepningar och listelement är opålitlig och felen växer med storleken. Räkna i kod med en fråga per kandidat. Modellen förstår färger i hex eller RGB sämre än färgnamn. `score` passar för en tröskel men inte för ett exakt tal mellan nivåer.\n3. **Datum och tid.** Vilket datum som är tidigare, avståndet mellan dem och om ett datum ligger inom en period är opålitligt, särskilt med blandade format och relativa datum. Extrahera datumdelar med choice och alternativet ”ej angivet” och jämför i kod.\n4. **Indirekthet.** Dubbla negationer och frågor om egenskaper hos egenskaper sänker precisionen. Skriv direkt och namnge tillståndets delar.\n5. **Överflöd i tillståndet.** Ovidkommande text sänker precisionen. Filtrera i kod, eller avskilj irrelevanta delar med noul-frågor om filtrering inte är möjlig.\n6. **Fientlig text.** Modellen förväntar sig inte som standard knep i tillståndet. En injicerad instruktion eller text som argumenterar om sin egen klassificering kan påverka svaret. Skriv exakta kriterier och kontrollera gränsfall före start.\n7. **Motsägelser.** Om `instructions` och `criteria` begär olika saker, till exempel om ”ja” för noul beskrivs som ”nej”, sjunker precisionen. Kriterierna är en fortsättning på frågan.\n8. **Alternativordning.** Ibland föredrar modellen det första choice-alternativet. Ändra ordningen och kontrollera att svaret inte ändras.\n9. **Generering.** Jev har inte tränats att skriva text. För dataextrahering kan kandidater hittas med reguljära uttryck eller en generativ modell. Låt sedan Jev välja den rätta med choice.",
    "alias_of": null,
    "aliases": [],
    "author": "TypeSafe",
    "ctx": 64000,
    "formats": [
      "systemone"
    ],
    "guide": "/docs/api/systemone/",
    "id": "jev-latest",
    "input": [
      "text"
    ],
    "kind": "decision",
    "max_out": null,
    "methods": [
      {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Retain every answer by its supplied question ID, probability and legend; confidenceformulausingnrequiresn>1withoutassertinganAPIminchoicesrule.",
            "errors": [
              {
                "code": null,
                "condition": "Ogiltiga obligatoriska fält, ogiltig representation av underlaget eller ogiltigt parametervärde",
                "http_status": 400,
                "recovery": "Korrigera de angivna fälten före en ny begäran om att skapa.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "mode": "exact retained published method"
            },
            "material_combinations": [
              {
                "mode": "noul",
                "required": [
                  "state",
                  "questions.<id>.type=noul"
                ]
              },
              {
                "mode": "choice",
                "required": [
                  "state",
                  "questions.<id>.type=choice",
                  "criteria object"
                ]
              },
              {
                "mode": "score",
                "required": [
                  "state",
                  "questions.<id>.type=score",
                  "nonemptycriteriaarray"
                ]
              }
            ],
            "operation_modes": [
              "noul",
              "choice",
              "score"
            ],
            "outputs": {
              "all_results": "Behåll varje svar med dess angivna fråge-ID, sannolikhet och teckenförklaring; konfidensformeln som använder n kräver n>1 utan att därmed fastställa någon regel för API:ets minsta antal alternativ.",
              "family": "structured",
              "fields": [
                {
                  "description": null,
                  "name": "answers.<id>.type",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "answers.<id>.noul",
                  "type": "number"
                },
                {
                  "description": null,
                  "name": "answers.<id>.choice",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "answers.<id>.score",
                  "type": "number"
                },
                {
                  "description": null,
                  "name": "answers.<id>.confidence",
                  "type": "number"
                },
                {
                  "description": null,
                  "name": "answers.<id>.probabilities",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "answers.<id>.legend",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "jev-latest"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "state",
                "required": true,
                "type": "string|object|array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_properties": 1,
                "name": "questions",
                "required": true,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "noul",
                  "choice",
                  "score"
                ],
                "enum_known": true,
                "name": "questions.<id>.type",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "questions.<id>.instructions",
                "required": false,
                "type": "string|object|array|null"
              },
              {
                "availability": "source_interface",
                "conditions": "noul: valfria beskrivningar av true/false som får vara null; choice: kriterieobjekt; score: icke-tom kriteriearray",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "questions.<id>.criteria",
                "required": false,
                "type": "object|array|null"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  null
                ],
                "enum_known": true,
                "name": "stream",
                "required": false,
                "type": "boolean|null"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "stream=true",
              "duplicateandcase-variedcanonicalkeys"
            ]
          },
          "hints": [
            "Metodernas strukturer och ID:n är exakta; leverantörens funktioner är åtskilda från att begäran tillåts."
          ],
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": [
              "model",
              "state",
              "questions"
            ]
          },
          "lifecycle": {
            "mode": "exact retained published method"
          },
          "method": {
            "http": "POST",
            "path": "/v1/systemone"
          },
          "operation_modes": [
            "systemone"
          ],
          "output": {
            "family": [
              "structured"
            ],
            "format": "structured decisions JSON",
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": 64000,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 customer message}\"\nexport AILOOT_TEXT_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"jev-latest\", \"state\": \"\", \"questions\": {\"is_urgent\": {\"type\": \"noul\", \"instructions\": \"Does the supplied customer message express urgency?\"}}}')\nf=Path(os.environ[\"AILOOT_TEXT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 source material\")\ntext=f.read_text(encoding=\"utf-8\")\nif not text.strip():raise SystemExit(\"Source material must contain text\")\np[\"state\"]=text\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/systemone \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"result.json\").read_text()),ensure_ascii=False,indent=2))\nPY_RESULT\n",
            "label": "Classify your actual customer message",
            "language": "bash"
          }
        ],
        "family": "systemone",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "systemone",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": 0.084,
        "input": [
          "text"
        ],
        "label": "System One",
        "max_out": 0,
        "max_tool_calls": null,
        "out": 0,
        "output": [
          "structured"
        ],
        "path": "/v1/systemone",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.084,
                "amount_unit": "usd_per_million_tokens",
                "key": "in",
                "label": "Input",
                "side": "in"
              },
              {
                "amount": 0,
                "amount_unit": "usd_per_million_tokens",
                "key": "out",
                "label": "Output",
                "side": "out"
              }
            ]
          }
        ],
        "request_model_id": "jev-latest",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "token",
        "units": []
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "jev-latest",
        "request_model_id": "jev-latest",
        "route_label": "Core"
      }
    ],
    "name": "jev-latest",
    "price": {
      "in": 0.084,
      "in_label": null,
      "out": 0,
      "out_label": null,
      "sort_in": 0.084,
      "sort_out": 0,
      "varies": false
    },
    "short": "Beslutsmodell från TypeSafe: skriver inte text utan svarar på typade frågor om text eller JSON, med val av alternativ, skalbedömning eller ”ja/nej” med sannolikheter. Passar för routning, sortering av ärenden, moderering och poängsättning. Alla frågor i ett anrop bedöms parallellt."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Beslutsmodell från TypeSafe: skriver inte text utan svarar på typade frågor om text eller JSON, med val av alternativ, skalbedömning eller ”ja/nej” med sannolikheter. Passar för routning, sortering av ärenden, moderering och poängsättning. Alla frågor i ett anrop bedöms parallellt.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "0f7b76dd1de0a1bf8c005f148417406ff43057b7d8c579eee8173f8d32f8e435",
    "renderer_sha256": "8a45bb31b83d2551e6d975cf4683518c7cb445a54b9394a01947f4dd103f1051"
  },
  "sourceRevision": "ecc326fc65512133739cb0f372b3c34ab74a42062f6862d6d07a1f1986276ad5"
}
