Jev gegen ein LLM
Die beiden konkurrieren nicht um dieselbe Aufgabe. Ein LLM schreibt; Jev entscheidet. Der nützliche Vergleich ist nicht, welches klüger ist, sondern was Ihr Code mit der Antwort tun muss — und dieser Unterschied ist groß genug, um zu ändern, wie das umgebende Programm geschrieben wird.
Dieselbe Entscheidung, in beiden Varianten geschrieben
Ein Support-Ticket in eine von vier Warteschlangen routen. So viel kostet Sie jede Seite tatsächlich an Code.
Mit einem Sprachmodell
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 wasMit 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);Die Retry-Schleife ist das verräterische Zeichen. In der ersten Fassung existiert sie, weil die Antwort als Text ankommt, der sich womöglich nicht parsen lässt oder in eine Warteschlange parst, die nie auf der Liste stand. In der zweiten hat sie keinen Platz mehr: Die Antwort ist konstruktionsbedingt eine aus QUEUES. An ihre Stelle tritt ein ganz anderer Zweig — einer, der greift, wenn das Modell unsicher ist, statt wenn es fehlerhaft formt.
Was die zweite Fassung sehen kann
Dieses Ticket, tatsächlich durch Jev geschickt. Die Gewinnerin überrascht nicht; der Zweitplatzierte ist der Teil, den ein nacktes Label weggeworfen hätte.
Technik gewinnt mit 87 %, aber Konto hält 13 % — und das ist genau die richtige Uneinigkeit, denn ein SSO-Ausfall liegt tatsächlich auf der Grenze zwischen beiden. Ein nacktes Label hätte das verborgen. Wenn ein falsches Routing Kosten verursacht, sind 13 % die Zahl, auf die Sie einen Schwellwert legen.
Nebeneinander
- Was Sie senden
- Jev
Einen State plus eine Abbildung typisierter Fragen.
LLMEinen Prompt, der Schema und Regeln meist als Prosa mitschleppt.
- Was zurückkommt
- Jev
Eine typisierte Antwort pro Frage, mit einer Wahrscheinlichkeit für jede Option.
LLMText. JSON, wenn Sie nett gefragt haben und der Modus unterstützt wird.
- Ihre nächste Codezeile
- Jev
Ein Switch auf einen Wert, der nur einer der Ihren sein kann.
LLMEin Parse, dann eine Validierung, dann ein Zweig für den Fall, dass eines von beidem scheitert.
- Wie es scheitert
- Jev
Es kann sich über Ihren Text irren. Es kann keine Form zurückgeben, die Sie nicht definiert haben.
LLMEs kann sich auch über die Form irren — ein fehlendes Feld, ein Label, das Sie nie aufgeführt haben, Prosa um das JSON herum.
- Zehn Dinge fragen
- Jev
Zehn Fragen in einer Anfrage, parallel gegen den State ausgewertet.
LLMEin überfüllter Prompt oder zehn Aufrufe.
- Unsicherheit
- Jev
Eine Verteilung und ein Konfidenzwert bei jedem Choice und jedem Score.
LLMWas auch immer der Text über seine eigene Sicherheit behauptet.
Die Zahlen
TypeSafe veröffentlicht diese; es sind Herstellerzahlen, keine Messungen von uns.
Antwort Ende zu Ende, gegenüber 3–329 s bei Spitzenmodellen
schneller bei Anfragen in System-Eins-Form
pro Million Eingabe-Tokens, Ausgabe kostenlos
Was wir messen können: Über 14 Läufe, die über diese Website gemacht wurden, liegt die mittlere Umlaufzeit bei 329 ms — und die meisten dieser Anfragen trugen neun Fragen, nicht eine.
Wann das LLM das richtige Werkzeug ist
Meistens dann, wenn Sie Sprache brauchen. Jev hat keine Meinung, die es erklären könnte, und nichts zu sagen.
- Sie brauchen Prosa — eine Antwort, eine Zusammenfassung, eine Commit-Nachricht, eine Erklärung der Entscheidung statt der Entscheidung.
- Sie brauchen geschriebenen Code oder einen Plan oder irgendetwas Offenes, bei dem die Antwortmenge vor dem Aufruf nicht feststeht.
- Die Menge möglicher Antworten ist wirklich unbegrenzt. Einen beliebigen Namen zu extrahieren ist kein Choice über 255 Optionen.
- Sie brauchen eine Gedankenkette, die Sie prüfen können. Jev gibt ein Urteil zurück, nicht die Schritte dahinter.
- Das Volumen ist klein und die Form ist locker. Eine Retry-Schleife, die zweimal am Tag läuft, lohnt es nicht, wegzukonstruieren.
Die beiden ergänzen sich besser, als sie konkurrieren. TypeSafe selbst beschreibt es als System Eins für das schnelle strukturierte Urteil und ein gewöhnliches Modell als System Zwei dahinter — sieben Sie die Eingabe mit einem Noul, routen Sie mit einem Choice und reichen Sie weiter, was übrig bleibt, an das Modell, das wirklich schreiben kann.
Weiterlesen
Führen Sie den Vergleich selbst durch
Fügen Sie ein Ticket ein, einen Entwurf, einen Prompt — irgendetwas, um das Sie sonst eine Parsing-Schleife geschrieben hätten — und sehen Sie zu, wie neun typisierte Antworten aus einer einzigen Anfrage zurückkommen.
Spielplatz öffnen