Jev contro un LLM

Non si contendono lo stesso lavoro. Un LLM scrive; Jev decide. Il confronto utile non è quale sia più intelligente, ma cosa deve farne il tuo codice — e quella differenza è abbastanza grande da cambiare come si scrive il programma attorno.

La stessa decisione, scritta in entrambi i modi

Instradare un ticket di assistenza verso una di quattro code. Ecco quanto ti costa davvero ciascuna strada in termini di codice.

Con un modello linguistico

const res = await llm.chat({
  messages: [{ role: "user", content:
    `Route this ticket. Reply with JSON: {"queue": "Billing"|"Technical"|"Account"|"Sales"}
     Ticket: ${ticket}` }],
  response_format: { type: "json_object" }
});

let queue;
try {
  queue = JSON.parse(res.content).queue;        // may not be JSON
} catch {
  return retry();                               // ...so there is a retry
}
if (!QUEUES.includes(queue)) return retry();    // may be a queue you never had
// and no idea how close the call was

Con Jev

const { answers } = await jev.systemOne({
  state: ticket,
  model: "jev-latest",
  questions: { queue: { type: "choice", instructions:
    "Which team should own this ticket?", criteria: QUEUES } }
});

const { choice, probabilities, confidence } = answers.queue;
// choice is one of QUEUES. It cannot be anything else.
if (confidence < 0.7) return humanReview(ticket, probabilities);
route(choice);

Il ciclo di ritentativi è il segnale. Esiste nella prima versione perché la risposta arriva come testo che potrebbe non essere analizzabile, o analizzarsi in una coda mai presente nell’elenco. Nella seconda non ha dove stare: la risposta è una di QUEUES per costruzione. Al suo posto arriva un ramo del tutto diverso — uno che scatta quando il modello è incerto anziché quando è malformato.

Cosa riesce a vedere la seconda versione

Quel ticket, passato per davvero attraverso Jev. La vincitrice non sorprende; la seconda classificata è la parte che un’etichetta nuda avrebbe buttato via.

“Il nostro accesso SSO restituisce un 500 dalla release 4.2 di stamattina. Nessuno del team riesce a entrare. Uguale su Chrome e Safari, su due tenant diversi.”
Tecnico al 87%, su 4 opzioni
87% Tecnico

Tecnico vince con l’87%, ma Account tiene il 13% — ed è esattamente il disaccordo giusto, perché un guasto SSO sta davvero al confine fra i due. Un’etichetta nuda lo avrebbe nascosto. Se sbagliare instradamento ha un costo, il 13% è il numero su cui mettere la soglia.

Fianco a fianco

Cosa mandi
Jev

Uno state più una mappa di domande tipizzate.

LLM

Un prompt, che di solito porta schema e regole come prosa.

Cosa torna
Jev

Una risposta tipizzata per domanda, con una probabilità per ogni opzione.

LLM

Testo. JSON se l’hai chiesto con garbo e la modalità è supportata.

La tua riga di codice successiva
Jev

Uno switch su un valore che può essere solo uno dei tuoi.

LLM

Un’analisi, poi una validazione, poi un ramo per quando una delle due fallisce.

Come sbaglia
Jev

Può sbagliarsi sul tuo testo. Non può restituire una forma che non hai definito.

LLM

Può sbagliare anche la forma — un campo mancante, un’etichetta mai elencata, prosa avvolta attorno al JSON.

Chiedere dieci cose
Jev

Dieci domande in una richiesta, valutate contro lo state in parallelo.

LLM

Un prompt affollato, oppure dieci chiamate.

Incertezza
Jev

Una distribuzione e un valore di confidenza, su ogni Choice e ogni Score.

LLM

Quello che il testo dichiara sulla propria certezza.

I numeri

Li pubblica TypeSafe; sono cifre del fornitore, non nostre misurazioni.

70–500 ms

risposta end to end, contro 3–329 s dei modelli di frontiera

40–200×

più veloce su query di forma Sistema Uno

0,042 $

per milione di token in ingresso, uscita gratuita

Quello che possiamo misurare: su 14 esecuzioni fatte da questo sito, l’andata e ritorno mediano è 329 ms — e la maggior parte di quelle richieste portava nove domande, non una.

Quando l’LLM è lo strumento giusto

Quasi sempre, se quello che ti serve è linguaggio. Jev non ha un’opinione da spiegare né nulla da dire.

  • Ti serve prosa — una risposta, un riassunto, un messaggio di commit, la spiegazione della decisione anziché la decisione.
  • Ti serve del codice scritto, o un piano, o qualsiasi cosa aperta in cui l’insieme delle risposte non è noto prima della chiamata.
  • L’insieme delle risposte possibili è davvero illimitato. Estrarre un nome arbitrario non è un Choice su 255 opzioni.
  • Ti serve una catena di ragionamento ispezionabile. Jev restituisce un giudizio, non i passi che ci stanno dietro.
  • Il volume è basso e la forma è lasca. Un ciclo di ritentativi che gira due volte al giorno non vale la pena di essere progettato via.

I due si compongono meglio di quanto competano. L’inquadramento di TypeSafe stesso è Sistema Uno per il giudizio strutturato e rapido e un modello ordinario come Sistema Due dietro — filtra l’input con un Noul, instrada con un Choice e passa ciò che sopravvive al modello che sa davvero scrivere.

Continua a leggere

Fai tu stesso il confronto

Incolla un ticket, una bozza, un prompt — qualsiasi cosa attorno a cui altrimenti avresti scritto un ciclo di analisi — e guarda tornare nove risposte tipizzate da una sola richiesta.

Apri il parco giochi