在 n8n 工作流里用 Jev:稳定的决策节点

更新于 适用版本 Jev 1.13

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
URLhttps://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——干净取值如 yesnofallback,再也不用对散文做字符串匹配。

兜底路径怎么接

兜底分支要做三件事:记录原始响应和 rationale、通知人(邮件、Slack、工单),可选执行一个安全默认动作让流程跑完。工单分诊与情感案例展示的就是这种接法——兜底直接接到客服队列。

渠道本身的取舍(OpenRouter 与官方 API)见 API 渠道(api-channels)指南,从零发起第一次调用见第一次 API 调用(first-api-call)指南。官方 API 的端点与字段请始终以 typesafe.ai 官方文档为准。

本文适用版本:Jev 1.13。

FAQ

常见问题

n8n 里怎么调用 Jev?

用 HTTP Request 节点请求 OpenAI 兼容端点 https://openrouter.ai/api/v1/chat/completions,请求头放 OpenRouter API key,请求体写模型 id,问题放在 messages 数组里。

工作流里怎么读取结构化结果?

在 HTTP Request 之后加一个 Code 或 Set 节点,把 choices[0].message.content 当 JSON 解析,然后基于 answer 和 confidence 字段做分支,而不是对原始文本做字符串匹配。

错误分支应该做什么?

瞬时 HTTP 失败用 n8n 内置重试;低置信度、JSON 解析失败或重试后仍失败的结果走兜底路径——人工队列或安全默认动作——而不是让整个工作流崩掉。

继续阅读