Co oznacza każde pole
Żądanie określa format pytań i odpowiedzi. Odpowiedź zwraca wynik dla każdego z nich. Oto pola JSON użyte w przykładzie.
Pola żądania
model- Identyfikator modelu. W tym przykładzie wersja jest ustawiona na stałe na Jev 1.13, dzięki czemu wiadomo dokładnie, która wersja jest używana.
state- Tekst lub dane strukturalne do oceny, np. wiadomość pomocy technicznej.
questions- Zestaw nazwanych decyzji. Te same nazwy pojawiają się w polu answers odpowiedzi.
<question_id>- Nazwa, np. action lub urgency; odpowiedź używa tej samej nazwy.
type- Format odpowiedzi: choice wybiera opcję, score ocenia na uporządkowanej skali, a noul odpowiada na pytanie tak/nie.
instructions- Opis decyzji, o którą prosisz model.
criteria- Dostępne opcje Choice, kolejne poziomy Score albo znaczenie false i true w pytaniu Noul.
Pola odpowiedzi
answers- Jeden wynik na pytanie, zwracany pod tą samą nazwą.
choice- Klucz opcji wybranej przez choice: opcja o najwyższym prawdopodobieństwie.
probabilities- Prawdopodobieństwo dla każdej opcji wyboru; wartości te sumują się do 1.
confidence- Oddzielna wartość ufności obliczona z rozkładu prawdopodobieństwa; nie jest to prawdopodobieństwo wybranej opcji.
score- Pozycja na uporządkowanej skali ważona prawdopodobieństwami; może wypaść między dwoma poziomami.
legend- Przyporządkowanie liczbowych pozycji Score do opisów zdefiniowanych poziomów.
noul- Liczba od 0 (nie) do 1 (tak) w przypadku pytania typu tak/nie.
Ten sam kontekst, trzy niezależne pytania: Choice, Score i Probability. Każde uruchomienie zużywa jedną próbę z dziennego limitu. Odpowiedź o poprawnym formacie nadal może być błędna. Testuj reprezentatywne przypadki i ustaw progi routingu odpowiednie dla swojego procesu.
TypeScript po stronie serwera
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);