Die Felder im Überblick
In der Anfrage legst du Fragen und Antwortformate fest. Die Antwort enthält zu jeder Frage ein Ergebnis. Hier siehst du die JSON-Felder aus dem Codebeispiel.
Anfrage
model- Die Modell-ID. Das Beispiel legt Jev 1.13 fest, damit die Version eindeutig ist.
state- Der zu bewertende Text oder strukturierte Daten, etwa eine Supportnachricht.
questions- Ein Objekt mit benannten Fragen. Die gleichen Schlüssel findest du später unter answers.
<question_id>- Ein Name wie action oder urgency; die Antwort verwendet denselben Namen.
type- Das Antwortformat: choice wählt eine Option, score bewertet auf einer geordneten Skala und noul beantwortet eine Ja/Nein-Frage.
instructions- Die konkrete Entscheidung, die das Modell treffen soll.
criteria- Erlaubte Choice-Optionen, geordnete Score-Stufen oder die Bedeutung von false und true bei Noul.
Antwort
answers- Ein Ergebnis pro Frage unter demselben Namen.
choice- Der gewählte Optionsschlüssel mit der höchsten Wahrscheinlichkeit.
probabilities- Die Wahrscheinlichkeiten aller Optionen; zusammen ergeben sie 1.
confidence- Ein Konfidenzwert, der aus der Wahrscheinlichkeitsverteilung berechnet wird. Er ist nicht identisch mit der Wahrscheinlichkeit der gewählten Option.
score- Eine nach Wahrscheinlichkeiten gewichtete Position auf der Skala; sie kann zwischen zwei Stufen liegen.
legend- Die Zuordnung der numerischen Score-Positionen zu den von dir beschriebenen Stufen.
noul- Ein Wert von 0 (nein) bis 1 (ja) für eine Ja/Nein-Frage.
Ein gemeinsamer Kontext, drei unabhängige Fragen: Choice, Score und Probability. Jeder Durchlauf zählt als ein Versuch für heute. Eine formal gültige Antwort kann falsch sein. Teste repräsentative Fälle und lege eigene Schwellen für die Weiterleitung fest.
Serverseitiges TypeScript
TypeScript · fetch// Run on your server. Keep the API key out of browser code.
const apiKey = process.env.OPENROUTER_API_KEY;
if (!apiKey) throw new Error("Set OPENROUTER_API_KEY");
const response = await fetch("https://openrouter.ai/api/alpha/decisions", {
method: "POST",
headers: {
Authorization: "Bearer " + apiKey,
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "typesafe/jev-1.13",
state: {input: "A customer reports a duplicate charge."},
questions: {
team: {
type: "choice",
instructions: "Which team should handle this?",
criteria: {
billing: "Payments and refunds",
technical: "Bugs and integrations"
}
},
urgency: {
type: "score",
instructions: "How urgent is the issue?",
criteria: ["Can wait", "Needs attention today", "Immediate action"]
},
escalate: {
type: "noul",
instructions: "Should a human review this first?",
criteria: {false: "No review needed", true: "Review before acting"}
}
}
})
});
if (!response.ok) throw new Error("Decision request failed");
const {answers} = await response.json();
console.log(answers.team.choice, answers.urgency.score, answers.escalate.noul);