在 n8n 工作流里用 Jev:稳定的决策节点
TL;DR: 在 n8n 里,Jev 就是你能信任的那个决策节点。一个 HTTP Request 节点调用 OpenAI 兼容的 OpenRouter 端点,一个小 Code 节点解析结构化的
{answer, confidence, rationale}响应,IF 节点按 answer 加置信度阈值分支。失败走显式兜底路径,而不是让整次运行中断。下面按节点逐个说明配置。
工作流全貌
触发器(webhook / 定时 / 新记录)
|
v
Set 节点(把输入字段拼成问题文本)
|
v
HTTP Request 节点 -> OpenRouter chat/completions(模型:Jev)
|
+--> HTTP 错误 --> 重试(内置,2-3 次,指数退避)
| |
| +--> 仍失败 --> 兜底路径(通知 / 默认动作)
|
v
Code 节点(把 choices[0].message.content 按 JSON 解析)
|
+--> JSON 无效 --> 兜底路径
|
v
IF 节点(confidence >= 0.85 ?)
|
+--> 是 --> 按 answer 分支(如派单、打标签、审批)
|
+--> 否 --> 兜底路径(人工队列,附 rationale)
每条出口都有明确去处——这就是全部要点:决策节点要么有把握地决定,要么明确地交出去。
HTTP Request 节点配置
| 配置项 | 值 |
|---|---|
| 方法 | POST |
| URL | https://openrouter.ai/api/v1/chat/completions |
| 认证 | Header 认证:Authorization: Bearer <OPENROUTER_API_KEY>(key 存在 n8n 凭据里,不要写死在节点上) |
| 请求体(JSON) | {"model":"typesafe/jev-1.13","temperature":0,"messages":[{"role":"system","content":"Answer yes, no, or unclear."},{"role":"user","content":"{{ $json.question }}"}]} |
| 失败重试 | 开启,2-3 次,带退避 |
| 超时 | 约 30 秒 |
本页用的模型 id 是 typesafe/jev-1.13——上线前请在 OpenRouter 模型页确认确切的模型 slug。
解析节点(Code 节点,JavaScript)
// 输入:HTTP Request 节点返回的 OpenRouter 响应
const raw = $input.first().json;
let parsed;
try {
// 示例数据(example fixture):
// {"answer":"yes","confidence":0.97,"rationale":"..."}
parsed = JSON.parse(raw.choices[0].message.content);
} catch (e) {
return [{ json: { branch: "fallback", reason: "invalid-json", raw } }];
}
const lowConfidence = parsed.confidence < 0.85;
if (lowConfidence) {
return [{ json: { branch: "fallback", reason: "low-confidence", ...parsed } }];
}
return [{ json: { branch: parsed.answer, ...parsed } }];
下游 IF 节点从此只看 $json.branch——干净取值如 yes、no、fallback,再也不用对散文做字符串匹配。
兜底路径怎么接
兜底分支要做三件事:记录原始响应和 rationale、通知人(邮件、Slack、工单),可选执行一个安全默认动作让流程跑完。工单分诊与情感案例展示的就是这种接法——兜底直接接到客服队列。
渠道本身的取舍(OpenRouter 与官方 API)见 API 渠道(api-channels)指南,从零发起第一次调用见第一次 API 调用(first-api-call)指南。官方 API 的端点与字段请始终以 typesafe.ai 官方文档为准。
本文适用版本:Jev 1.13。
FAQ
- n8n 里怎么调 Jev? HTTP Request 节点 POST 到
https://openrouter.ai/api/v1/chat/completions,Header 认证,请求体带模型 id,问题放 messages 数组。 - 怎么读取结构化结果? Code 节点把
choices[0].message.content按 JSON 解析,之后工作流按answer和confidence字段分支。 - 错误分支做什么? 瞬时失败用内置重试;低置信度、JSON 无效或重试仍失败的走兜底路径——人工队列或安全默认动作——运行不会无声死掉。