我给我家做了一个 AI 厨神
家里最难的不是做饭,是决定吃什么。我做了一个小程序模块,拍张冰箱照片就能推荐今晚的菜。这是一篇没上线的开发手记。
这个功能还没上线。写下来一方面是给自己留个记录,另一方面是 hoping 有人能指出我没想到的问题。
起因
我家每天最消耗人的事不是做饭,是决定吃什么。
这个问题的本质是:决策疲劳。你工作了一天,站在冰箱前面,里面有鸡蛋、西红柿、半棵白菜,你要在三十秒内给出一个所有人都不反对的答案。这个任务的难度被严重低估了——它不是”选一个菜”,而是同时满足食材库存、家里人的口味、今天的天气、做菜时长,以及”昨天刚吃过这个”这类隐性约束。
市面上的菜谱 App 解决不了这个问题。它们是搜索引擎的思路:你输入菜名,它给你菜谱。但我的问题从来不是”红烧肉怎么做”,而是”我手里这些东西能做什么”。
所以这个模块要解决的是从库存到决策这一段,不是菜谱教学。
它长什么样
做成了聊天界面。打开是一个 AI 对话,顶部一行状态:“你的专属厨神 · 在线”。
底下有几个快捷入口,对应最高频的几种问法:
- 冰箱里有鸡蛋西红柿,推荐道菜
- 今天想吃点辣的
- 帮我规划一周晚餐
- 推荐清淡的家常菜
输入框旁边有一个上传按钮,可以直接拍冰箱或者食材的照片。这是最值得做的一个交互——因为”报菜名”这个动作本身就很累,你得先知道家里有什么才能说。拍一张照片,比让用户打字列清单要自然得多。
几个关键的设计决定
为什么是聊天,而不是一个表单?
一开始我想做成表单:选食材、选口味、点推荐。画完原型就放弃了。表单的问题是它强迫用户把需求结构化,而”今天吃什么”这件事的核心恰恰是你也不知道自己想要什么。聊天的好处是用户可以含糊其辞——“随便来点辣的”这种输入在表单里没法表达。
代价是对话轮次变多、token 消耗变高。这个后面再说。
为什么要做”口味偏好”设置?
界面上有一条提示:“还未打造你的厨神,点这里设置口味偏好”。
一开始没打算做这个。模型本身就知道什么是清淡什么是辣,但做了之后发现不对——模型知道的是”普遍意义上的清淡”,不知道你家的清淡。有人家的清淡是不放辣椒,有人家的清淡是少油但要有锅气。
这个偏好设置本质上是在给每个家庭建立一个很轻的画像。它只有几个字段,但决定了推荐结果是不是”像你家的菜”。
为什么每天限 20 次?
界面上有”今日剩余 20/20”。这个数字不是随便定的。
聊天式交互的问题是成本不可控。用户可以无限追问”再换一个""这个会不会太咸""我儿子不吃香菜”。每次追问都是一次模型调用,还要带上前面的上下文。20 次/天是我测算后觉得既不会明显影响体验、又能把单用户成本压在一个可接受范围的数字。
上线之后如果发现 20 次拦不住真实用户,说明我对使用频率的预估错了,再调。
没解决的问题
写几个我还拿不准的,如果有做过类似东西的人看到,希望能给点意见。
一,识别的准确率。 拍照识别食材这件事,常见食材(鸡蛋、西红柿、白菜)没问题,但冰箱深处那种用保鲜盒装着的剩菜、包装袋没拆的调料,识别率会掉。识别错了然后基于错误信息推荐,用户的信任会立刻崩掉。目前的一个思路是识别结果先展示给用户确认,但这又多了一步操作,跟”拍一张就好”的初衷矛盾。
二,推荐的同质化。 大模型推荐菜有个很讨厌的倾向:不管你怎么问,它都倾向于推荐那几个最常见的家常菜。番茄炒蛋会以某种形式反复出现。单纯靠 prompt 约束效果一般,可能需要引入一些随机性或者做一轮去重。
三,一周晚餐规划这个功能的定位。 “帮我规划一周晚餐”听起来很美好,但真实家庭的一周是被各种突发情况打断的——今天加班、明天有人来、后天孩子说想吃炸鸡。规划得再好,第二天就作废了。这个功能到底应该做成”一次性生成七天的计划”,还是”每天根据剩余食材和之前吃过的动态调整”,我还没想清楚。后者更智能,但也更贵、更难做对。
接下来
功能基本齐了,卡在上线前的最后一轮打磨。上线之后我会把真实的用户反馈、成本数据和使用频率写一篇后续——尤其是那个”每天 20 次”的假设到底对不对。
如果你也在做类似的东西(食材识别、菜谱推荐、家庭场景的 LLM 应用),欢迎交流,微信号在关于页。
关注我