{
  "aboutHtml": "<p>Jev è il modello di punta di TypeSafe e il primo modello della nuova classe <strong>System One</strong>. Non scrive testo, ma prende rapidamente decisioni utilizzabili subito da un programma: si forniscono uno <strong>stato</strong> (<code>state</code>), testo o JSON, e un insieme di <strong>domande</strong>, ricevendo valori tipizzati con probabilità calibrate.</p><p>I modelli linguistici scrivono parole per le persone; secondo TypeSafe, Jev è più vicino al codice: la risposta arriva subito nella forma richiesta dal codice, ad alta velocità e senza valori al di fuori delle opzioni definite. Il modello è progettato per dare risposte stabili quando le richieste vengono ripetute.</p><h4>Come System One si distingue da un modello linguistico</h4><ul><li><strong>Non genera.</strong> Jev non scrive risposte all&#39;utente, non scrive codice e non spiega il percorso del ragionamento. Le risposte possibili vengono definite dall&#39;utente tramite uno dei tre tipi di domanda.</li><li><strong>È addestrato a decisioni calibrate.</strong> TypeSafe addestra il modello con RLCD (Reinforcement Learning for Calibrated Decisions): le probabilità vengono adattate agli esiti reali e rispecchiano l&#39;incertezza. Tra molte risposte con probabilità 0,8, circa l&#39;80% dovrebbe risultare corretto. La calibrazione è una proprietà di un campione ampio, non una garanzia di correttezza di una singola risposta.</li><li><strong>Ha un altro obiettivo di addestramento.</strong> I modelli di chat vengono addestrati a piacere alle persone (RLHF) e, secondo le osservazioni di TypeSafe, questo incoraggia accondiscendenza ed errori espressi con sicurezza. Uno dei coautori di RLHF, Diogo Almeida, è cofondatore di TypeSafe.</li></ul><p>Il nome richiama il «Sistema 1» del libro di Daniel Kahneman «Pensieri lenti e veloci»: il giudizio intuitivo rapido contrapposto al pensiero lento e deliberato del «Sistema 2». Jev è stato creato per giudizi rapidi e circoscritti.</p><h4>Tre tipi di domanda</h4><p>Una domanda è un singolo giudizio sullo stato; la risposta è un valore che il codice confronta con una soglia, ordina o trasmette al passaggio successivo.</p><ol><li><strong>Choice — scelta di un&#39;opzione.</strong> Reparto per una richiesta, categoria di un prodotto, lingua di un frammento di codice. Le opzioni sono un dizionario «opzione → descrizione», fino a 255 voci. La risposta comprende il <code>choice</code> scelto, le <code>probabilities</code> di tutte le opzioni, con somma 1, e la confidenza <code>confidence</code>. Se l&#39;elenco può non coprire tutti i casi, aggiungere «altro» o «nessuna delle opzioni».</li><li><strong>Score — valutazione su una scala.</strong> Posizione su una scala ordinata descritta dall&#39;utente: gravità di un errore, irritazione del cliente, livello di una competenza. Da 2 a 10 livelli, dal più basso al più alto; il modello valuta ogni livello separatamente, senza vederne numero e livelli vicini. La risposta comprende <code>score</code>, somma dei numeri dei livelli moltiplicati per le rispettive probabilità, quindi il valore può cadere tra i livelli, <code>legend</code> con le descrizioni dei livelli, <code>probabilities</code> e <code>confidence</code>.</li><li><strong>Noul — sì o no.</strong> Determina se un&#39;affermazione è vera. La risposta <code>noul</code> è la probabilità del «sì», da 0 a 1: vicino a 1 indica un «sì» sicuro, vicino a 0 un «no» sicuro, vicino a 0,5 il modello è incerto. Non esiste un <code>confidence</code> separato: un solo numero descrive interamente la risposta. Il <code>criteria</code> facoltativo precisa cosa considerare «sì» e cosa «no».</li></ol><p>Come scegliere: opzioni note senza ordine — choice; gradini di uno spettro — score; semplice «sì/no» in cui conta la probabilità stessa — noul. Noul 0,5 indica uguali probabilità di «sì» e «no», non un «livello medio»: il grado viene misurato da score. Tra due tipi adatti, scegliere quello su cui il codice agisce subito: choice per le diramazioni, score per la soglia, noul per <code>if</code>.</p><p>I tipi possono essere combinati in una sola richiesta. La risposta è sempre limitata alle opzioni definite e non dipende dalle altre domande: si possono aggiungere e rimuovere domande senza modificare le altre risposte.</p><h4>Stato</h4><p>Lo stato è ciò che il modello valuta: messaggio di un cliente, segmento di documento, record di una base di dati o stato dell&#39;applicazione.</p><ul><li><strong>Stringa</strong>, quando c&#39;è un unico testo: messaggio, articolo o estratto.</li><li><strong>Oggetto</strong>, per campi nominati, record collegati o stato dell&#39;applicazione. TypeSafe consiglia un oggetto per la maggior parte delle richieste: ogni parte ha un nome comprensibile.</li><li><strong>Array</strong>, per una sequenza di messaggi o record.</li></ul><p>Prepararlo come materiale per esperti: includere insieme conversazione, ordine e regole dei resi se la decisione richiede di confrontarli. Conservare il contenuto nello stato e i giudizi nelle domande. Se una domanda riguarda una parte dello stato, indicarne il percorso tra backtick nella domanda, per esempio <code>ticket.messages[0].text</code>.</p><h4>Come formulare le domande</h4><ul><li><strong>Un giudizio rapido per domanda.</strong> Una buona domanda è quella a cui una persona competente, con il contesto necessario, risponde in un secondo: «Il messaggio esprime urgenza?». «Analizza il messaggio e decidi cosa fare» è già ragionamento lento e va diviso in domande semplici.</li><li><strong>L&#39;intera domanda in <code>instructions</code>.</strong> La chiave della domanda, per esempio <code>refund_requested</code>, serve soltanto al codice e non viene trasmessa al modello.</li><li><strong>Tutte le domande sullo stesso stato in una richiesta.</strong> Il modello le valuta in parallelo: secondo TypeSafe, le domande aggiuntive aumentano pochissimo il tempo di risposta e costano soltanto i propri token. Una domanda «per ogni eventualità» costa quasi nulla; il codice decide quali risposte servono.</li><li><strong>Un giudizio complesso diviso in parti.</strong> Invece di «valuta la candidatura della startup», chiedere separatamente dimensione del mercato, fattibilità tecnica e differenze dai concorrenti, poi calcolare il risultato nel codice con pesi. Se cambiano le priorità, cambiare i pesi, non riscrivere la domanda.</li><li><strong>Domande dipendenti in una seconda richiesta.</strong> Le risposte della stessa richiesta non costituiscono contesto l&#39;una per l&#39;altra. Una seconda richiesta serve soltanto quando non può essere costruita senza la prima risposta: occorre caricare dati oppure scegliere opzioni per la domanda successiva.</li><li><strong>Una domanda lunga come oggetto.</strong> <code>instructions</code> e <code>criteria</code> sono normalmente stringhe, ma possono essere un oggetto o un array: la domanda in un campo, i dati in altri. È utile per confrontare un curriculum con i record di una base di dati mediante una sola domanda.</li></ul><h4>Confidenza</h4><p>Per choice e score, <code>confidence</code> da 0 a 1 mostra quanto la probabilità sia concentrata su una risposta: 1 significa tutta su una sola opzione, 0 ugualmente distribuita su tutte. Per score, un livello vicino riduce la confidenza meno di uno distante. Per noul, la confidenza è il valore stesso: più è distante da 0,5, più la risposta è sicura.</p><p>TypeSafe consiglia tre intervalli:</p><ol><li><strong>Confidenza alta</strong>, agire automaticamente.</li><li><strong>Media</strong>, agire con cautela, per esempio chiedendo conferma all&#39;utente.</li><li><strong>Bassa</strong>, affidare il caso a una persona, precisare la richiesta o collegare un percorso alternativo, per esempio un modello di ragionamento più potente.</li></ol><p>Più un errore costa, più la soglia deve essere rigorosa: per azioni irreversibili deve essere più alta che per la lettura. La risposta indica cosa scegliere, la confidenza se conviene agire. Le soglie vanno scelte sui propri dati, confrontando confidenza e precisione.</p><h4>Come costruire un sistema attorno a Jev</h4><p>Jev non è pensato per agenti che scelgono da soli il passaggio successivo e possono deviare a ogni ciclo, ma per programmi in cui il codice controlla il processo e il modello risponde a domande semantiche circoscritte. Otto passaggi di progettazione secondo TypeSafe:</p><ol><li>Fare con il codice tutto ciò che si può fare con il codice: in modo affidabile ed economico.</li><li>Nello stato soltanto ciò che serve alle domande correnti; fatti aggiornati dalla propria base di conoscenza, non dalla memoria del modello.</li><li>Struttura nello stato: JSON annidato e, nella domanda, il percorso al campo necessario tra backtick, se riduce l&#39;ambiguità.</li><li>Domande il più possibile circoscritte e concrete: secondo TypeSafe, forse la regola principale; una domanda ampia nasconde più giudizi dietro una sola risposta.</li><li>Struttura nelle domande: la domanda stessa breve; spiegazioni, esempi e valori della propria base di dati in campi vicini dell&#39;oggetto <code>instructions</code> o <code>criteria</code>, non in un&#39;unica stringa lunga.</li><li>Molte domande indipendenti sullo stesso stato in una richiesta: più utilità per ogni dollaro.</li><li>Il codice unisce le risposte tramite regole, somma ponderata oppure come caratteristiche per un modello classico di apprendimento automatico.</li><li>Diramazione in base alla confidenza: casi incerti a una persona o a un modello di ragionamento.</li></ol><p>Jev non è una chat né un modello di completamento del codice e non può sostituire un modello linguistico in un agente di programmazione. Un agente può però scrivere il codice che chiama Jev dove serve una risposta rapida e calibrata.</p><h4>Dove viene utilizzato</h4><ul><li><strong>Automazione in background</strong>, decisioni eseguite un milione di volte senza una persona presente.</li><li><strong>Tempo reale</strong>, secondo TypeSafe, la maggior parte delle richieste viene eseguita in circa 100 ms: sufficiente per elaborazione immediata e interfacce.</li><li><strong>Grandi dati</strong>, ricerca in corpus enormi, annotazione dei log di lavoro degli agenti e caratteristiche per previsioni.</li><li><strong>Verifica di altri modelli</strong>, richieste, estrazioni, ragionamenti e chiamate di strumenti: aggiramento dei limiti, errori nelle citazioni e invenzioni.</li><li><strong>Ricerca e ranking</strong>, rilevanza della coppia «richiesta — candidato», riordinamento e selezione del contesto.</li><li><strong>Diramazione per intento</strong>, cosa vuole l&#39;utente e quale gestore serve: logica semplice, modello specialistico o persona; tema, complessità e rischio determinano a quale modello linguistico affidare la richiesta.</li><li><strong>Verifiche di protezione</strong>, input, output e chiamate di strumenti del modello linguistico: istruzioni iniettate, violazioni delle regole e fuga di dati personali.</li><li><strong>Supporto</strong>, tema e intento della richiesta, urgenza, irritazione, rischio di abbandono, richiesta di rimborso e coda.</li><li><strong>Moderazione</strong>, secondo le regole della piattaforma: tossicità, molestie, spam, frodi, consigli pericolosi e dati personali; in base a gravità e confidenza, consentire, avvertire, verificare o bloccare.</li><li><strong>Settori</strong>, sinistri assicurativi, indagini finanziarie e KYC, contratti e pubblicità, schede di prodotti, selezione del personale, lead, giochi, rischi, previsione della domanda, grafi di conoscenza, rassegne scientifiche e verifiche semantiche del codice nella CI.</li></ul><h4>Caratteristiche</h4><ul><li><strong><code>jev-latest</code></strong> è l&#39;alias dell&#39;ultima versione stabile, attualmente Jev 1.13; la versione che ha risposto compare nel campo <code>model</code>, per esempio <code>jev-1.13.0</code>. Con una nuova versione l&#39;alias passa a essa e le risposte possono cambiare senza modifiche da parte dell&#39;utente: monitorare il campo se le soglie sono state scelte per una versione.</li><li><strong>Contesto</strong>, 64K token per richiesta: stato e tutte le domande insieme; stato con la domanda più lunga fino a 32K. Il modello legge lo stato una volta e verifica tutte le domande su di esso in parallelo.</li><li><strong>Input</strong>, soltanto testo: stringa, oggetto JSON o array di testi. Immagini, audio e video non sono ancora supportati: convertirli prima in testo.</li><li><strong>Lingua</strong>, la lingua principale dell&#39;addestramento è l&#39;inglese e attualmente è quella con la precisione maggiore. Il modello accetta altre lingue, tra cui cinese, giapponese e coreano, ma con precisione inferiore: verificare sui propri dati.</li><li><strong>Prezzi e fatturazione in Ailoot API</strong> — le condizioni dipendono dal metodo scelto e sono indicate nella relativa scheda.</li><li><strong>Personalizzazione</strong>, Jev non viene ulteriormente addestrato sui dati del cliente: i propri materiali vanno in <code>state</code>, le regole dell&#39;ambito in <code>instructions</code> e <code>criteria</code>.</li><li><strong>Dati</strong>, TypeSafe dichiara che Jev non viene addestrato su richieste e risposte dei clienti.</li></ul><h4>Limiti noti di Jev 1.13</h4><p>TypeSafe elenca apertamente i limiti della versione corrente e promette di correggerne molti nelle successive. Il modello è rapido, calibrato e dà buoni giudizi di buon senso, ma:</p><ol><li><strong>Legge letteralmente.</strong> Risponde alla domanda scritta, non a quella implicita: precisazioni, negazioni e condizioni non esplicite vengono interpretate letteralmente. Scrivere condizioni esatte e casi limite in <code>criteria</code>; dividere un&#39;interpretazione inevitabile in due domande letterali.</li><li><strong>Non è una calcolatrice.</strong> Il conteggio di caratteri, ripetizioni ed elementi di un elenco è inaffidabile e l&#39;errore cresce con le dimensioni: contare nel codice, con una domanda per candidato. Il modello comprende colori in hex o RGB meno bene dei nomi. <code>score</code> è adatto a una soglia, non a un numero esatto tra i livelli.</li><li><strong>Date e tempi.</strong> Quale data preceda un&#39;altra, quanto tempo intercorra e se una data rientri in un periodo sono valutazioni inaffidabili, soprattutto con formati misti e date relative. Estrarre le parti della data tramite choice, con l&#39;opzione «non indicato», e confrontarle nel codice.</li><li><strong>Formulazioni indirette.</strong> Doppie negazioni e domande su una proprietà di una proprietà riducono la precisione. Scrivere direttamente e chiamare per nome le parti dello stato.</li><li><strong>Elementi superflui nello stato.</strong> Testo estraneo riduce la precisione. Filtrare nel codice oppure, se non è possibile, scartare ciò che è irrilevante con domande noul.</li><li><strong>Testo ostile.</strong> Per impostazione predefinita il modello non si aspetta insidie nello stato: un&#39;istruzione iniettata o un testo che contesta la propria classificazione può spostare la risposta. Scrivere criteri precisi e verificare i casi limite prima dell&#39;avvio.</li><li><strong>Contraddizioni.</strong> Se <code>instructions</code> e <code>criteria</code> chiedono cose diverse, per esempio descrivendo il «sì» di noul come «no», la precisione diminuisce. I criteri sono una continuazione della domanda.</li><li><strong>Ordine delle opzioni.</strong> Talvolta il modello tende alla prima opzione di choice. Riordinare le opzioni e verificare che la risposta non cambi.</li><li><strong>Generazione.</strong> Jev non è stato addestrato a scrivere testo. Per estrarre dati, trovare i candidati con un&#39;espressione regolare o un modello generativo e lasciare a Jev la scelta corretta tramite choice.</li></ol>",
  "aboutText": "Jev è il modello di punta di TypeSafe e il primo modello della nuova classe **System One**. Non scrive testo, ma prende rapidamente decisioni utilizzabili subito da un programma: si forniscono uno **stato** (`state`), testo o JSON, e un insieme di **domande**, ricevendo valori tipizzati con probabilità calibrate.\n\nI modelli linguistici scrivono parole per le persone; secondo TypeSafe, Jev è più vicino al codice: la risposta arriva subito nella forma richiesta dal codice, ad alta velocità e senza valori al di fuori delle opzioni definite. Il modello è progettato per dare risposte stabili quando le richieste vengono ripetute.\n\n### Come System One si distingue da un modello linguistico\n\n- **Non genera.** Jev non scrive risposte all'utente, non scrive codice e non spiega il percorso del ragionamento. Le risposte possibili vengono definite dall'utente tramite uno dei tre tipi di domanda.\n- **È addestrato a decisioni calibrate.** TypeSafe addestra il modello con RLCD (Reinforcement Learning for Calibrated Decisions): le probabilità vengono adattate agli esiti reali e rispecchiano l'incertezza. Tra molte risposte con probabilità 0,8, circa l'80% dovrebbe risultare corretto. La calibrazione è una proprietà di un campione ampio, non una garanzia di correttezza di una singola risposta.\n- **Ha un altro obiettivo di addestramento.** I modelli di chat vengono addestrati a piacere alle persone (RLHF) e, secondo le osservazioni di TypeSafe, questo incoraggia accondiscendenza ed errori espressi con sicurezza. Uno dei coautori di RLHF, Diogo Almeida, è cofondatore di TypeSafe.\n\nIl nome richiama il «Sistema 1» del libro di Daniel Kahneman «Pensieri lenti e veloci»: il giudizio intuitivo rapido contrapposto al pensiero lento e deliberato del «Sistema 2». Jev è stato creato per giudizi rapidi e circoscritti.\n\n### Tre tipi di domanda\n\nUna domanda è un singolo giudizio sullo stato; la risposta è un valore che il codice confronta con una soglia, ordina o trasmette al passaggio successivo.\n\n1. **Choice — scelta di un'opzione.** Reparto per una richiesta, categoria di un prodotto, lingua di un frammento di codice. Le opzioni sono un dizionario «opzione → descrizione», fino a 255 voci. La risposta comprende il `choice` scelto, le `probabilities` di tutte le opzioni, con somma 1, e la confidenza `confidence`. Se l'elenco può non coprire tutti i casi, aggiungere «altro» o «nessuna delle opzioni».\n2. **Score — valutazione su una scala.** Posizione su una scala ordinata descritta dall'utente: gravità di un errore, irritazione del cliente, livello di una competenza. Da 2 a 10 livelli, dal più basso al più alto; il modello valuta ogni livello separatamente, senza vederne numero e livelli vicini. La risposta comprende `score`, somma dei numeri dei livelli moltiplicati per le rispettive probabilità, quindi il valore può cadere tra i livelli, `legend` con le descrizioni dei livelli, `probabilities` e `confidence`.\n3. **Noul — sì o no.** Determina se un'affermazione è vera. La risposta `noul` è la probabilità del «sì», da 0 a 1: vicino a 1 indica un «sì» sicuro, vicino a 0 un «no» sicuro, vicino a 0,5 il modello è incerto. Non esiste un `confidence` separato: un solo numero descrive interamente la risposta. Il `criteria` facoltativo precisa cosa considerare «sì» e cosa «no».\n\nCome scegliere: opzioni note senza ordine — choice; gradini di uno spettro — score; semplice «sì/no» in cui conta la probabilità stessa — noul. Noul 0,5 indica uguali probabilità di «sì» e «no», non un «livello medio»: il grado viene misurato da score. Tra due tipi adatti, scegliere quello su cui il codice agisce subito: choice per le diramazioni, score per la soglia, noul per `if`.\n\nI tipi possono essere combinati in una sola richiesta. La risposta è sempre limitata alle opzioni definite e non dipende dalle altre domande: si possono aggiungere e rimuovere domande senza modificare le altre risposte.\n\n### Stato\n\nLo stato è ciò che il modello valuta: messaggio di un cliente, segmento di documento, record di una base di dati o stato dell'applicazione.\n\n- **Stringa**, quando c'è un unico testo: messaggio, articolo o estratto.\n- **Oggetto**, per campi nominati, record collegati o stato dell'applicazione. TypeSafe consiglia un oggetto per la maggior parte delle richieste: ogni parte ha un nome comprensibile.\n- **Array**, per una sequenza di messaggi o record.\n\nPrepararlo come materiale per esperti: includere insieme conversazione, ordine e regole dei resi se la decisione richiede di confrontarli. Conservare il contenuto nello stato e i giudizi nelle domande. Se una domanda riguarda una parte dello stato, indicarne il percorso tra backtick nella domanda, per esempio `ticket.messages[0].text`.\n\n### Come formulare le domande\n\n- **Un giudizio rapido per domanda.** Una buona domanda è quella a cui una persona competente, con il contesto necessario, risponde in un secondo: «Il messaggio esprime urgenza?». «Analizza il messaggio e decidi cosa fare» è già ragionamento lento e va diviso in domande semplici.\n- **L'intera domanda in `instructions`.** La chiave della domanda, per esempio `refund_requested`, serve soltanto al codice e non viene trasmessa al modello.\n- **Tutte le domande sullo stesso stato in una richiesta.** Il modello le valuta in parallelo: secondo TypeSafe, le domande aggiuntive aumentano pochissimo il tempo di risposta e costano soltanto i propri token. Una domanda «per ogni eventualità» costa quasi nulla; il codice decide quali risposte servono.\n- **Un giudizio complesso diviso in parti.** Invece di «valuta la candidatura della startup», chiedere separatamente dimensione del mercato, fattibilità tecnica e differenze dai concorrenti, poi calcolare il risultato nel codice con pesi. Se cambiano le priorità, cambiare i pesi, non riscrivere la domanda.\n- **Domande dipendenti in una seconda richiesta.** Le risposte della stessa richiesta non costituiscono contesto l'una per l'altra. Una seconda richiesta serve soltanto quando non può essere costruita senza la prima risposta: occorre caricare dati oppure scegliere opzioni per la domanda successiva.\n- **Una domanda lunga come oggetto.** `instructions` e `criteria` sono normalmente stringhe, ma possono essere un oggetto o un array: la domanda in un campo, i dati in altri. È utile per confrontare un curriculum con i record di una base di dati mediante una sola domanda.\n\n### Confidenza\n\nPer choice e score, `confidence` da 0 a 1 mostra quanto la probabilità sia concentrata su una risposta: 1 significa tutta su una sola opzione, 0 ugualmente distribuita su tutte. Per score, un livello vicino riduce la confidenza meno di uno distante. Per noul, la confidenza è il valore stesso: più è distante da 0,5, più la risposta è sicura.\n\nTypeSafe consiglia tre intervalli:\n\n1. **Confidenza alta**, agire automaticamente.\n2. **Media**, agire con cautela, per esempio chiedendo conferma all'utente.\n3. **Bassa**, affidare il caso a una persona, precisare la richiesta o collegare un percorso alternativo, per esempio un modello di ragionamento più potente.\n\nPiù un errore costa, più la soglia deve essere rigorosa: per azioni irreversibili deve essere più alta che per la lettura. La risposta indica cosa scegliere, la confidenza se conviene agire. Le soglie vanno scelte sui propri dati, confrontando confidenza e precisione.\n\n### Come costruire un sistema attorno a Jev\n\nJev non è pensato per agenti che scelgono da soli il passaggio successivo e possono deviare a ogni ciclo, ma per programmi in cui il codice controlla il processo e il modello risponde a domande semantiche circoscritte. Otto passaggi di progettazione secondo TypeSafe:\n\n1. Fare con il codice tutto ciò che si può fare con il codice: in modo affidabile ed economico.\n2. Nello stato soltanto ciò che serve alle domande correnti; fatti aggiornati dalla propria base di conoscenza, non dalla memoria del modello.\n3. Struttura nello stato: JSON annidato e, nella domanda, il percorso al campo necessario tra backtick, se riduce l'ambiguità.\n4. Domande il più possibile circoscritte e concrete: secondo TypeSafe, forse la regola principale; una domanda ampia nasconde più giudizi dietro una sola risposta.\n5. Struttura nelle domande: la domanda stessa breve; spiegazioni, esempi e valori della propria base di dati in campi vicini dell'oggetto `instructions` o `criteria`, non in un'unica stringa lunga.\n6. Molte domande indipendenti sullo stesso stato in una richiesta: più utilità per ogni dollaro.\n7. Il codice unisce le risposte tramite regole, somma ponderata oppure come caratteristiche per un modello classico di apprendimento automatico.\n8. Diramazione in base alla confidenza: casi incerti a una persona o a un modello di ragionamento.\n\nJev non è una chat né un modello di completamento del codice e non può sostituire un modello linguistico in un agente di programmazione. Un agente può però scrivere il codice che chiama Jev dove serve una risposta rapida e calibrata.\n\n### Dove viene utilizzato\n\n- **Automazione in background**, decisioni eseguite un milione di volte senza una persona presente.\n- **Tempo reale**, secondo TypeSafe, la maggior parte delle richieste viene eseguita in circa 100 ms: sufficiente per elaborazione immediata e interfacce.\n- **Grandi dati**, ricerca in corpus enormi, annotazione dei log di lavoro degli agenti e caratteristiche per previsioni.\n- **Verifica di altri modelli**, richieste, estrazioni, ragionamenti e chiamate di strumenti: aggiramento dei limiti, errori nelle citazioni e invenzioni.\n- **Ricerca e ranking**, rilevanza della coppia «richiesta — candidato», riordinamento e selezione del contesto.\n- **Diramazione per intento**, cosa vuole l'utente e quale gestore serve: logica semplice, modello specialistico o persona; tema, complessità e rischio determinano a quale modello linguistico affidare la richiesta.\n- **Verifiche di protezione**, input, output e chiamate di strumenti del modello linguistico: istruzioni iniettate, violazioni delle regole e fuga di dati personali.\n- **Supporto**, tema e intento della richiesta, urgenza, irritazione, rischio di abbandono, richiesta di rimborso e coda.\n- **Moderazione**, secondo le regole della piattaforma: tossicità, molestie, spam, frodi, consigli pericolosi e dati personali; in base a gravità e confidenza, consentire, avvertire, verificare o bloccare.\n- **Settori**, sinistri assicurativi, indagini finanziarie e KYC, contratti e pubblicità, schede di prodotti, selezione del personale, lead, giochi, rischi, previsione della domanda, grafi di conoscenza, rassegne scientifiche e verifiche semantiche del codice nella CI.\n\n### Caratteristiche\n\n- **`jev-latest`** è l'alias dell'ultima versione stabile, attualmente Jev 1.13; la versione che ha risposto compare nel campo `model`, per esempio `jev-1.13.0`. Con una nuova versione l'alias passa a essa e le risposte possono cambiare senza modifiche da parte dell'utente: monitorare il campo se le soglie sono state scelte per una versione.\n- **Contesto**, 64K token per richiesta: stato e tutte le domande insieme; stato con la domanda più lunga fino a 32K. Il modello legge lo stato una volta e verifica tutte le domande su di esso in parallelo.\n- **Input**, soltanto testo: stringa, oggetto JSON o array di testi. Immagini, audio e video non sono ancora supportati: convertirli prima in testo.\n- **Lingua**, la lingua principale dell'addestramento è l'inglese e attualmente è quella con la precisione maggiore. Il modello accetta altre lingue, tra cui cinese, giapponese e coreano, ma con precisione inferiore: verificare sui propri dati.\n- **Prezzi e fatturazione in Ailoot API** — le condizioni dipendono dal metodo scelto e sono indicate nella relativa scheda.\n- **Personalizzazione**, Jev non viene ulteriormente addestrato sui dati del cliente: i propri materiali vanno in `state`, le regole dell'ambito in `instructions` e `criteria`.\n- **Dati**, TypeSafe dichiara che Jev non viene addestrato su richieste e risposte dei clienti.\n\n### Limiti noti di Jev 1.13\n\nTypeSafe elenca apertamente i limiti della versione corrente e promette di correggerne molti nelle successive. Il modello è rapido, calibrato e dà buoni giudizi di buon senso, ma:\n\n1. **Legge letteralmente.** Risponde alla domanda scritta, non a quella implicita: precisazioni, negazioni e condizioni non esplicite vengono interpretate letteralmente. Scrivere condizioni esatte e casi limite in `criteria`; dividere un'interpretazione inevitabile in due domande letterali.\n2. **Non è una calcolatrice.** Il conteggio di caratteri, ripetizioni ed elementi di un elenco è inaffidabile e l'errore cresce con le dimensioni: contare nel codice, con una domanda per candidato. Il modello comprende colori in hex o RGB meno bene dei nomi. `score` è adatto a una soglia, non a un numero esatto tra i livelli.\n3. **Date e tempi.** Quale data preceda un'altra, quanto tempo intercorra e se una data rientri in un periodo sono valutazioni inaffidabili, soprattutto con formati misti e date relative. Estrarre le parti della data tramite choice, con l'opzione «non indicato», e confrontarle nel codice.\n4. **Formulazioni indirette.** Doppie negazioni e domande su una proprietà di una proprietà riducono la precisione. Scrivere direttamente e chiamare per nome le parti dello stato.\n5. **Elementi superflui nello stato.** Testo estraneo riduce la precisione. Filtrare nel codice oppure, se non è possibile, scartare ciò che è irrilevante con domande noul.\n6. **Testo ostile.** Per impostazione predefinita il modello non si aspetta insidie nello stato: un'istruzione iniettata o un testo che contesta la propria classificazione può spostare la risposta. Scrivere criteri precisi e verificare i casi limite prima dell'avvio.\n7. **Contraddizioni.** Se `instructions` e `criteria` chiedono cose diverse, per esempio descrivendo il «sì» di noul come «no», la precisione diminuisce. I criteri sono una continuazione della domanda.\n8. **Ordine delle opzioni.** Talvolta il modello tende alla prima opzione di choice. Riordinare le opzioni e verificare che la risposta non cambi.\n9. **Generazione.** Jev non è stato addestrato a scrivere testo. Per estrarre dati, trovare i candidati con un'espressione regolare o un modello generativo e lasciare a Jev la scelta corretta tramite choice.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "61656c3b843247b0d3ea8cef3bd1ea91ba361f54e6e8279ee041513d498a863d",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "it",
  "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=\"Chiudi\">×</button></div><div class=\"idline\"><span>TypeSafe /</span><code>jev-latest</code><button type=\"button\" id=\"copy-id\">Copia ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Sezioni della scheda del modello\"><button type=\"button\" data-card-jump=\"overview\">Introduzione</button><button type=\"button\" data-card-jump=\"methods\">Input e metodi</button><button type=\"button\" data-card-jump=\"pricing\">Tariffe</button><button type=\"button\" data-card-jump=\"examples\">Esempi</button><button type=\"button\" data-card-jump=\"results\">Risultati</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metodi API\"><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\">Introduzione</h3><p class=\"mdesc-full\">Modello decisionale di TypeSafe: non scrive testo, ma risponde a domande tipizzate su testo o JSON, con scelta di un&#39;opzione, valutazione su una scala o «sì/no» con probabilità. È adatto a instradamento, smistamento delle richieste, moderazione e scoring; tutte le domande della stessa richiesta vengono valutate in parallelo.</p><dl class=\"card-io\" data-card-io><div><dt>Input accettati</dt><dd>Testo</dd></div><div><dt>Risultati</dt><dd>structured</dd></div></dl><details class=\"card-about\"><summary>Informazioni sul modello</summary><p class=\"note-s\" data-model-method-boundary>Questa descrizione illustra le funzionalità del modello. Gli input, gli output e le opzioni disponibili in Ailoot per il metodo selezionato sono elencati di seguito.</p><div class=\"mabout\" id=\"m-about\"><p>Jev è il modello di punta di TypeSafe e il primo modello della nuova classe <strong>System One</strong>. Non scrive testo, ma prende rapidamente decisioni utilizzabili subito da un programma: si forniscono uno <strong>stato</strong> (<code>state</code>), testo o JSON, e un insieme di <strong>domande</strong>, ricevendo valori tipizzati con probabilità calibrate.</p><p>I modelli linguistici scrivono parole per le persone; secondo TypeSafe, Jev è più vicino al codice: la risposta arriva subito nella forma richiesta dal codice, ad alta velocità e senza valori al di fuori delle opzioni definite. Il modello è progettato per dare risposte stabili quando le richieste vengono ripetute.</p><h4>Come System One si distingue da un modello linguistico</h4><ul><li><strong>Non genera.</strong> Jev non scrive risposte all&#39;utente, non scrive codice e non spiega il percorso del ragionamento. Le risposte possibili vengono definite dall&#39;utente tramite uno dei tre tipi di domanda.</li><li><strong>È addestrato a decisioni calibrate.</strong> TypeSafe addestra il modello con RLCD (Reinforcement Learning for Calibrated Decisions): le probabilità vengono adattate agli esiti reali e rispecchiano l&#39;incertezza. Tra molte risposte con probabilità 0,8, circa l&#39;80% dovrebbe risultare corretto. La calibrazione è una proprietà di un campione ampio, non una garanzia di correttezza di una singola risposta.</li><li><strong>Ha un altro obiettivo di addestramento.</strong> I modelli di chat vengono addestrati a piacere alle persone (RLHF) e, secondo le osservazioni di TypeSafe, questo incoraggia accondiscendenza ed errori espressi con sicurezza. Uno dei coautori di RLHF, Diogo Almeida, è cofondatore di TypeSafe.</li></ul><p>Il nome richiama il «Sistema 1» del libro di Daniel Kahneman «Pensieri lenti e veloci»: il giudizio intuitivo rapido contrapposto al pensiero lento e deliberato del «Sistema 2». Jev è stato creato per giudizi rapidi e circoscritti.</p><h4>Tre tipi di domanda</h4><p>Una domanda è un singolo giudizio sullo stato; la risposta è un valore che il codice confronta con una soglia, ordina o trasmette al passaggio successivo.</p><ol><li><strong>Choice — scelta di un&#39;opzione.</strong> Reparto per una richiesta, categoria di un prodotto, lingua di un frammento di codice. Le opzioni sono un dizionario «opzione → descrizione», fino a 255 voci. La risposta comprende il <code>choice</code> scelto, le <code>probabilities</code> di tutte le opzioni, con somma 1, e la confidenza <code>confidence</code>. Se l&#39;elenco può non coprire tutti i casi, aggiungere «altro» o «nessuna delle opzioni».</li><li><strong>Score — valutazione su una scala.</strong> Posizione su una scala ordinata descritta dall&#39;utente: gravità di un errore, irritazione del cliente, livello di una competenza. Da 2 a 10 livelli, dal più basso al più alto; il modello valuta ogni livello separatamente, senza vederne numero e livelli vicini. La risposta comprende <code>score</code>, somma dei numeri dei livelli moltiplicati per le rispettive probabilità, quindi il valore può cadere tra i livelli, <code>legend</code> con le descrizioni dei livelli, <code>probabilities</code> e <code>confidence</code>.</li><li><strong>Noul — sì o no.</strong> Determina se un&#39;affermazione è vera. La risposta <code>noul</code> è la probabilità del «sì», da 0 a 1: vicino a 1 indica un «sì» sicuro, vicino a 0 un «no» sicuro, vicino a 0,5 il modello è incerto. Non esiste un <code>confidence</code> separato: un solo numero descrive interamente la risposta. Il <code>criteria</code> facoltativo precisa cosa considerare «sì» e cosa «no».</li></ol><p>Come scegliere: opzioni note senza ordine — choice; gradini di uno spettro — score; semplice «sì/no» in cui conta la probabilità stessa — noul. Noul 0,5 indica uguali probabilità di «sì» e «no», non un «livello medio»: il grado viene misurato da score. Tra due tipi adatti, scegliere quello su cui il codice agisce subito: choice per le diramazioni, score per la soglia, noul per <code>if</code>.</p><p>I tipi possono essere combinati in una sola richiesta. La risposta è sempre limitata alle opzioni definite e non dipende dalle altre domande: si possono aggiungere e rimuovere domande senza modificare le altre risposte.</p><h4>Stato</h4><p>Lo stato è ciò che il modello valuta: messaggio di un cliente, segmento di documento, record di una base di dati o stato dell&#39;applicazione.</p><ul><li><strong>Stringa</strong>, quando c&#39;è un unico testo: messaggio, articolo o estratto.</li><li><strong>Oggetto</strong>, per campi nominati, record collegati o stato dell&#39;applicazione. TypeSafe consiglia un oggetto per la maggior parte delle richieste: ogni parte ha un nome comprensibile.</li><li><strong>Array</strong>, per una sequenza di messaggi o record.</li></ul><p>Prepararlo come materiale per esperti: includere insieme conversazione, ordine e regole dei resi se la decisione richiede di confrontarli. Conservare il contenuto nello stato e i giudizi nelle domande. Se una domanda riguarda una parte dello stato, indicarne il percorso tra backtick nella domanda, per esempio <code>ticket.messages[0].text</code>.</p><h4>Come formulare le domande</h4><ul><li><strong>Un giudizio rapido per domanda.</strong> Una buona domanda è quella a cui una persona competente, con il contesto necessario, risponde in un secondo: «Il messaggio esprime urgenza?». «Analizza il messaggio e decidi cosa fare» è già ragionamento lento e va diviso in domande semplici.</li><li><strong>L&#39;intera domanda in <code>instructions</code>.</strong> La chiave della domanda, per esempio <code>refund_requested</code>, serve soltanto al codice e non viene trasmessa al modello.</li><li><strong>Tutte le domande sullo stesso stato in una richiesta.</strong> Il modello le valuta in parallelo: secondo TypeSafe, le domande aggiuntive aumentano pochissimo il tempo di risposta e costano soltanto i propri token. Una domanda «per ogni eventualità» costa quasi nulla; il codice decide quali risposte servono.</li><li><strong>Un giudizio complesso diviso in parti.</strong> Invece di «valuta la candidatura della startup», chiedere separatamente dimensione del mercato, fattibilità tecnica e differenze dai concorrenti, poi calcolare il risultato nel codice con pesi. Se cambiano le priorità, cambiare i pesi, non riscrivere la domanda.</li><li><strong>Domande dipendenti in una seconda richiesta.</strong> Le risposte della stessa richiesta non costituiscono contesto l&#39;una per l&#39;altra. Una seconda richiesta serve soltanto quando non può essere costruita senza la prima risposta: occorre caricare dati oppure scegliere opzioni per la domanda successiva.</li><li><strong>Una domanda lunga come oggetto.</strong> <code>instructions</code> e <code>criteria</code> sono normalmente stringhe, ma possono essere un oggetto o un array: la domanda in un campo, i dati in altri. È utile per confrontare un curriculum con i record di una base di dati mediante una sola domanda.</li></ul><h4>Confidenza</h4><p>Per choice e score, <code>confidence</code> da 0 a 1 mostra quanto la probabilità sia concentrata su una risposta: 1 significa tutta su una sola opzione, 0 ugualmente distribuita su tutte. Per score, un livello vicino riduce la confidenza meno di uno distante. Per noul, la confidenza è il valore stesso: più è distante da 0,5, più la risposta è sicura.</p><p>TypeSafe consiglia tre intervalli:</p><ol><li><strong>Confidenza alta</strong>, agire automaticamente.</li><li><strong>Media</strong>, agire con cautela, per esempio chiedendo conferma all&#39;utente.</li><li><strong>Bassa</strong>, affidare il caso a una persona, precisare la richiesta o collegare un percorso alternativo, per esempio un modello di ragionamento più potente.</li></ol><p>Più un errore costa, più la soglia deve essere rigorosa: per azioni irreversibili deve essere più alta che per la lettura. La risposta indica cosa scegliere, la confidenza se conviene agire. Le soglie vanno scelte sui propri dati, confrontando confidenza e precisione.</p><h4>Come costruire un sistema attorno a Jev</h4><p>Jev non è pensato per agenti che scelgono da soli il passaggio successivo e possono deviare a ogni ciclo, ma per programmi in cui il codice controlla il processo e il modello risponde a domande semantiche circoscritte. Otto passaggi di progettazione secondo TypeSafe:</p><ol><li>Fare con il codice tutto ciò che si può fare con il codice: in modo affidabile ed economico.</li><li>Nello stato soltanto ciò che serve alle domande correnti; fatti aggiornati dalla propria base di conoscenza, non dalla memoria del modello.</li><li>Struttura nello stato: JSON annidato e, nella domanda, il percorso al campo necessario tra backtick, se riduce l&#39;ambiguità.</li><li>Domande il più possibile circoscritte e concrete: secondo TypeSafe, forse la regola principale; una domanda ampia nasconde più giudizi dietro una sola risposta.</li><li>Struttura nelle domande: la domanda stessa breve; spiegazioni, esempi e valori della propria base di dati in campi vicini dell&#39;oggetto <code>instructions</code> o <code>criteria</code>, non in un&#39;unica stringa lunga.</li><li>Molte domande indipendenti sullo stesso stato in una richiesta: più utilità per ogni dollaro.</li><li>Il codice unisce le risposte tramite regole, somma ponderata oppure come caratteristiche per un modello classico di apprendimento automatico.</li><li>Diramazione in base alla confidenza: casi incerti a una persona o a un modello di ragionamento.</li></ol><p>Jev non è una chat né un modello di completamento del codice e non può sostituire un modello linguistico in un agente di programmazione. Un agente può però scrivere il codice che chiama Jev dove serve una risposta rapida e calibrata.</p><h4>Dove viene utilizzato</h4><ul><li><strong>Automazione in background</strong>, decisioni eseguite un milione di volte senza una persona presente.</li><li><strong>Tempo reale</strong>, secondo TypeSafe, la maggior parte delle richieste viene eseguita in circa 100 ms: sufficiente per elaborazione immediata e interfacce.</li><li><strong>Grandi dati</strong>, ricerca in corpus enormi, annotazione dei log di lavoro degli agenti e caratteristiche per previsioni.</li><li><strong>Verifica di altri modelli</strong>, richieste, estrazioni, ragionamenti e chiamate di strumenti: aggiramento dei limiti, errori nelle citazioni e invenzioni.</li><li><strong>Ricerca e ranking</strong>, rilevanza della coppia «richiesta — candidato», riordinamento e selezione del contesto.</li><li><strong>Diramazione per intento</strong>, cosa vuole l&#39;utente e quale gestore serve: logica semplice, modello specialistico o persona; tema, complessità e rischio determinano a quale modello linguistico affidare la richiesta.</li><li><strong>Verifiche di protezione</strong>, input, output e chiamate di strumenti del modello linguistico: istruzioni iniettate, violazioni delle regole e fuga di dati personali.</li><li><strong>Supporto</strong>, tema e intento della richiesta, urgenza, irritazione, rischio di abbandono, richiesta di rimborso e coda.</li><li><strong>Moderazione</strong>, secondo le regole della piattaforma: tossicità, molestie, spam, frodi, consigli pericolosi e dati personali; in base a gravità e confidenza, consentire, avvertire, verificare o bloccare.</li><li><strong>Settori</strong>, sinistri assicurativi, indagini finanziarie e KYC, contratti e pubblicità, schede di prodotti, selezione del personale, lead, giochi, rischi, previsione della domanda, grafi di conoscenza, rassegne scientifiche e verifiche semantiche del codice nella CI.</li></ul><h4>Caratteristiche</h4><ul><li><strong><code>jev-latest</code></strong> è l&#39;alias dell&#39;ultima versione stabile, attualmente Jev 1.13; la versione che ha risposto compare nel campo <code>model</code>, per esempio <code>jev-1.13.0</code>. Con una nuova versione l&#39;alias passa a essa e le risposte possono cambiare senza modifiche da parte dell&#39;utente: monitorare il campo se le soglie sono state scelte per una versione.</li><li><strong>Contesto</strong>, 64K token per richiesta: stato e tutte le domande insieme; stato con la domanda più lunga fino a 32K. Il modello legge lo stato una volta e verifica tutte le domande su di esso in parallelo.</li><li><strong>Input</strong>, soltanto testo: stringa, oggetto JSON o array di testi. Immagini, audio e video non sono ancora supportati: convertirli prima in testo.</li><li><strong>Lingua</strong>, la lingua principale dell&#39;addestramento è l&#39;inglese e attualmente è quella con la precisione maggiore. Il modello accetta altre lingue, tra cui cinese, giapponese e coreano, ma con precisione inferiore: verificare sui propri dati.</li><li><strong>Prezzi e fatturazione in Ailoot API</strong> — le condizioni dipendono dal metodo scelto e sono indicate nella relativa scheda.</li><li><strong>Personalizzazione</strong>, Jev non viene ulteriormente addestrato sui dati del cliente: i propri materiali vanno in <code>state</code>, le regole dell&#39;ambito in <code>instructions</code> e <code>criteria</code>.</li><li><strong>Dati</strong>, TypeSafe dichiara che Jev non viene addestrato su richieste e risposte dei clienti.</li></ul><h4>Limiti noti di Jev 1.13</h4><p>TypeSafe elenca apertamente i limiti della versione corrente e promette di correggerne molti nelle successive. Il modello è rapido, calibrato e dà buoni giudizi di buon senso, ma:</p><ol><li><strong>Legge letteralmente.</strong> Risponde alla domanda scritta, non a quella implicita: precisazioni, negazioni e condizioni non esplicite vengono interpretate letteralmente. Scrivere condizioni esatte e casi limite in <code>criteria</code>; dividere un&#39;interpretazione inevitabile in due domande letterali.</li><li><strong>Non è una calcolatrice.</strong> Il conteggio di caratteri, ripetizioni ed elementi di un elenco è inaffidabile e l&#39;errore cresce con le dimensioni: contare nel codice, con una domanda per candidato. Il modello comprende colori in hex o RGB meno bene dei nomi. <code>score</code> è adatto a una soglia, non a un numero esatto tra i livelli.</li><li><strong>Date e tempi.</strong> Quale data preceda un&#39;altra, quanto tempo intercorra e se una data rientri in un periodo sono valutazioni inaffidabili, soprattutto con formati misti e date relative. Estrarre le parti della data tramite choice, con l&#39;opzione «non indicato», e confrontarle nel codice.</li><li><strong>Formulazioni indirette.</strong> Doppie negazioni e domande su una proprietà di una proprietà riducono la precisione. Scrivere direttamente e chiamare per nome le parti dello stato.</li><li><strong>Elementi superflui nello stato.</strong> Testo estraneo riduce la precisione. Filtrare nel codice oppure, se non è possibile, scartare ciò che è irrilevante con domande noul.</li><li><strong>Testo ostile.</strong> Per impostazione predefinita il modello non si aspetta insidie nello stato: un&#39;istruzione iniettata o un testo che contesta la propria classificazione può spostare la risposta. Scrivere criteri precisi e verificare i casi limite prima dell&#39;avvio.</li><li><strong>Contraddizioni.</strong> Se <code>instructions</code> e <code>criteria</code> chiedono cose diverse, per esempio descrivendo il «sì» di noul come «no», la precisione diminuisce. I criteri sono una continuazione della domanda.</li><li><strong>Ordine delle opzioni.</strong> Talvolta il modello tende alla prima opzione di choice. Riordinare le opzioni e verificare che la risposta non cambi.</li><li><strong>Generazione.</strong> Jev non è stato addestrato a scrivere testo. Per estrarre dati, trovare i candidati con un&#39;espressione regolare o un modello generativo e lasciare a Jev la scelta corretta tramite choice.</li></ol></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Disponibile in Ailoot · input e metodi</h3><details class=\"card-method\" open><summary><b>Ailoot · System One</b> <code>POST /v1/systemone</code></summary><dl class=\"method-capabilities\"><div><dt>Tipi di input</dt><dd><code>text</code></dd></div><div><dt>Tipi di output</dt><dd><code>structured</code></dd></div><div><dt>Contesto</dt><dd>64.000 tokens</dd></div><div><dt>Formato di output</dt><dd>json</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Campo</th><th>Tipo</th><th>Requisito</th><th>Valori e limiti</th><th>Predefinito</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obbligatorio</td><td data-cell-label=\"Valori e limiti\"><span class=\"card-cell-label\">Valori e limiti</span><div>jev-latest</div></td><td data-cell-label=\"Predefinito\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinito</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">state</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string|object|array</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obbligatorio</td><td data-cell-label=\"Valori e limiti\"><span class=\"card-cell-label\">Valori e limiti</span></td><td data-cell-label=\"Predefinito\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinito</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">questions</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>object</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obbligatorio</td><td data-cell-label=\"Valori e limiti\"><span class=\"card-cell-label\">Valori e limiti</span><div>Numero minimo di campi dell’oggetto: 1</div></td><td data-cell-label=\"Predefinito\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinito</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">questions.&lt;id&gt;.type</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obbligatorio</td><td data-cell-label=\"Valori e limiti\"><span class=\"card-cell-label\">Valori e limiti</span><div>noul, choice, score</div></td><td data-cell-label=\"Predefinito\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinito</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">questions.&lt;id&gt;.instructions</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string|object|array|null</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Facoltativo</td><td data-cell-label=\"Valori e limiti\"><span class=\"card-cell-label\">Valori e limiti</span></td><td data-cell-label=\"Predefinito\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinito</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">questions.&lt;id&gt;.criteria</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>object|array|null</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Facoltativo</td><td data-cell-label=\"Valori e limiti\"><span class=\"card-cell-label\">Valori e limiti</span><div>Condizioni: noul: descrizioni true/false facoltative e nullable; choice: oggetto di criteri; score: array di criteri non vuoto</div></td><td data-cell-label=\"Predefinito\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinito</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">stream</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>boolean|null</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Facoltativo</td><td data-cell-label=\"Valori e limiti\"><span class=\"card-cell-label\">Valori e limiti</span><div>false, null</div></td><td data-cell-label=\"Predefinito\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinito</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Combinazioni di materiali in input</summary><p class=\"note-s\"><b>noul</b> · Obbligatorio: state, questions.&lt;id&gt;.type=noul</p><p class=\"note-s\"><b>choice</b> · Obbligatorio: state, questions.&lt;id&gt;.type=choice, criteria object</p><p class=\"note-s\"><b>score</b> · Obbligatorio: state, questions.&lt;id&gt;.type=score, nonemptycriteriaarray</p></details><details class=\"note-s\" data-method-contract><summary>Parametri e ciclo di vita del metodo</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parametro</th><th>Contratto</th></tr></thead><tbody><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>material_types</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>text</td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>required</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>model, state, questions</td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>optional_controls</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>null</td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>content_type</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>application/json</td></tr></tbody></table></div><p>Ciclo di vita: <code>exact retained published method</code></p><p class=\"note-s\">Le strutture dei metodi e gli ID sono esatti; la capacità del fornitore è distinta dall’ammissione delle richieste.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tariffe</h3><h4>Tariffe dei metodi Ailoot</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>Input</dt><dd>≈0,000084 USD <em>/ 1K</em></dd></div><div><dt>Output</dt><dd>0,00 USD <em>/ 1K</em></dd></div></dl></section><p class=\"note-s\">Ailoot prenota un importo stimato prima di una richiesta. Dopo il risultato, addebita il costo finale in base all’utilizzo misurato. Per lo streaming, l’addebito usa il record finale di utilizzo. <a href=\"/docs/it/billing/reserve/\">Come funzionano la prenotazione e l’addebito finale →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Esempi di richieste</h3><h4>Ailoot · System One</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Varianti di codice\"><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\">Esempio di classificazione</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copia il codice\"><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\">Ricevi e salva i risultati</h3><h4>Ailoot · System One</h4><p class=\"note-s\">json</p><div class=\"card-result-process\" data-all-results><h5>Conserva tutti i risultati completati</h5><p class=\"note-s\">Conserva ogni risposta, file e parte di contenuto restituiti per intero.</p><p class=\"note-s\">Conserva ogni risposta associata all&#39;ID della domanda fornito, la probabilità e la legenda; la formula di confidenza che usa n richiede n&gt;1, senza stabilire una regola API sul numero minimo di scelte.</p></div><details class=\"card-about\" data-output-fields><summary>Campi della risposta</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Campo</th><th>Tipo</th></tr></thead><tbody><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">answers.&lt;id&gt;.type</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>string</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">answers.&lt;id&gt;.noul</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>number</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">answers.&lt;id&gt;.choice</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>string</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">answers.&lt;id&gt;.score</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>number</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">answers.&lt;id&gt;.confidence</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>number</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">answers.&lt;id&gt;.probabilities</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>object</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">answers.&lt;id&gt;.legend</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>object</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>object</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Errori e passaggi successivi</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Risposta</th><th>Condizione</th><th>Passaggio successivo</th></tr></thead><tbody><tr><th data-cell-label=\"Risposta\" scope=\"row\"><span class=\"card-cell-label\">Risposta</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Condizione\"><span class=\"card-cell-label\">Condizione</span>Campi obbligatori, rappresentazione del materiale o valore del parametro non validi</td><td data-cell-label=\"Passaggio successivo\"><span class=\"card-cell-label\">Passaggio successivo</span>Correggi i campi indicati prima di una nuova richiesta di creazione.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias del modello</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 dei percorsi dei metodi</h4><p class=\"note-s\">Usa i percorsi dei metodi indicati sopra.</p><h4>ID di chiamata correlati</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": "Campi obbligatori, rappresentazione del materiale o valore del parametro non validi",
                "http_status": 400,
                "recovery": "Correggi i campi indicati prima di una nuova richiesta di creazione.",
                "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": "Conserva ogni risposta associata all'ID della domanda fornito, la probabilità e la legenda; la formula di confidenza che usa n richiede n>1, senza stabilire una regola API sul numero minimo di scelte.",
              "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: descrizioni true/false facoltative e nullable; choice: oggetto di criteri; score: array di criteri non vuoto",
                "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": [
            "Le strutture dei metodi e gli ID sono esatti; la capacità del fornitore è distinta dall’ammissione delle richieste."
          ],
          "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": "ba1719cd1a85de359fafdccda112c2ff7eb7765470e946056d0924396a187edc",
    "input_html_sha256": "d8e180e4b6ee78a73158314d21fa504147cd8f3e725b2071a0d6965cdb5407f7",
    "private_audit_sha256": "f711d111bc4c0d06358db2162c33200601cc6a613cbcf08698eadf50b1ae1ce7",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/it/jev-latest/",
    "description": "Modello decisionale di TypeSafe: non scrive testo, ma risponde a domande tipizzate su testo o JSON, con scelta di un'opzione, valutazione su una scala o «sì/no» con probabilità. È adatto a instradamento, smistamento delle richieste, moderazione e scoring; tutte le domande della stessa richiesta vengono valutate in parallelo.",
    "locale": "it",
    "md_url": "https://ailoot.ai/models/it/jev-latest/index.md",
    "title": "jev-latest — Ailoot",
    "url": "https://ailoot.ai/models/it/jev-latest/"
  },
  "rawModel": {
    "about": "Jev è il modello di punta di TypeSafe e il primo modello della nuova classe **System One**. Non scrive testo, ma prende rapidamente decisioni utilizzabili subito da un programma: si forniscono uno **stato** (`state`), testo o JSON, e un insieme di **domande**, ricevendo valori tipizzati con probabilità calibrate.\n\nI modelli linguistici scrivono parole per le persone; secondo TypeSafe, Jev è più vicino al codice: la risposta arriva subito nella forma richiesta dal codice, ad alta velocità e senza valori al di fuori delle opzioni definite. Il modello è progettato per dare risposte stabili quando le richieste vengono ripetute.\n\n### Come System One si distingue da un modello linguistico\n\n- **Non genera.** Jev non scrive risposte all'utente, non scrive codice e non spiega il percorso del ragionamento. Le risposte possibili vengono definite dall'utente tramite uno dei tre tipi di domanda.\n- **È addestrato a decisioni calibrate.** TypeSafe addestra il modello con RLCD (Reinforcement Learning for Calibrated Decisions): le probabilità vengono adattate agli esiti reali e rispecchiano l'incertezza. Tra molte risposte con probabilità 0,8, circa l'80% dovrebbe risultare corretto. La calibrazione è una proprietà di un campione ampio, non una garanzia di correttezza di una singola risposta.\n- **Ha un altro obiettivo di addestramento.** I modelli di chat vengono addestrati a piacere alle persone (RLHF) e, secondo le osservazioni di TypeSafe, questo incoraggia accondiscendenza ed errori espressi con sicurezza. Uno dei coautori di RLHF, Diogo Almeida, è cofondatore di TypeSafe.\n\nIl nome richiama il «Sistema 1» del libro di Daniel Kahneman «Pensieri lenti e veloci»: il giudizio intuitivo rapido contrapposto al pensiero lento e deliberato del «Sistema 2». Jev è stato creato per giudizi rapidi e circoscritti.\n\n### Tre tipi di domanda\n\nUna domanda è un singolo giudizio sullo stato; la risposta è un valore che il codice confronta con una soglia, ordina o trasmette al passaggio successivo.\n\n1. **Choice — scelta di un'opzione.** Reparto per una richiesta, categoria di un prodotto, lingua di un frammento di codice. Le opzioni sono un dizionario «opzione → descrizione», fino a 255 voci. La risposta comprende il `choice` scelto, le `probabilities` di tutte le opzioni, con somma 1, e la confidenza `confidence`. Se l'elenco può non coprire tutti i casi, aggiungere «altro» o «nessuna delle opzioni».\n2. **Score — valutazione su una scala.** Posizione su una scala ordinata descritta dall'utente: gravità di un errore, irritazione del cliente, livello di una competenza. Da 2 a 10 livelli, dal più basso al più alto; il modello valuta ogni livello separatamente, senza vederne numero e livelli vicini. La risposta comprende `score`, somma dei numeri dei livelli moltiplicati per le rispettive probabilità, quindi il valore può cadere tra i livelli, `legend` con le descrizioni dei livelli, `probabilities` e `confidence`.\n3. **Noul — sì o no.** Determina se un'affermazione è vera. La risposta `noul` è la probabilità del «sì», da 0 a 1: vicino a 1 indica un «sì» sicuro, vicino a 0 un «no» sicuro, vicino a 0,5 il modello è incerto. Non esiste un `confidence` separato: un solo numero descrive interamente la risposta. Il `criteria` facoltativo precisa cosa considerare «sì» e cosa «no».\n\nCome scegliere: opzioni note senza ordine — choice; gradini di uno spettro — score; semplice «sì/no» in cui conta la probabilità stessa — noul. Noul 0,5 indica uguali probabilità di «sì» e «no», non un «livello medio»: il grado viene misurato da score. Tra due tipi adatti, scegliere quello su cui il codice agisce subito: choice per le diramazioni, score per la soglia, noul per `if`.\n\nI tipi possono essere combinati in una sola richiesta. La risposta è sempre limitata alle opzioni definite e non dipende dalle altre domande: si possono aggiungere e rimuovere domande senza modificare le altre risposte.\n\n### Stato\n\nLo stato è ciò che il modello valuta: messaggio di un cliente, segmento di documento, record di una base di dati o stato dell'applicazione.\n\n- **Stringa**, quando c'è un unico testo: messaggio, articolo o estratto.\n- **Oggetto**, per campi nominati, record collegati o stato dell'applicazione. TypeSafe consiglia un oggetto per la maggior parte delle richieste: ogni parte ha un nome comprensibile.\n- **Array**, per una sequenza di messaggi o record.\n\nPrepararlo come materiale per esperti: includere insieme conversazione, ordine e regole dei resi se la decisione richiede di confrontarli. Conservare il contenuto nello stato e i giudizi nelle domande. Se una domanda riguarda una parte dello stato, indicarne il percorso tra backtick nella domanda, per esempio `ticket.messages[0].text`.\n\n### Come formulare le domande\n\n- **Un giudizio rapido per domanda.** Una buona domanda è quella a cui una persona competente, con il contesto necessario, risponde in un secondo: «Il messaggio esprime urgenza?». «Analizza il messaggio e decidi cosa fare» è già ragionamento lento e va diviso in domande semplici.\n- **L'intera domanda in `instructions`.** La chiave della domanda, per esempio `refund_requested`, serve soltanto al codice e non viene trasmessa al modello.\n- **Tutte le domande sullo stesso stato in una richiesta.** Il modello le valuta in parallelo: secondo TypeSafe, le domande aggiuntive aumentano pochissimo il tempo di risposta e costano soltanto i propri token. Una domanda «per ogni eventualità» costa quasi nulla; il codice decide quali risposte servono.\n- **Un giudizio complesso diviso in parti.** Invece di «valuta la candidatura della startup», chiedere separatamente dimensione del mercato, fattibilità tecnica e differenze dai concorrenti, poi calcolare il risultato nel codice con pesi. Se cambiano le priorità, cambiare i pesi, non riscrivere la domanda.\n- **Domande dipendenti in una seconda richiesta.** Le risposte della stessa richiesta non costituiscono contesto l'una per l'altra. Una seconda richiesta serve soltanto quando non può essere costruita senza la prima risposta: occorre caricare dati oppure scegliere opzioni per la domanda successiva.\n- **Una domanda lunga come oggetto.** `instructions` e `criteria` sono normalmente stringhe, ma possono essere un oggetto o un array: la domanda in un campo, i dati in altri. È utile per confrontare un curriculum con i record di una base di dati mediante una sola domanda.\n\n### Confidenza\n\nPer choice e score, `confidence` da 0 a 1 mostra quanto la probabilità sia concentrata su una risposta: 1 significa tutta su una sola opzione, 0 ugualmente distribuita su tutte. Per score, un livello vicino riduce la confidenza meno di uno distante. Per noul, la confidenza è il valore stesso: più è distante da 0,5, più la risposta è sicura.\n\nTypeSafe consiglia tre intervalli:\n\n1. **Confidenza alta**, agire automaticamente.\n2. **Media**, agire con cautela, per esempio chiedendo conferma all'utente.\n3. **Bassa**, affidare il caso a una persona, precisare la richiesta o collegare un percorso alternativo, per esempio un modello di ragionamento più potente.\n\nPiù un errore costa, più la soglia deve essere rigorosa: per azioni irreversibili deve essere più alta che per la lettura. La risposta indica cosa scegliere, la confidenza se conviene agire. Le soglie vanno scelte sui propri dati, confrontando confidenza e precisione.\n\n### Come costruire un sistema attorno a Jev\n\nJev non è pensato per agenti che scelgono da soli il passaggio successivo e possono deviare a ogni ciclo, ma per programmi in cui il codice controlla il processo e il modello risponde a domande semantiche circoscritte. Otto passaggi di progettazione secondo TypeSafe:\n\n1. Fare con il codice tutto ciò che si può fare con il codice: in modo affidabile ed economico.\n2. Nello stato soltanto ciò che serve alle domande correnti; fatti aggiornati dalla propria base di conoscenza, non dalla memoria del modello.\n3. Struttura nello stato: JSON annidato e, nella domanda, il percorso al campo necessario tra backtick, se riduce l'ambiguità.\n4. Domande il più possibile circoscritte e concrete: secondo TypeSafe, forse la regola principale; una domanda ampia nasconde più giudizi dietro una sola risposta.\n5. Struttura nelle domande: la domanda stessa breve; spiegazioni, esempi e valori della propria base di dati in campi vicini dell'oggetto `instructions` o `criteria`, non in un'unica stringa lunga.\n6. Molte domande indipendenti sullo stesso stato in una richiesta: più utilità per ogni dollaro.\n7. Il codice unisce le risposte tramite regole, somma ponderata oppure come caratteristiche per un modello classico di apprendimento automatico.\n8. Diramazione in base alla confidenza: casi incerti a una persona o a un modello di ragionamento.\n\nJev non è una chat né un modello di completamento del codice e non può sostituire un modello linguistico in un agente di programmazione. Un agente può però scrivere il codice che chiama Jev dove serve una risposta rapida e calibrata.\n\n### Dove viene utilizzato\n\n- **Automazione in background**, decisioni eseguite un milione di volte senza una persona presente.\n- **Tempo reale**, secondo TypeSafe, la maggior parte delle richieste viene eseguita in circa 100 ms: sufficiente per elaborazione immediata e interfacce.\n- **Grandi dati**, ricerca in corpus enormi, annotazione dei log di lavoro degli agenti e caratteristiche per previsioni.\n- **Verifica di altri modelli**, richieste, estrazioni, ragionamenti e chiamate di strumenti: aggiramento dei limiti, errori nelle citazioni e invenzioni.\n- **Ricerca e ranking**, rilevanza della coppia «richiesta — candidato», riordinamento e selezione del contesto.\n- **Diramazione per intento**, cosa vuole l'utente e quale gestore serve: logica semplice, modello specialistico o persona; tema, complessità e rischio determinano a quale modello linguistico affidare la richiesta.\n- **Verifiche di protezione**, input, output e chiamate di strumenti del modello linguistico: istruzioni iniettate, violazioni delle regole e fuga di dati personali.\n- **Supporto**, tema e intento della richiesta, urgenza, irritazione, rischio di abbandono, richiesta di rimborso e coda.\n- **Moderazione**, secondo le regole della piattaforma: tossicità, molestie, spam, frodi, consigli pericolosi e dati personali; in base a gravità e confidenza, consentire, avvertire, verificare o bloccare.\n- **Settori**, sinistri assicurativi, indagini finanziarie e KYC, contratti e pubblicità, schede di prodotti, selezione del personale, lead, giochi, rischi, previsione della domanda, grafi di conoscenza, rassegne scientifiche e verifiche semantiche del codice nella CI.\n\n### Caratteristiche\n\n- **`jev-latest`** è l'alias dell'ultima versione stabile, attualmente Jev 1.13; la versione che ha risposto compare nel campo `model`, per esempio `jev-1.13.0`. Con una nuova versione l'alias passa a essa e le risposte possono cambiare senza modifiche da parte dell'utente: monitorare il campo se le soglie sono state scelte per una versione.\n- **Contesto**, 64K token per richiesta: stato e tutte le domande insieme; stato con la domanda più lunga fino a 32K. Il modello legge lo stato una volta e verifica tutte le domande su di esso in parallelo.\n- **Input**, soltanto testo: stringa, oggetto JSON o array di testi. Immagini, audio e video non sono ancora supportati: convertirli prima in testo.\n- **Lingua**, la lingua principale dell'addestramento è l'inglese e attualmente è quella con la precisione maggiore. Il modello accetta altre lingue, tra cui cinese, giapponese e coreano, ma con precisione inferiore: verificare sui propri dati.\n- **Prezzi e fatturazione in Ailoot API** — le condizioni dipendono dal metodo scelto e sono indicate nella relativa scheda.\n- **Personalizzazione**, Jev non viene ulteriormente addestrato sui dati del cliente: i propri materiali vanno in `state`, le regole dell'ambito in `instructions` e `criteria`.\n- **Dati**, TypeSafe dichiara che Jev non viene addestrato su richieste e risposte dei clienti.\n\n### Limiti noti di Jev 1.13\n\nTypeSafe elenca apertamente i limiti della versione corrente e promette di correggerne molti nelle successive. Il modello è rapido, calibrato e dà buoni giudizi di buon senso, ma:\n\n1. **Legge letteralmente.** Risponde alla domanda scritta, non a quella implicita: precisazioni, negazioni e condizioni non esplicite vengono interpretate letteralmente. Scrivere condizioni esatte e casi limite in `criteria`; dividere un'interpretazione inevitabile in due domande letterali.\n2. **Non è una calcolatrice.** Il conteggio di caratteri, ripetizioni ed elementi di un elenco è inaffidabile e l'errore cresce con le dimensioni: contare nel codice, con una domanda per candidato. Il modello comprende colori in hex o RGB meno bene dei nomi. `score` è adatto a una soglia, non a un numero esatto tra i livelli.\n3. **Date e tempi.** Quale data preceda un'altra, quanto tempo intercorra e se una data rientri in un periodo sono valutazioni inaffidabili, soprattutto con formati misti e date relative. Estrarre le parti della data tramite choice, con l'opzione «non indicato», e confrontarle nel codice.\n4. **Formulazioni indirette.** Doppie negazioni e domande su una proprietà di una proprietà riducono la precisione. Scrivere direttamente e chiamare per nome le parti dello stato.\n5. **Elementi superflui nello stato.** Testo estraneo riduce la precisione. Filtrare nel codice oppure, se non è possibile, scartare ciò che è irrilevante con domande noul.\n6. **Testo ostile.** Per impostazione predefinita il modello non si aspetta insidie nello stato: un'istruzione iniettata o un testo che contesta la propria classificazione può spostare la risposta. Scrivere criteri precisi e verificare i casi limite prima dell'avvio.\n7. **Contraddizioni.** Se `instructions` e `criteria` chiedono cose diverse, per esempio descrivendo il «sì» di noul come «no», la precisione diminuisce. I criteri sono una continuazione della domanda.\n8. **Ordine delle opzioni.** Talvolta il modello tende alla prima opzione di choice. Riordinare le opzioni e verificare che la risposta non cambi.\n9. **Generazione.** Jev non è stato addestrato a scrivere testo. Per estrarre dati, trovare i candidati con un'espressione regolare o un modello generativo e lasciare a Jev la scelta corretta tramite 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": "Campi obbligatori, rappresentazione del materiale o valore del parametro non validi",
                "http_status": 400,
                "recovery": "Correggi i campi indicati prima di una nuova richiesta di creazione.",
                "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": "Conserva ogni risposta associata all'ID della domanda fornito, la probabilità e la legenda; la formula di confidenza che usa n richiede n>1, senza stabilire una regola API sul numero minimo di scelte.",
              "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: descrizioni true/false facoltative e nullable; choice: oggetto di criteri; score: array di criteri non vuoto",
                "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": [
            "Le strutture dei metodi e gli ID sono esatti; la capacità del fornitore è distinta dall’ammissione delle richieste."
          ],
          "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": "Modello decisionale di TypeSafe: non scrive testo, ma risponde a domande tipizzate su testo o JSON, con scelta di un'opzione, valutazione su una scala o «sì/no» con probabilità. È adatto a instradamento, smistamento delle richieste, moderazione e scoring; tutte le domande della stessa richiesta vengono valutate in parallelo."
  },
  "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": "Modello decisionale di TypeSafe: non scrive testo, ma risponde a domande tipizzate su testo o JSON, con scelta di un'opzione, valutazione su una scala o «sì/no» con probabilità. È adatto a instradamento, smistamento delle richieste, moderazione e scoring; tutte le domande della stessa richiesta vengono valutate in parallelo.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "576ed32226db56b8f54db2b59a3465b983ba0e79ece20ac314ba5f13b3f9d510",
    "renderer_sha256": "3be1a96012c3c76b38a7b9bea6a57c0def38c56103737bee6a5e77aaa75e488a"
  },
  "sourceRevision": "de5c11f801977555a302a5c6859b677461fbf6ca7622e621888cb09d44b8a8f8"
}
