Jev: Ein Modell, das keinen Text schreibt
TypeSafe hat mit Jev ein System-One-Modell veröffentlicht, das typisierte Entscheidungen mit Wahrscheinlichkeiten liefert. Dazu: How-to (API-Key, SDK, curl, LangChain) und unsere ersten Messungen.
Entwickler und Automatisierer, die KI in Software einbauen – nicht nur chatten
Python ≥ 3.10 oder Node ≥ 20, API-Key von TypeSafe (Early Access)
Der Miterfinder von ChatGPT hat Jev veröffentlicht. Ein Modell, das keinen Text schreibt. Wir testen es seit heute.
Diogo Almeida hat bei OpenAI RLHF und InstructGPT mitentwickelt. Am 15. September hat er mit TypeSafe das Modell Jev vorgestellt:
After co-inventing ChatGPT, I kept asking myself: why have superhuman chat models not led to AGI? I've spent the last 2 years in stealth building a new way to train models (RLCD), and a new type of frontier AI model that we are releasing today: Jev.
• 20-200x faster
• 40-400x cheaper (w/ output tokens free)
• Frontier composable intelligence optimized for decisions
Warum Chatmodelle für Software oft die falsche Wahl sind
Die Idee dahinter ist einfach. Chatmodelle sind darauf trainiert, Text zu schreiben, der Menschen gefällt. Software braucht aber selten Text – sie braucht Entscheidungen.
- Welches Team soll dieses Ticket bekommen?
- Ist die Nachricht dringend?
- Wie verärgert ist der Kunde?
- Will er sein Geld zurück?
Heute zwingt man ein Chatmodell, dafür JSON auszuspucken, parst das Ergebnis und hofft, dass nichts erfunden wurde.
Jev antwortet mit Typen und Wahrscheinlichkeiten
Jev beantwortet stattdessen typisierte Fragen und gibt Wahrscheinlichkeiten zurück. TypeSafe nennt das einen System-One-Ansatz: Zustand rein, strukturierte Urteile raus – trainiert mit RLCD (Reinforcement Learning for Calibrated Decisions).
Drei Fragetypen:
- Choice – Auswahl aus Optionen, inkl. Konfidenz
- Score – Bewertung auf einer geordneten Skala (2–10 Levels)
- Noul – Ja/Nein als Wahrscheinlichkeit (0–1)
Mehrere Fragen laufen parallel über denselben Zustand. Im Support-Beispiel: eine Kundenbeschwerde, mehrere Fragen, ein einziger Aufruf. Team, Dringlichkeit, Erstattung, Frust – plus Konfidenz. Ist das Modell unsicher, geht der Fall an einen Menschen. Was mit den Zahlen passiert, entscheidet der Code.
How-to: Installieren und nutzen
Was man wissen muss
- Kein lokales Modell – Jev läuft über die TypeSafe-API (
POST https://api.typesafe.ai/v1/systemone) - Kein Chat, kein Streaming – Request = State + Questions, Response = typisierte Answers
- State ist Text oder JSON (Dokument, Ticket, Conversation). Keine Bilder/Audio – vorher transkribieren
- Kontextlimit laut Docs: ca. 64k Tokens für State + alle Questions zusammen; 32k für State + längste einzelne Question
- Fragen atomar halten – eine klare Entscheidung pro Question, Logik und Gewichte im eigenen Code
- Preis: ca. $0,042 / Mio. Input-Tokens, Output gratis (laut TypeSafe; eine Milliarde Input ≈ 42 $)
Dependencies
| Pfad | Runtime | Paket | Braucht zusätzlich |
|---|---|---|---|
| HTTP direkt | beliebig | – | curl / HTTP-Client, API-Key |
| Python SDK | Python ≥ 3.10 | typesafe-sdk | httpx2, pydantic (kommen mit) |
| JS/TS SDK | Node ≥ 20 | @typesafe-ai/sdk | – |
| LangChain | Python ≥ 3.10 | langchain-typesafe | langchain-core; optional [experimental] für Middleware |
Zugang: API-Key unter console.typesafe.ai (aktuell Early Access / Waitlist). Alternativ über Vercel AI Gateway. Danach:
export TYPESAFE_API_KEY="sk-..."
1. Schnelltest mit curl
curl -X POST https://api.typesafe.ai/v1/systemone \
-H "Authorization: Bearer $TYPESAFE_API_KEY" \
-H "Content-Type: application/json" \
-d @- <<'EOF'
{
"state": "Hallo, ich wurde doppelt belastet. Bitte sofort erstatten.",
"model": "jev-latest",
"questions": {
"department": {
"type": "choice",
"instructions": "Which team should handle this",
"criteria": {
"billing": "Payment or subscription issues",
"technical": "Bugs or integration problems",
"sales": "Pricing or account questions"
}
},
"is_urgent": {
"type": "noul",
"instructions": "The message conveys urgency or time-sensitivity"
},
"refund_requested": {
"type": "noul",
"instructions": "The customer is explicitly asking for a refund"
}
}
}
EOF
Zurück kommen u. a. answers.*.choice / .noul / .score, bei Choice und Score zusätzlich confidence und probabilities – ohne JSON-Parsing-Roulette.
2. Python SDK (empfohlen)
pip install typesafe-sdk
# oder:
uv add typesafe-sdk
from typesafe_sdk import Choice, Noul, Score, TypeSafeClient
client = TypeSafeClient() # liest TYPESAFE_API_KEY
ticket = (
"Hallo, ich wurde doppelt belastet für Bestellung A-104. "
"Bitte sofort erstatten – ich brauche das Geld zurück."
)
response = client.system_one(
state=ticket,
questions={
"department": Choice(
instructions="Which team should handle this",
criteria={
"billing": "Payment or subscription issues",
"technical": "Bugs or integration problems",
"sales": "Pricing or account questions",
},
),
"frustration": Score(
instructions="How frustrated the customer appears",
criteria=[
"Calm, just stating facts",
"Frustrated but civil",
"Very angry, strong language",
],
),
"is_urgent": Noul(
instructions="The message conveys urgency or time-sensitivity",
),
"refund_requested": Noul(
instructions="The customer is explicitly asking for a refund",
),
},
)
dept = response.answers["department"]
print(dept.choice, dept.confidence)
print(response.answers["frustration"].score)
print(response.answers["is_urgent"].noul)
# Beispiel: Confidence-Gate – bei Unsicherheit an Menschen
if dept.confidence < 0.6:
print("→ human review")
elif dept.choice == "billing" and response.answers["refund_requested"].noul > 0.8:
print("→ start refund flow")
AsyncTypeSafeClient gibt’s für async-Code analog. Default-Modell: jev-latest.
3. TypeScript
npm install @typesafe-ai/sdk
import { choice, noul, TypeSafeClient } from "@typesafe-ai/sdk";
const client = new TypeSafeClient();
const response = await client.systemOne({
state: { document: "I was charged twice. Please fix this ASAP." },
questions: {
category: choice("What is this ticket about?", {
billing: "Payment or subscription issues",
technical: "Bugs or integration problems",
other: "Anything else",
}),
urgent: noul("The message conveys urgency"),
},
});
console.log(response.answers.category.choice);
4. LangChain
Wenn der Rest schon auf LangChain läuft:
uv add langchain-typesafe
# optional Agent-Middleware:
uv add "langchain-typesafe[experimental]"
from langchain_typesafe import Choice, Noul, Score, TypeSafeClassifier
classifier = TypeSafeClassifier()
result = classifier.invoke({
"state": "Stripe has failed for three days. Help ASAP.",
"questions": {
"department": Choice(
instructions="Which team should handle this?",
criteria={
"billing": "Payment or subscription issues",
"technical": "Product or integration issues",
},
),
"urgent": Noul(instructions="Does this message express urgency?"),
"frustration": Score(
instructions="How frustrated does the customer appear?",
criteria=["calm", "frustrated", "angry"],
),
},
})
print(result.choices["department"].choice)
print(result.nouls["urgent"].noul)
Die experimental Middleware kann Agenten-Runs auf günstige vs. teure Modelle routen oder riskante Tool-Calls vor der Ausführung prüfen – siehe LangChain-Post zu Jev.
Praxistipps
- Fragen auf Englisch formulieren funktioniert bei uns auch mit deutschem State – trotzdem Kriterien klar und disjunkt halten
- Bei Choice ein explizites
othervorsehen, sonst greift das Modell zur „nächstbesten“ falschen Option - Viele Fragen in einem Call schlagen serielle Calls (Cookbook: 13 Questions ≈ 10× schneller / 12× günstiger)
- Confidence als zweite Achse: Antwort sagt was, Confidence sagt ob du handeln darfst
- Offizielle Docs: docs.typesafe.ai
Erste Messungen
Unsere ersten Messungen:
- Median 275 Millisekunden pro Aufruf, Ende zu Ende aus Deutschland
- rund 700 Tokens
- deutsche Nachrichten sauber eingeordnet, obwohl die Fragen auf Englisch formuliert sind
Warum das mehr interessiert als das nächste Chat-Update
Wenn eine KI-Entscheidung so billig und schnell ist wie ein Datenbankabruf, baut man Software anders. Statt einem großen Prompt stellt man hundert kleine Fragen im Hintergrund. Und weil das Modell „weiß ich nicht“ sagen kann, läuft das unbeaufsichtigt.
Chatmodell für Reasoning und Text, Jev für die schnellen Weichenstellungen dazwischen.
Als Nächstes bei uns: Buchungsanfragen zuordnen, Dubletten in Mitgliederlisten finden, Meeting-Transkripte in Aufgaben sortieren. Ergebnisse folgen.
Wer baut gerade etwas, wo ein paar typisierte Urteile mehr bringen als ein Chatfenster?
Weiterlesen: TypeSafe Quickstart · LangChain – Building a Harness with Jev · Reddit: What is Jev?