Jev 模型与模块介绍
liteflow-agent-jev 把自然语言判断接入 LiteFlow 的 SWITCH。业务组件提供输入、判断说明和候选 ID,Jev 选择其中一个选项,LiteFlow 再执行对应组件或子链。它适合客服分流、工单分类,以及根据用户意图选择业务流程或 Agent。
本模块从 LiteFlow 2.16.2 开始提供,需要 JDK 17+。
# Jev 是什么
Jev 是 TypeSafe 提供的结构化决策模型,官方称其为 System One 模型。它针对一份输入状态回答范围明确的问题,直接返回程序可读取的选择、评分或概率,适合放在流程的判断环节。TypeSafe 官方介绍 (opens new window)
Jev 提供三类原语:
| 原语 | 解决的问题 | 返回内容 |
|---|---|---|
| Choice | 从已知选项中选择一个,例如退款、换货、咨询 | 所选选项、各选项概率、置信度 |
| Score | 按事先定义的等级评分,例如工单紧急程度 | 评分、等级概率、置信度 |
| Noul | 判断一个条件是否成立,例如是否明确要求退款 | 条件为真的概率,范围为 0~1 |
liteflow-agent-jev 当前接入的是 Choice。 每执行一次 JevSwitchComponent,会发起一次选择请求。本模块目前不提供 Score、Noul 组件,也不自动合并多个选择节点的请求。
# 用在流程中的优势
- 可以处理语义条件。 比如“暂时先不退了,能不能换一件大一号的”,需要理解否定和意图变化,单靠退款、换货关键词容易分错。
- 输出范围明确。 选择结果来自业务提供的候选集合,框架再校验 ID 是否属于当前
.to(...),不需要从一段自由文本中提取目标组件名。 - 能表达不确定性。 业务可以根据置信度决定是否自动分流;没有合适选项或置信度不足时,进入
DEFAULT分支。 - 调用过程短。 一次分类只请求一次结构化判断,不需要为了选择分支先启动完整的工具调用循环。官方按输入 Token 计费、输出 Token 免费,价格以模型页面 (opens new window)为准;实际耗时仍受输入长度、网络和服务状态影响。
这些优势适用于选项清楚、判断范围有限的任务。复杂的多步推理、回复生成仍可交给后续 Agent;金额计算、时间比较、权限判断等确定性逻辑继续由业务代码处理。Jev 当前主要以英文训练,中文场景应使用自己的数据验证。当前能力边界 (opens new window)、语言支持 (opens new window)
# 模块负责什么
JevSwitchComponent 位于 com.yomahub.liteflow.agent.jev 包,直接继承 NodeSwitchComponent。业务无需实现 processSwitch(),框架负责:
- 校验候选 ID、描述和置信度阈值。
- 使用独立的 Jev 配置,按
provider通过 TypeSafe 的 System One 接口或 OpenRouter 的 Decisions API 发起 Choice 请求。 - 校验响应,并通过
onDecision()提供完整的原始结果。 - 返回目标 ID,或返回空字符串触发现有的
DEFAULT机制。
该模块只依赖 liteflow-core,不要求引入 liteflow-agent-core、配置聊天模型、初始化会话存储或启动 Docker。使用 Spring Boot 时,再引入对应的 LiteFlow starter。Jev 的目标可以是普通组件,也可以是已注册的 Agent 组件或子链。
# 本章内容
本章按照接入顺序介绍 Jev 选择组件:
| 小节 | 内容 |
|---|---|
| 依赖与配置 | 引入模块,选择 TypeSafe/OpenRouter,配置 API Key、地址、模型、超时与阈值 |
| 编写选择组件 | 声明输入、指令与候选 ID,接入 SWITCH 并获取结果 |
| 置信度与异常处理 | 区分置信度与选项概率,配置人工兜底和异常处理 |
| 客服演示与测试 | 启动浏览器演示,查看运行截图和离线测试命令 |



