Vad varje fält betyder
Förfrågan definierar frågorna och svarsformaten. Svaret returnerar ett resultat för var och en. Här är JSON-fälten som används i exemplet.
Begäran fält
model- Modell-ID. Exemplet låser versionen till Jev 1.13 så att modellversionen är explicit.
state- Text eller strukturerade data som ska bedömas, till exempel ett meddelande till kundsupport.
questions- En uppsättning namngivna beslut. Samma namn används under answers i svaret.
<question_id>- Ett namn som action eller urgency; svaret använder samma namn.
type- Svarsformatet: choice väljer ett alternativ, score bedömer på en ordnad skala och noul besvarar en ja/nej-fråga.
instructions- Den specifika bedömning du vill att modellen ska göra.
criteria- Tillåtna Choice-alternativ, ordnade Score-nivåer eller betydelsen av false och true för Noul.
Svarsfält
answers- Ett resultat per fråga, returneras under samma namn.
choice- Den valda nyckeln i choice: alternativet med högst sannolikhet.
probabilities- Sannolikheten för varje valalternativ; dessa värden summerar till 1.
confidence- Ett separat konfidensvärde beräknat från sannolikhetsfördelningen; det är inte det valda alternativets sannolikhet.
score- En position på en ordnad skala, viktad efter sannolikhet; den kan hamna mellan två nivåer.
legend- Kopplingen mellan numeriska Score-positioner och beskrivningarna av de nivåer du angav.
noul- Ett tal från 0 (nej) till 1 (ja) för en ja/nej-fråga.
Samma kontext, tre oberoende frågor: Choice, Score och Probability. Varje körning använder ett av dagens försök. Ett svar med korrekt format kan fortfarande vara fel. Testa representativa fall och ange routingtrösklar som passar ditt arbetsflöde.
TypeScript på serversidan
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);