Pomen posameznih polj
V zahtevi določite vprašanja in oblike odgovorov. Odgovor vsebuje rezultat za vsako vprašanje. Spodaj so razložena polja JSON iz primera.
Polja zahteve
model- ID modela. V primeru je navedena različica Jev 1.13.
state- Besedilo ali strukturirani podatki za oceno, denimo sporočilo uporabnika.
questions- Objekt s poimenovanimi vprašanji. Ista imena se pojavijo v polju answers.
<question_id>- Ime, na primer action ali urgency; odgovor uporablja isto ime.
type- Oblika odgovora: choice izbere možnost, score ocenjuje po urejeni lestvici, noul pa odgovori na vprašanje da/ne.
instructions- Natančno opredeljena presoja, ki jo mora opraviti model.
criteria- Dovoljene možnosti Choice, urejene ravni Score ali pomen false in true za Noul.
Polja odgovora
answers- Po en rezultat za vsako vprašanje, pod istim imenom.
choice- Ključ izbrane možnosti, ki ima najvišjo verjetnost.
probabilities- Verjetnost za vsako možnost; skupna vsota je 1.
confidence- Ločena ocena zaupanja, izračunana iz porazdelitve verjetnosti. Ni enaka verjetnosti izbrane možnosti.
score- Položaj na urejeni lestvici, utežen z verjetnostmi; lahko leži med dvema ravnema.
legend- Povezava številskih položajev Score z opisi ravni, ki si jih določil.
noul- Število od 0 (ne) do 1 (da) za vprašanje da/ne.
Isti kontekst, tri neodvisna vprašanja: Choice, Score in Probability. Vsak zagon porabi en dnevni poskus. Tudi pravilno oblikovan odgovor je lahko napačen. Preizkusite reprezentativne primere in nastavite pragove za svoj potek dela.
LangChain · PythonJev v ogrodju agenta LangChain
Ogrodje usmerja klice modela in orodij. Na točki odločanja Jev prebere sporočilo, predlagani klic orodja ali stanje agenta ter vrne tipiziran odgovor. Naslednji korak določi vaša koda; odprte naloge še naprej rešuje pogovorni model.
ModelRouterMiddlewarebefore_agent → wrap_model_callPred začetkom razvrstite zadnje uporabnikovo sporočilo, izberite model in izbiro ohranite med celotnim izvajanjem. Izbira, verjetnosti in stopnja zaupanja ostanejo v stanju agenta.
AutoModeMiddlewarewrap_tool_callIzbrani klic orodja preverite pred izvedbo. Če Jev zazna tveganje ali pomanjkljivo dovoljenje, vmesna programska oprema klic blokira in vrne ToolMessage z napako. Ne zahteva odobritve človeka.
TypeSafeClassifierChoice · Score · NoulS svojo vmesno programsko opremo lahko dodate tudi lastne kontrolne točke: sporočila ali stanje agenta pošljite v TypeSafeClassifier ter z Choice, Score ali Noul usmerite kodo oziroma negotove primere pošljite v pregled.
LangChain · Python · ModelRouterMiddleware
# pip install "langchain-typesafe[experimental]" langchain-openai
# Set TYPESAFE_API_KEY and OPENAI_API_KEY on your server.
from langchain.agents import create_agent
from langchain_typesafe.experimental.middleware import (
ModelChoice, ModelRouterMiddleware,
)
router = ModelRouterMiddleware(
choices={
"fast": ModelChoice(
model="openai:gpt-5.6-terra",
criteria="Simple lookups and extraction.",
),
"powerful": ModelChoice(
model="openai:gpt-6-astra",
criteria="Complex reasoning and high-stakes decisions.",
),
},
instructions="Choose the least costly model that can do the task safely.",
)
agent = create_agent("openai:gpt-5.6-terra", middleware=[router])
result = agent.invoke({"messages": [{"role": "user", "content": "Summarize this log."}]})
print(result["model_route"].choice)
TypeScript na strani strežnika
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);