一条退货工单,从进来到派出去
复合4 跳四跳:认意图 → 查规则 → 算金额 → 定去向,全程不到半秒
客服系统的第一条流水线。每一跳都是一次完整的判断调用,而且后一跳问什么由前一跳决定 —— 认出是退款才谈得上查退货规则,查完规则才知道该不该算钱。
为什么要快 四跳串起来才是一个完整决定。每跳 40 毫秒总共 160 毫秒,人感觉不到;每跳换成几秒级的模型就是十几秒 —— 那条流水线根本立不起来。
接线长什么样
判断层和计算层之间没有依赖,所以它们并行发 —— 串起来等于白花一个来回。
状态一直在你这边,模型不持有任何东西
合法动作由你的代码生成,模型只在里面挑
7 个问题一次前向答完,不是问 7 次
回来的是选项 + 把握程度,不用再解析文字
需要的那个数随判断一起回来
精确值,带单位,可以逐位核对
执行动作,世界更新
然后进入下一跳(共 4 跳)
当时的情况
一段话,和你真的会拿到的一样
「我上周买的那件外套,拆开发现袖口线头很多,想退。订单 458 元,当时运费 12 元我自己出的。已经穿过一次但没洗。今天第 7 天。」
这条流水线上的 4 跳
后一跳问什么,由前一跳的结果决定 —— 所以它们必须串行,也正因为串行,每一跳的快慢才会被乘起来。
- 第 1 跳 · 这条消息想干什么
先认意图。认成「催物流」,后面整条线就全错了 —— 而这一跳最便宜。
选一个客户的主要诉求是什么?退款退货换货物流与配送投诉服务以上都不是 - 第 2 跳 · 它够不够无理由退货的条件
上一跳认出是退款,这一跳才问规则。顺序反过来没有意义 —— 对一条催物流的消息问「符不符合退货条件」是在浪费一次调用。
是 / 否是否还在 7 天无理由期内?是 / 否商品是否已经影响二次销售?选一个问题的归属方是谁?商品本身有质量问题买家主观不满意描述不足以判断以上都不是 - 第 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 跳 · 自动通过还是转人工
有了金额才谈得上「要不要人看一眼」。拿不准就转人工是这一跳的默认答案 —— 自动放行一笔该拦的,比转人工一笔本可自动的贵得多。
选一个这一单应当怎么处理?自动通过,直接退款转卖家确认转人工客服以上都不是打个档升级成纠纷的风险很低中等很高
状态一直在你这边,模型不持有任何东西
合法动作由你的代码生成,模型只在里面挑
7 个问题一次前向答完,不是问 7 次
回来的是选项 + 把握程度,不用再解析文字
需要的那个数随判断一起回来
精确值,带单位,可以逐位核对
执行动作,世界更新
然后进入下一跳(共 4 跳)
接进你的系统
下面就是这一页真正发出去的东西。把 state 换成你的场景、criteria 换成你的动作集, 它就是你的了。
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 表示 这个值可以直接拿去跟阈值比大小。