2026.10 — Jett 1.0 已发布 · 一次调用,给一组带把握的决定→
Evon Lab

一条退货工单,从进来到派出去

复合4 跳

四跳:认意图 → 查规则 → 算金额 → 定去向,全程不到半秒

客服系统的第一条流水线。每一跳都是一次完整的判断调用,而且后一跳问什么由前一跳决定 —— 认出是退款才谈得上查退货规则,查完规则才知道该不该算钱。

为什么要快 四跳串起来才是一个完整决定。每跳 40 毫秒总共 160 毫秒,人感觉不到;每跳换成几秒级的模型就是十几秒 —— 那条流水线根本立不起来。

接线长什么样

判断层和计算层之间没有依赖,所以它们并行发 —— 串起来等于白花一个来回。

① 你的程序

状态一直在你这边,模型不持有任何东西

合法动作由你的代码生成,模型只在里面挑

一段话 + 选项
② 判断层 · Jett

7 个问题一次前向答完,不是问 7 次

回来的是选项 + 把握程度,不用再解析文字

② 数值 · Jett(与判断同一次请求)

需要的那个数随判断一起回来

精确值,带单位,可以逐位核对

答案 + 那个数
③ 你的程序

执行动作,世界更新

然后进入下一跳(共 4 跳)

往返 7 问 · 1 个数值问题 · 4 跳串行

当时的情况

一段话,和你真的会拿到的一样

「我上周买的那件外套,拆开发现袖口线头很多,想退。订单 458 元,当时运费 12 元我自己出的。已经穿过一次但没洗。今天第 7 天。」

这条流水线上的 4 跳

后一跳问什么,由前一跳的结果决定 —— 所以它们必须串行,也正因为串行,每一跳的快慢才会被乘起来。

  1. 第 1 跳 · 这条消息想干什么

    先认意图。认成「催物流」,后面整条线就全错了 —— 而这一跳最便宜。

    选一个客户的主要诉求是什么?
    退款退货换货物流与配送投诉服务以上都不是
  2. 第 2 跳 · 它够不够无理由退货的条件

    上一跳认出是退款,这一跳才问规则。顺序反过来没有意义 —— 对一条催物流的消息问「符不符合退货条件」是在浪费一次调用。

    是 / 否是否还在 7 天无理由期内?
    是 / 否商品是否已经影响二次销售?
    选一个问题的归属方是谁?
    商品本身有质量问题买家主观不满意描述不足以判断以上都不是
  3. 第 3 跳 · 该退多少钱

    前两跳定了「能退」和「谁的责任」,这一跳才知道该扣什么。这个数要写进退款单,不能是「大概四百」。

    选一个应当扣除哪些费用?
    全额退,运费也退扣退回运费扣运费和折旧以上都不是
    要算的那个数

    扣掉运费和折旧之后实退多少

    • 商品金额458 元
    • 退回运费12 元
    • 穿着折旧10 %
    展开这一步
    #0 = 458 元  (商品金额)
    #1 = 12 元  (退回运费)
    #2 = 10 %  (穿着折旧)
    
    n0 = MUL(#0, #2)
    n1 = SUB(#0, #1)
    n2 = SUB(@n1, @n0)
    result = @n2

    退款金额不是从几个选项里挑一个,是算出来的 —— 而「算出来」和「说出来」的差别就是这一栏存在的理由。 这个演示里扣的两项(运费 + 折旧)是固定的:生产里应当按上一跳选出的扣费项来,所以你会看到判断说「只扣运费」而这里扣了两项。把这件事写在这里,比让页面显得更聪明重要。

  4. 第 4 跳 · 自动通过还是转人工

    有了金额才谈得上「要不要人看一眼」。拿不准就转人工是这一跳的默认答案 —— 自动放行一笔该拦的,比转人工一笔本可自动的贵得多。

    选一个这一单应当怎么处理?
    自动通过,直接退款转卖家确认转人工客服以上都不是
    打个档升级成纠纷的风险
    很低中等很高
① 你的程序

状态一直在你这边,模型不持有任何东西

合法动作由你的代码生成,模型只在里面挑

一段话 + 选项
② 判断层 · Jett

7 个问题一次前向答完,不是问 7 次

回来的是选项 + 把握程度,不用再解析文字

② 数值 · Jett(与判断同一次请求)

需要的那个数随判断一起回来

精确值,带单位,可以逐位核对

答案 + 那个数
③ 你的程序

执行动作,世界更新

然后进入下一跳(共 4 跳)

往返 7 问 · 1 个数值问题 · 4 跳串行

接进你的系统

下面就是这一页真正发出去的东西。把 state 换成你的场景、criteria 换成你的动作集, 它就是你的了。

① 判断层 —— 一次请求,1 个问题一起问
POST /v1/systemone

{
  "model": "memorylake-c1",
  "state": "「我上周买的那件外套,拆开发现袖口线头很多,想退。订单 458 元,当时运费 12 元我自己出的。已经穿过一次但没洗。今天第 7 天。」",
  "questions": {
    "intent": {
      "type": "choice",
      "instructions": "客户的主要诉求是什么?",
      "criteria": {
        "refund": "退款退货",
        "exchange": "换货",
        "shipping": "物流与配送",
        "complaint": "投诉服务",
        "other": "以上都不是"
      }
    }
  }
}

回来的是 {answers: {key: {value, probs}}} ——不用再写一个解析器去猜模型想说什么, 也不用为「它这次多说了一句」写兜底。

② 需要的那个数
"扣掉运费和折旧之后实退多少": {
  "type": "number",
  "unit": "元"
}

→  { "value": ..., "unit": ..., "exact": true }

数值问题和其它问题写在同一个 questions 里, 一次请求一起答完。返回的 exact: true 表示 这个值可以直接拿去跟阈值比大小。

售后与客服 里的其他场景