记忆 · 它记得你对花生过敏
新酷四个月前说过一次,今天这道菜里有 15 克花生
记忆层最该拦下的一类事:用户说过的话,不该再问第二遍,更不该被忘掉。
为什么要快 推荐是边打字边出的。这一跳慢下来,那道菜已经推到屏幕上了 —— 撤回比不推更糟。
过敏相关的判断以本人和医生的意见为准,这里只演示「记忆 + 精确比较」这条链路。
接线长什么样
判断层和计算层之间没有依赖,所以它们并行发 —— 串起来等于白花一个来回。
状态一直在你这边,模型不持有任何东西
合法动作由你的代码生成,模型只在里面挑
3 个问题一次前向答完,不是问 3 次
回来的是选项 + 把握程度,不用再解析文字
需要的那个数随判断一起回来
精确值,带单位,可以逐位核对
执行动作,世界更新
然后进入下一个 tick
当时的情况
一段话,和你真的会拿到的一样
记忆里有一条 128 天前记下的:「对花生过敏,微量(2 克以内)没事,一整份会起疹子」。现在用户问:「楼下那家川菜的招牌宫保鸡丁值得试吗?」这道菜一份大约含 15 克花生米。
要判断的事
一次问完,回来的是选项和把握程度,不是一段还要再解析的文字
这道菜的花生量是用户耐受量的几倍
- 这道菜的花生量15 g
- 记忆里的耐受上限2 g
展开这一步
#0 = 15 g (这道菜的花生量) #1 = 2 g (记忆里的耐受上限) n0 = DIV(#0, #1) result = @n0
记忆里存的是「2 克以内没事」,菜里是 15 克。这两个数要真的比一次 —— 只记住「他过敏」而不记住阈值,就只能一律拒绝,那样的助手很快就没人用了。
状态一直在你这边,模型不持有任何东西
合法动作由你的代码生成,模型只在里面挑
3 个问题一次前向答完,不是问 3 次
回来的是选项 + 把握程度,不用再解析文字
需要的那个数随判断一起回来
精确值,带单位,可以逐位核对
执行动作,世界更新
然后进入下一个 tick
接进你的系统
下面就是这一页真正发出去的东西。把 state 换成你的场景、criteria 换成你的动作集, 它就是你的了。
POST /v1/systemone
{
"model": "memorylake-c1",
"state": "记忆里有一条 128 天前记下的:「对花生过敏,微量(2 克以内)没事,一整份会起疹子」。现在用户问:「楼下那家川菜的招牌宫保鸡丁值得试吗?」这道菜一份大约含 15 克花生米。",
"questions": {
"action": {
"type": "choice",
"instructions": "应该怎么回应?",
"criteria": {
"recommend": "正常推荐,不必提过敏",
"warn": "推荐的同时明确提醒含花生",
"avoid": "不推荐这道菜,换一道",
"other": "以上都不合适"
}
},
"use_memory": {
"type": "noul",
"instructions": "这条记忆是否与当前问题相关?"
},
"severity": {
"type": "score",
"instructions": "如果直接推荐,后果的严重程度",
"criteria": [
"无所谓",
"会不舒服",
"有健康风险"
]
}
}
}回来的是 {answers: {key: {value, probs}}} ——不用再写一个解析器去猜模型想说什么, 也不用为「它这次多说了一句」写兜底。
"这道菜的花生量是用户耐受量的几倍": {
"type": "number",
"unit": "x"
}
→ { "value": ..., "unit": ..., "exact": true }数值问题和其它问题写在同一个 questions 里, 一次请求一起答完。返回的 exact: true 表示 这个值可以直接拿去跟阈值比大小。