Ein System One Modell in ein Feature einbinden
Ein System One Modell beantwortet typisierte Fragen in einem einzigen Vorwärtsdurchlauf. Es generiert keinen Text. Status rein, typisierte Antworten mit kalibrierten Wahrscheinlichkeiten raus. Es ist eine If-Anweisung, die lesen kann.
Verwenden Sie es, wenn die Entscheidung eng, vorspezifiziert und wiederholt ist. Verwenden Sie es nicht für irgendetwas, das eine schriftliche Erklärung benötigt – das ist immer noch eine Aufgabe für Claude.
Bevor Sie irgendetwas tun: Ist das wirklich das richtige Werkzeug
Beantworten Sie diese drei. Wenn eines „nein“ ist, stoppen Sie und behalten Sie den LLM-Aufruf.
- Sind die möglichen Antworten im Voraus bekannt? Die Anzahl der Optionen ist auf 255 begrenzt.
- Benötigt der Aufrufer nur das Label, nicht die Begründung? Wenn ein Mensch nachgelagert eine Begründung liest, brauchen Sie Text und das ist das falsche Werkzeug.
- Ist es ein hohes Volumen, oder wartet eine Person? Das ist eine Latenz- und Kostenoptimierung, kein Fähigkeitsgewinn. Es weiß nichts, was Claude nicht weiß. Bei einem nächtlichen Cron-Job über fünfzig Datensätze bringt es Ihnen eine Abhängigkeit und sonst nichts.
Gemessen an 150 handgelabelten Datensätzen bei drei Aufgaben (unser Lauf vom 20. September 2026): Jev liegt gleichauf mit GPT-5.2 bei 145/150 und kostet 46x weniger (0,036 $ vs. 1,64 $ pro 1.000 Datensätze), aber Ende-zu-Ende ist es nur 1,7x schneller als GPT-4.1-mini – die veröffentlichten 40x-200x beziehen sich auf einen mehrstufigen Frontier-Workflow mit 3-329 s, nicht auf einen Aufruf.
Die offenen Reproduktionen sind kein Drop-In. Gleicher Lauf: Von 1.0.1 (395M) 92/150 (61%),
Laya (421M) 62/150 (41%). Sie brechen auf eine Klasse zusammen, anstatt zu degradieren – Von
sagte exfiltration 25 Mal bei einem 50-Befehls-Set, das fünf enthielt. Ein Konfidenz-Gate
rettet das nicht: Um Von's Fehler zu fangen, mussten 92% des Volumens hochgestuft werden, bei Laya 100%
gegenüber 8% bei Jev. Verwenden Sie sie nur, wenn Sie sie an Ihrem eigenen gelabelten Set gemessen haben.
Die drei Fragetypen
"lead_type": {"type":"choice", "instructions": "...", "criteria": {"opt_a":"desc","opt_b":"desc"}}
"is_urgent": {"type":"noul", "instructions": "..."} # -> 0.0–1.0
"priority": {"type":"score", "instructions": "...", "criteria":["ignore","low","high"]}
Stellen Sie alle Fragen, die Sie brauchen, in einem Aufruf – sie werden alle im selben Vorwärtsdurchlauf aufgelöst, daher kosten vier Fragen ungefähr so viel wie eine.
Antwortformat (sowohl Jev als auch Von):
r["answers"]["lead_type"]["choice"] # das Label
r["answers"]["lead_type"]["probabilities"] # vollständige Verteilung
r["answers"]["lead_type"]["confidence"] # dies für das Gating verwenden
r["answers"]["is_urgent"]["noul"] # 0.0–1.0
r["answers"]["priority"]["score"] # Position auf der Skala, z. B. 2.41
Workflow
1. Das gelabelte Set ZUERST erstellen – mindestens 50 Datensätze
Nicht verhandelbar und der mit Abstand wertvollste Schritt. Beschriften Sie reale Datensätze aus dem
Stream, auf den Sie dies anwenden möchten, bevor Sie Kriterien schreiben. Ohne diese können Sie
keine schlechte Frage von einem schlechten Modell unterscheiden, und der Fehler ist still – siehe jev-eval.
2. Die Kriterien so schreiben, als würden Sie es einem neuen Mitarbeiter erklären
Schlechtester-bester Spread über vier Formulierungen derselben Fragen, 50 Datensätze pro Aufgabe (unser Lauf vom 20. September 2026):
| Aufgabe | Jev | Von (395M) | Laya (421M) |
|---|---|---|---|
| Agenten-Befehlsrisiko | 44-49 (10 Pkt.) | 9-23 (28 Pkt.) | 18-28 (20 Pkt.) |
| Lead-Triage | 47-49 (4 Pkt.) | 22-34 (24 Pkt.) | 15-24 (18 Pkt.) |
| Ticket-Routing | 41-47 (12 Pkt.) | 23-41 (36 Pkt.) | 22-36 (28 Pkt.) |
Gleicher Durchlauf bei der Befehlsaufgabe mit den LLMs: Haiku 4.5 46-48 (4 Pkt.), GPT-4.1-mini 45-50 (10 Pkt.), Jev 44-49 (10 Pkt.), GPT-5-mini 41-49 (16 Pkt.).
Jev ist NICHT formulierungsrobuster als ein kleines LLM – es schwankt um dieselben zehn Punkte, und Haiku war das stabilste Modell im Test. Lesen Sie das MINIMUM, nicht den Spread: Jedes gehostete Modell hat ein Minimum von 82-92% und bleibt auslieferbar, während Von bei 18% und Laya bei 36% liegt. Lesen Sie das NICHT als „bessere Kriterien schreiben und das offene Modell holt auf“ – ein früherer 15-Datensatz-Test kam genau zu diesem Schluss und er war falsch. Umfangreichere Kriterien halfen nicht zuverlässig: Bei Lead-Triage bewertete Von 34/50 mit der knappen Formulierung und 28/50 mit der sorgfältig geschriebenen. Was diese Zahlen bewegt, ist die Empfindlichkeit gegenüber der Oberflächenform, nicht das Verständnis, daher ist jede zukünftige Kriterienbearbeitung ein unangekündigtes Regressionsrisiko.
Schreiben Sie jede Option mit: was sie ist, was sie nicht ist, und dem Grenzfall, der zu einer falschen Antwort verleitet. Benennen Sie die Standardeinstellung explizit, wenn eine Option dominieren soll.
3. Schwellenwerte gegen das gelabelte Set kalibrieren – niemals 0,5 annehmen
Ein Noul ist eine Wahrscheinlichkeit, kein boolescher Wert. Jevs Noul hat einen Mindestwert: Bei Datensätzen, die eindeutig sauber waren, gab es immer noch 0.2–0.5 zurück, wo Claude 0.0 zurückgab. Bei den gemessenen Daten lag der sinnvolle Cut bei ~0,85, nicht bei 0,5. Schwellenwerte lassen sich nicht zwischen Modellen übertragen – führen Sie den Sweep erneut durch, wenn Sie wechseln.
Schreiben Sie den Sweep nicht von Hand. jev-eval besitzt die Kalibrierung und liefert das Werkzeug:
python ~/.claude/skills/jev-eval/scripts/sweep.py labelled.json configs.json \
--backend jev --question <name>
4. Das Konfidenz-Gate entwerfen
Gate-Antworten mit niedriger Konfidenz an Claude weiterleiten. Dasselbe Skript berichtet beide
relevanten Hälften – welchen Anteil der Fehler das Gate abfängt und welchen Anteil des Volumens
es hochstuft – und bewertet das Ergebnis. Ein Gate, das jeden Fehler abfängt, aber 73% des
Datenverkehrs hochstuft, wird mit saves nothing bewertet, da es ein langsamer Pfad mit extra Schritten ist. Wenn Sie
das sehen, liegt die Lösung in besseren Kriterien oder dem gehosteten Modell, nicht in einem anderen Schwellenwert.
a = r["answers"]["lead_type"]
if a["confidence"] < GATE:
return escalate_to_claude(state) # langsamer Pfad
return a["choice"] # schneller Pfad
5. Hinter einem Feature-Flag ausliefern, beide Pfade eine Woche lang protokollieren
Protokollieren Sie die System One Antwort und was der alte Pfad gesagt hätte. Vergleichen Sie sie unter echtem Datenverkehr, bevor Sie umschalten. Niemals nur auf Basis von Evaluierungs-Set-Zahlen umschalten.
Zugangspfade
# 1. TypeSafe direkt – Schlüssel in macOS Keychain, Dienst `typesafe-api-key`
export TYPESAFE_API_KEY="$(security find-generic-password -s typesafe-api-key -w)"
curl -X POST https://api.typesafe.ai/v1/systemone \
-H "Authorization: Bearer $TYPESAFE_API_KEY" -H "Content-Type: application/json" \
-d '{"model":"jev-latest","state":"...","questions":{...}}'
// 2. Cloudflare Workers AI – keine Warteliste
await env.AI.run('typesafe/jev', { state, questions })
# 3. Von – lokal, kostenlos, Apache-2.0, 395M ModernBERT
# pip install von-sdk
import von
r = von.system_one(state="...", questions={"x": von.Noul(instructions="...")})
r.answers["x"].noul
Fallstricke
- Von's
Choicenimmtcriteria=, nichtchoices=. Pydantic-Fehler, wenn Sie es falsch raten. - Von gibt
.answers[k]zurück, nicht.nouls[k]/.choices[k]. Der LangChain-Wrapper unterscheidet sich hier vom rohen SDK. - Von's 34 s Kalstart lädt die Gewichte. Wärmen Sie es beim Boot; messen Sie es niemals in der Latenz.
- Setzen Sie einen Noul nicht bei 0,5 als Schwellenwert. Siehe Schritt 3.
- Jev ist früh im Zugang, Single-Vendor, ohne SLA. Setzen Sie keinen kritischen kundenorientierten Pfad darauf, ohne Fallback zu Claude.
- Kleine Evaluierungs-Sets lügen. 15 Datensätze, bei denen beide gehosteten Modelle 100% erzielten, beweisen fast nichts. Verwenden Sie hunderte.
Verwandte Themen
jev-eval erstellt und führt das gelabelte Set aus. jev-audit findet heraus, welche vorhandenen LLM-Aufrufe
in einer Codebasis eine Konvertierung wert sind.