Co znamenají jednotlivá pole
V požadavku určíte otázky a formát odpovědí. Odpověď obsahuje výsledek pro každou otázku. Tady je vysvětlení polí JSON z příkladu.
Pole požadavku
model- ID modelu. Příklad výslovně používá verzi Jev 1.13.
state- Text nebo strukturovaná data k vyhodnocení, například zpráva zákazníka.
questions- Objekt s pojmenovanými otázkami. Stejné názvy se objeví v poli answers.
<question_id>- Název, například action nebo urgency; odpověď používá stejný název.
type- Formát odpovědi: choice vybere možnost, score hodnotí na seřazené stupnici a noul posuzuje otázku ano/ne.
instructions- Konkrétní úsudek, který má model provést.
criteria- Povolené možnosti Choice, seřazené úrovně Score nebo význam false a true pro Noul.
Pole odpovědi
answers- Jeden výsledek pro každou otázku, vždy pod stejným názvem.
choice- Klíč vybrané možnosti s nejvyšší pravděpodobností.
probabilities- Pravděpodobnost každé možnosti; součet hodnot je 1.
confidence- Samostatná míra jistoty vypočítaná z rozdělení pravděpodobností; nejde o pravděpodobnost vybrané možnosti.
score- Pozice na seřazené stupnici vážená pravděpodobnostmi; může ležet mezi dvěma úrovněmi.
legend- Přiřazení číselných pozic Score k popisům vámi zadaných úrovní.
noul- Číslo od 0 (ne) do 1 (ano) pro otázku ano/ne.
Jeden společný kontext, tři nezávislé otázky: Choice, Score a Probability. Každé spuštění spotřebuje jeden denní pokus. I správně strukturovaná odpověď může být chybná. Testujte na reprezentativních případech a nastavte vhodné prahy pro svůj pracovní postup.
TypeScript na straně serveru
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);