Comprendre chaque champ
La requête définit les questions et le format attendu. La réponse contient un résultat pour chacune. Voici les champs JSON utilisés dans l’exemple.
Requête
model- L’identifiant du modèle. L’exemple fixe Jev 1.13 pour préciser la version.
state- Le texte ou les données structurées à évaluer, comme un message de support.
questions- Un objet dont les clés sont les noms des questions. Vous retrouverez ces mêmes clés dans answers.
<question_id>- Un nom comme action ou urgency ; la réponse reprend ce même nom.
type- Le format de réponse : choice choisit une option, score situe une réponse sur une échelle ordonnée et noul évalue une question oui/non.
instructions- Le jugement précis demandé au modèle.
criteria- Les options de Choice, les niveaux ordonnés de Score ou le sens de false et true pour Noul.
Réponse
answers- Un résultat par question, sous le même nom.
choice- L’option sélectionnée, celle dont la probabilité est la plus élevée.
probabilities- La probabilité de chaque option ; leur somme vaut 1.
confidence- Un score de confiance calculé à partir de la distribution des probabilités, distinct de la probabilité de l’option retenue.
score- Une position pondérée par les probabilités sur une échelle ordonnée ; elle peut se situer entre deux niveaux.
legend- La correspondance entre les positions numériques du score et les niveaux que vous avez définis.
noul- Un nombre de 0 (non) à 1 (oui) pour une question binaire.
Un même contexte, trois questions indépendantes : Choice, Score et Probability. Chaque exécution compte pour une tentative quotidienne. Une réponse au bon format peut être erronée. Testez des cas représentatifs et définissez vos propres seuils de routage.
TypeScript côté serveur
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);