OpenRouter
本站 Playground 透過 OpenRouter 呼叫固定版本的 Jev。目前的價格與可用性請以模型頁面為準。
- 端點
- POST https://openrouter.ai/api/alpha/decisions
- model
- typesafe/jev-1.13
- API 金鑰
- 在伺服器端以 Bearer token 傳送 API 金鑰。
選擇一個問題,或針對同一情境提出三個不同問題。先選案例,再修改輸入,查看各題的結構化答案。
每次專注測試一種回答類型。 每次執行會用掉一次當日體驗額度。
執行案例後,每個問題都會回傳一份結構化答案:Choice 選出選項,Score 給出分數,Probability 回傳 0 到 1 之間的數值。
表單會將文字作為 state.input,並傳送一個或三個具名問題。每個結果都可在 answers.<question_id> 下找到。
請求中定義要判斷的問題,回應會依問題名稱回傳結果。以下說明範例中用到的 JSON 欄位。
modelstatequestions<question_id>typeinstructionscriteriaanswerschoiceprobabilitiesconfidencescorelegendnoul同一份情境,分別測試 Choice、Score 與 Probability 三個問題。 每次執行會用掉一次當日體驗額度。 結果符合欄位格式,判斷也可能出錯。請用自己的樣本驗證,並依業務風險設定分流門檻。
本站 Playground 透過 OpenRouter 呼叫固定版本的 Jev。目前的價格與可用性請以模型頁面為準。
TypeSafe 提供自己的端點和 API 金鑰。官方快速入門使用 jev-latest,也示範一次傳送多個問題。
輸出 token 免費。
符合條件的帳號可能獲得促銷額度;官方公開頁面未註明固定金額,實際餘額與有效期限以控制台為準。
Harness 負責協調 Agent 的模型呼叫與工具執行。在需要判斷的節點,Jev 讀取使用者訊息、待執行的工具呼叫或 Agent 狀態,回傳結構化結果;後續分支由程式碼決定,開放式工作仍交給聊天模型。
ModelRouterMiddlewarebefore_agent → wrap_model_call執行開始前判斷最新的使用者請求,選定適合的模型,並在這次執行中沿用。選項、機率與信心值會留在 Agent 狀態中,供後續邏輯使用。
AutoModeMiddlewarewrap_tool_call在指定工具執行前檢查呼叫。如果 Jev 判定風險較高或授權不足,中介軟體會阻止呼叫並回傳錯誤 ToolMessage;它不會自動請求人員核准。
TypeSafeClassifierChoice · Score · Noul也可以在自訂中介軟體加入檢查點:把 Agent 訊息或狀態交給 TypeSafeClassifier,以 Choice、Score 或 Noul 提問,再由程式碼決定分支或交由人工複核。
# 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)// 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);模型選中的選項鍵,也是機率最高的選項。
依各等級的機率加權得出的位置,可能落在兩個等級之間。
是非問題的 0 到 1 數值;越接近 1 越傾向於「是」。
正式上線前,請用具代表性的客服案件測試、記錄模型版本,並將結果不確定或出錯代價高的情況交由人工審核。範例中的 0.8 只是示意門檻。
透過持續更新的公開儲存庫,或不定期寄送的電子報精選,掌握新的 Jev 專案、System One 社群模型與實際應用案例。