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 社区模型和实际应用案例。