JEV - Zwei Demos, die nur eine Verteilung zurückgeben
Beide Beispiele fragen nur eine geschlossene Wahl: ob der Kundendienst an eine Person übergeben soll, und ob ein Zusammenführen durchgehen soll. Zurück kommt eine Verteilung. Die veröffentlichte Latenz bleibt bei etwa 70 bis 500 Millisekunden, nicht bei der Millisekundenzahl eines Demos.

Mitautor: folkbench.com (Folkbench ist eine überprüfbare Bewertungs- und Auswahlplattform für KI-APIs, Modelldienste und verwandte Sites. Sie nutzt veröffentlichte Angaben zu Diensten, Preisen, Verfügbarkeit, Latenz und Evidenzfenstern, damit Nutzer Wege vergleichen und einen davon wählen können.)
Zehn Texte in dieser Reihe:
- JEV - Ein Gelenk braucht kein Gehirn
- JEV - Das Schmiermittel auf den Steuerknoten
- JEV - Von BERT zurück zu einer Verteilung
- JEV - Die geschlossene Frage entwerfen
- JEV - Das Anti-Token-Buch liefert es nicht zuerst
- JEV - Zwei Demos, die nur eine Verteilung zurückgeben
- JEV - Raus aus der Schleife: Konfidenz in den Code
- JEV - Hinter der Linie ist klüger nicht mehr das Produkt
- JEV - Intuition und Vernunft: Fragen, die ihm nicht gehören
- JEV - Vom Bildschirm zur nackten Wahrscheinlichkeit
Beide Demos sind dieselbe Arbeit: kein freier Text, nur eine geschlossene Frage, und der Zweig wird aus der Verteilung genommen. Das JSON und der Code unten sind die Form eines Aufrufs, kein Zeitbericht. Die veröffentlichte Spanne von Ende zu Ende liegt bei etwa 70 bis 500 Millisekunden. Schreiben Sie einen Lauf von 18 Millisekunden nicht als Produktzahl auf. Sehenswert ist, dass die Antwort keinen Satz token für token enthält.
Kundendienst: Absicht und ein Unterbrecher
Die Szene
Der Kundendienst fürchtet eine Person, die schon wütend ist, während das System noch tippt. Ein generatives Modell für die Absicht zu nutzen heißt oft, im Namen der Genauigkeit auf ein erstes token und einen erzeugten JSON-Block zu warten. Ein nackter regulärer Ausdruck verpasst Wut, die um die Sache herum redet. Gewollt ist eine geschlossene Klassifikation, und dann eine sofortige Entscheidung über die Übergabe an einen Menschen.
Zustand und Optionen
Dies ist ein Choice, kein Noul. Noul antwortet mit Ja oder Nein. Hier gibt es drei Optionen.
[State]
scene: live support entry
rule: assign probability across the given options from the message text
[user]
I have waited three days. The shipment has not moved. Are you even alive? Refund me now, or I escalate.
{
"question": "choice",
"options": [
{"id": "GENERAL", "description": "ordinary question or tracking, no strong emotion"},
{"id": "REFUND", "description": "a clear return or refund, stated flatly"},
{"id": "BREAKER", "description": "insult, threat, or a complaint that should break to a person"}
]
}
Was zurückkommt, ist eine Verteilung
Es gibt keinen Cursor, der Zeichen ausspuckt. Die Form ist eine Tabelle, keine Rezension.
{
"top": "BREAKER",
"scores": [
{"choice": "BREAKER", "score": 0.9241},
{"choice": "REFUND", "score": 0.0715},
{"choice": "GENERAL", "score": 0.0044}
]
}
Die Zahlen sind die Verteilung in diesem Beispiel, damit der Zweig geschrieben werden kann. Sie sind kein veröffentlichter Maßstab. Das Modell vergibt Wahrscheinlichkeit auf den gegebenen Optionen. Es sagt nicht das nächste Zeichen voraus.
Wie der Code es aufnimmt
async function handleIncomingCustomerMessage(userMessage: string) {
const res = await jev.choice("cs_intent_v1", { input: userMessage });
const breaker = scoreOf(res, "BREAKER");
if (breaker > 0.85) {
return triggerHumanOverride({ priority: "CRITICAL", queue: "RETENTION" });
}
if (scoreOf(res, "REFUND") > 0.70) {
return launchWorkflow("AUTOMATED_REFUND_FLOW");
}
return launchWorkflow("DEFAULT_FAQ_BOT");
}
Es gibt keinen zusätzlichen Versuch, dessen einzige Aufgabe es ist, Markdown zu zerlegen. Die Schwelle sitzt im Code. 0.85 und 0.70 sind die Richtlinie dieses Ablaufs. Sie sind keine Garantie des Modells.
Eine Prüfung vor dem Zusammenführen
Die Szene
Statische Prüfungen stützen sich auf einen Syntaxbaum und auf tote Regeln. Varianten schlüpfen durch, und Fehlalarme sind häufig. Ein Gesprächsmodell zu bitten, einen diff von 500 Zeilen zu lesen und eine Rezension zu schreiben, dauert oft viele Sekunden. Die Verarbeitungskette kann nicht warten, und ein Programm kann aus der Prosa nicht „bestanden“ oder „durchgefallen“ lesen. Behandeln Sie den diff als Zustand, und fragen Sie eine Choice: durchlassen, ein Mensch soll sehen, oder sperren.
Zustand und Optionen
[Git diff]
PR #1042
file: src/auth/session.ts
+ // skip expiry outside production, or when the token starts with test_admin_
+ if (process.env.NODE_ENV !== 'production' || token.startsWith('test_admin_')) {
+ return session;
+ }
{
"question": "choice",
"options": [
{"id": "PASS", "description": "harmless refactor, docs, or ordinary logic"},
{"id": "WARN", "description": "config, dependency, or a non-sensitive refactor; a person should look"},
{"id": "BLOCK", "description": "backdoor, hardcoded secret, privilege jump, auth bypass, injection"}
]
}
Ein Präfix test_admin_, das die Frist in der Produktion überspringt, ist eine Umgehung der Authentifizierung. Im Beispiel legt die Verteilung BLOCK nahe an 0.98. Streichen Sie diese Klausel und lassen Sie nur „außerhalb der Produktion überspringen“, und dieselbe Frage wandert von der Sperre zu einem menschlichen Blick. So wird die Frage benutzt. Es ist keine Menge versprochener Millisekunden.
Wie eine Verarbeitungskette es aufnimmt
def audit_pr_diff(diff_text: str) -> int:
result = jev.choice(
question="pr_security_v2",
state=diff_text,
options=["PASS", "WARN", "BLOCK"],
)
scores = result.scores
if result.top == "BLOCK" and scores["BLOCK"] > 0.80:
print("high-risk auth change")
return 1
if result.top == "WARN":
mark_review_required()
return 0
return 0
Eine interne Dienstadresse genügt. Lesen Sie dies nicht als eine öffentliche Seite, die Jev schon in Ihrem Namen anbietet. Die Verarbeitungskette liest die oberste Option und die Wertungen. Wenn ein Mensch noch eine geschriebene Rezension braucht, fragen Sie ein Modell, das schreiben kann. Schieben Sie diese Prosa nicht in diese Frage zurück.
Wie beim Aufruf einer Schnittstelle, die Zahlen zurückgibt
Die zwei Läufe machen eine Tatsache konkret: das verwickelte Urteil bleibt im Modell, und draußen bleibt nur die Wahrscheinlichkeit. Noul, Choice und Score sind drei Gitter, nicht drei Plauderstile.
Wegwahl, Risiko, eine Prüfung vor dem Zusammenführen, eine Richtlinienmaschine, ein Zweig eines Agent: fragen Sie zuerst, ob der Schritt als geschlossene Frage geschrieben werden kann. Wenn ja, warten Sie nicht auf eine Erzeugung. Wenn nein, kleiden Sie ihn nicht als diese Art von Aufruf ein.