1. 项目概述当AI成为你的私人厨房管家“今晚吃什么”——这大概是每个家庭每天都要上演的灵魂拷问。更别提后续的步骤了打开冰箱面对一堆零零散散的食材发呆打开手机App在成千上万的菜谱里大海捞针还得琢磨着怎么把手头的食材用上好不容易选定一个一看配料表发现缺东少西瞬间泄气。做饭这件本该充满创造力和幸福感的事常常被这些琐碎的前期准备消磨殆尽。我最近花了不少时间折腾出了一个能真正解决这些痛点的东西一个具备自主“智能体”Agentic能力的AI烹饪助手。它不是一个简单的菜谱搜索引擎也不是一个只会复读步骤的语音播报器。我把它想象成一个真正理解你、能替你思考和规划的厨房管家。你只需要告诉它“冰箱里有鸡胸肉、两个番茄、半颗洋葱还有一包意面”或者干脆拍张冰箱内部的照片给它它就能在几秒钟内结合你的口味偏好、饮食限制、甚至是想花多少时间生成一份专属的、可执行的烹饪方案。这背后是AI从“被动应答”到“主动规划”的一次关键升级。这个项目的核心价值在于将AI的“智能”从信息检索层面提升到了任务规划和决策执行的层面。它不再是你问一句“番茄炒蛋怎么做”它答一句“第一步打鸡蛋”。而是你提供一个模糊的、充满约束条件的目标“用现有食材做顿好吃的要快”它能主动拆解问题、调用工具、规划步骤并最终交付一个完整的解决方案。这就是“智能体”的魅力。接下来我就把这套系统的设计思路、技术实现的关键细节以及我踩过的那些坑毫无保留地分享给你。2. 系统架构与核心设计思路2.1 从“菜谱库”到“烹饪大脑”的范式转变传统的烹饪App或网站其核心是一个庞大的、静态的“菜谱数据库”。用户的行为模式是“检索-筛选-阅读-执行”。这种模式的瓶颈非常明显第一它要求用户对自己想要什么有非常清晰的认识第二它无法灵活处理“食材约束”这个现实问题第三它完全不具备应对突发状况比如某一步做砸了的应变能力。我设计的这个智能体其核心是一个“规划-执行-感知”的循环大脑。它的工作流程更像一个经验丰富的大厨目标理解与约束分析接收用户的自然语言指令如“用鸡胸肉和西兰花做顿低脂晚餐”或图像信息解析出核心目标做晚餐、硬性约束食材鸡胸肉、西兰花要求低脂和软性偏好可能隐含的“要好吃”、“别太麻烦”。方案生成与评估基于一个内部的知识图谱融合了菜谱、食材特性、烹饪技法、风味搭配原则生成多个候选的烹饪方案。每个方案都包含具体的菜式、步骤、预估时间和难度。然后系统会用一个评估模型根据约束条件和用户历史偏好对这些方案进行打分排序。步骤拆解与实时指导选定最优方案后系统并非一次性吐出所有步骤而是将其拆解为一个个原子化的任务例如“将200克鸡胸肉切成1.5厘米见方的丁”。在用户执行时它可以根据用户的反馈如“肉切好了”或通过计时器来推进到下一步并给出下一步的详细指导。异常处理与动态调整这是智能体的高级能力。比如用户反馈“我的西兰花好像不太新鲜了”系统能立刻识别这是一个“食材状态异常”然后启动备选方案要么建议用户剔除不新鲜的部分并调整用量要么直接替换方案中的西兰花为其他可用蔬菜如冰箱里还有的彩椒并重新计算和调整后续的调味步骤。这个架构的关键在于菜谱数据不再是直接呈现给用户的终点而是这个“烹饪大脑”进行推理和规划所使用的“知识燃料”。2.2 技术栈选型与核心组件拆解要实现上述思路我选择了一条以大型语言模型为核心结合专项工具链的路径。纯粹依赖一个“通才”大模型比如GPT-4也能做出雏形但它在专业性、稳定性和成本上都有问题。我的方案是“核心大脑专业工具”的混合架构。核心推理引擎大脑我选择了Claude 3 Haiku。相比更大的模型Haiku在推理速度、成本和对长指令遵循方面取得了很好的平衡。它的核心任务是理解用户意图、进行多步规划、协调各个工具调用、以及生成自然流畅的对话。我不需要它记忆全世界所有的菜谱我只需要它擅长逻辑规划和语言交互。知识库与检索系统记忆这是专业性的保障。我自建了一个结构化的烹饪知识库数据来源于多个权威菜谱网站和烹饪书籍并进行了清洗和标准化。每条知识记录包含菜谱名称、所需食材带精确用量和可替代项、步骤、烹饪技法、口味标签、难度、时间、适用厨具等。这个知识库通过向量数据库我用的ChromaDB进行索引。当智能体需要生成方案时Claude大脑会先根据用户约束生成一个搜索查询从向量库中召回最相关的候选菜谱片段作为它规划的具体依据。视觉识别模块眼睛为了支持“拍冰箱找菜谱”的功能我集成了一个图像识别模型。这里没有用特别庞大的通用模型而是用了在食品识别数据集上精调过的ViT模型。它能识别常见的蔬菜、水果、肉类、包装食品等并输出一个带置信度的食材列表。这个列表会成为约束条件的一部分输入给核心推理引擎。工具调用层双手智能体可以调用一系列预设工具来完成任务。这些工具包括search_recipes_by_ingredients(ingredients_list, constraints): 根据食材和约束检索知识库。check_ingredient_substitution(original, available): 查询食材替代方案。parse_recipe_steps(recipe_text): 将菜谱文本解析为结构化的步骤列表。set_timer(duration, task_name): 设定烹饪计时器。convert_units(amount, from_unit, to_unit): 单位换算。scale_recipe(recipe, serving_size): 根据用餐人数缩放菜谱用量。Claude大脑通过函数调用Function Calling能力来灵活使用这些工具。注意模型选型上我最初尝试过完全依赖GPT-4联网搜索。结果发现一是成本高二是搜索到的菜谱质量参差不齐经常出现用量模糊、步骤跳跃的问题导致规划失败。自建高质量、结构化的知识库虽然前期投入大但确保了系统输出方案的稳定性和专业性从长期看是更优解。3. 核心工作流程与实现细节3.1 用户交互与意图解析交互起点可以是一句话、一张图或者两者结合。系统首先需要准确理解用户的“混沌”意图。自然语言指令解析用户说“我只有鸡腿和土豆想做点下饭的不要太辣。” Claude大脑会将其解析为一个结构化的意图对象{ “goal”: “cook_a_meal”, “hard_constraints”: { “ingredients_must_include”: [“chicken_thighs”, “potatoes”], “ingredients_must_exclude”: [], “flavor_constraints”: {“spiciness”: “low”} }, “soft_preferences”: { “meal_type”: “下饭”, “cooking_time_preference”: “medium”, “difficulty_preference”: “any” }, “context”: “available_ingredients_only” }这里的关键是区分“硬约束”和“软偏好”。硬约束必须用这些食材、不能辣是筛选方案的铁律软偏好要下饭则是排序方案的依据。系统会明确告诉用户它理解了什么比如回复“明白我将用鸡腿和土豆为主料寻找一道不辣、下饭的菜。正在为您规划...”图像识别与信息融合如果用户上传了冰箱照片视觉模块会输出[(carrot, 0.95), (bell_pepper, 0.88), (chicken_breast, 0.92), (milk, 0.98)]。这个列表会自动转化为硬约束中的“ingredients_must_include”。如果同时有文字指令如“用这些做个汤”那么视觉识别的食材列表将与文字指令进行融合共同构成完整的约束条件。3.2 智能规划与菜谱生成这是整个系统最核心的环节。解析出意图后Claude大脑会启动一个多步的规划循环。第一步知识检索。大脑根据约束条件生成一个或多个搜索查询。例如针对上面的鸡腿土豆例子它可能生成“中式 鸡腿 土豆 炖菜 不辣 下饭菜谱”和“鸡腿 土豆 烤箱 食谱 简单”。这些查询被发送到向量知识库召回Top 5相关的菜谱片段。第二步方案构思与评估。大脑拿到这些菜谱片段后不会直接推荐其中一个而是会进行“脑内风暴”。它可能会想“召回的结果有‘土豆烧鸡块’、‘咖喱鸡’但咖喱可能辣需排除、‘香煎鸡腿配烤土豆’。结合用户‘下饭’的偏好‘土豆烧鸡块’的汤汁拌饭最合适。且烹饪方法烧符合现有厨具锅。” 它会为每个可行方案生成一个评估摘要包括预估总时间、复杂度、与用户偏好的匹配度。第三步生成可执行方案。选定“土豆烧鸡块”后大脑会从知识库中获取该菜谱的完整、结构化信息。然后它会做一次“个性化适配”用量标准化知识库中的菜谱可能是“4人份”。如果用户说“就我一个人吃”大脑会调用scale_recipe工具将所有食材用量按比例缩减为1/4。步骤口语化与细化将原菜谱中“鸡腿焯水”这样的步骤细化为“将2个鸡腿洗净放入冷水中加入3片姜和1勺料酒开大火煮至沸腾后继续煮2分钟捞出用温水冲洗干净”。这一步极大地提升了可操作性尤其是对新手。生成备选清单明确列出需要的所有食材、调料和厨具并核对用户已有项。对于缺失项如“料酒”它会调用check_ingredient_substitution工具提供替代建议如“可用少量白酒加一勺水代替”。最终呈现给用户的是一个包含“目标菜式”、“适配后用量清单”、“细化步骤”、“预估总时长”、“关键技巧提示”的完整方案卡片。3.3 渐进式引导与执行监控方案生成不是终点。智能体会将整个烹饪过程视为一个需要它引导的项目。步骤拆解与状态管理系统内部维护一个任务列表将做菜分解为“准备阶段”备料、“烹饪阶段”、“收尾阶段”。每个大阶段下是具体的原子任务如“切好200克土豆块”、“热锅下油”、“小火焖煮15分钟”。用户每完成一步可以通过语音或点击“下一步”进行反馈。系统更新任务状态并推送下一步的指导。计时器与主动提醒对于需要计时的步骤如“焖煮15分钟”智能体会自动调用set_timer工具并在后台计时。时间快到或到时它会主动提醒用户“还剩3分钟您可以准备下一步的葱花。”或者“15分钟到了请打开锅盖检查一下汤汁收得如何了。”这种主动式提醒能有效防止用户因忙于其他事而忘记关键节点。异常情况处理这是体现“智能体”自主性的关键。假设在“小火焖煮”步骤用户反馈“水好像快烧干了土豆还没很软。” 系统会立刻识别到“偏离预期状态”。它不会死板地让用户继续煮而是会启动问题诊断可能原因分析火太大锅盖没盖严初始水加少了解决方案生成根据最可能的原因初始水加少了它可能会建议“请立即加入约100毫升热水注意是热水不能加冷水转为中小火再盖上盖子焖煮10分钟并密切关注。”方案调整如果用户没有热水它可能会调整方案“如果没有热水可以关火加入常温饮用水重新煮沸后转小火继续焖。”这个过程展示了AI从静态指导者变为动态协作者的能力。4. 关键挑战与解决方案实录4.1 知识库构建的“脏活累活”构建一个高质量、结构化的烹饪知识库是项目最耗时但也是最重要的基础。网上菜谱数据质量良莠不齐存在大量问题用量模糊“适量”、“少许”、“一小把”。步骤跳跃“将食材翻炒均匀后焖至入味”——“入味”是多久描述主观“火候掌握好”——什么火多大格式混乱纯文本、HTML混杂图片步骤。我的解决方案是“人工规则AI清洗”的组合拳制定数据标准我首先定义了一个严格的JSON Schema规定每条菜谱必须包含的字段及其格式如ingredients是一个列表每个元素包含name,amount(数字),unit,optional(布尔值)。初始爬取与过滤从几个格式相对规范的网站爬取数据作为种子。大模型辅助解析与补全对于不规范的菜谱文本我编写了提示词让GPT-4帮我进行结构化提取。例如将“酱油两勺糖一勺醋少许”解析为[{name: 酱油, amount: 2, unit: 汤匙}, {name: 糖, amount: 1, unit: 汤匙}, {name: 醋, amount: null, unit: 少许, optional: true}]。对于“焖至入味”我会让模型根据同类菜谱补充一个建议时间范围。关键字段的标准化创建了标准的“烹饪技法”词典如“爆炒”、“清蒸”、“红烧”、“烤箱烘焙”和“食材”同义词词典如“西红柿”、“番茄”、“tomato”统一为“番茄”确保检索的准确性。向量化与索引将清洗后的菜谱文本包括名称、食材、步骤摘要、口味标签转换为向量存入ChromaDB。这里的一个技巧是除了整体向量化我还对“食材列表”单独做了向量化索引专门用于应对“根据现有食材找菜谱”这个高频场景大幅提升了检索精度和速度。实操心得不要指望一步到位。知识库建设是迭代过程。我先用5000条高质量数据让系统跑起来然后在用户使用过程中收集反馈比如用户经常问“这个步骤能再详细点吗”针对性地去补充和细化那部分菜谱的数据。同时建立一个简单的贡献机制允许用户对模糊步骤提交“细化建议”经审核后可以反向补充到知识库。4.2 让AI理解“少许”和“火候”中餐烹饪中大量存在的模糊性描述是AI规划面临的一大挑战。“盐少许”、“油温七成热”、“小火慢炖”这些对人类厨师而言靠经验把握的概念对AI来说是黑盒。我的解决思路是“量化范围感官描述对标”建立量化对照表我创建了一个内部映射表。例如“少许”对应 1-3 克盐/糖或 5-10 毫升液体。“适量”根据菜谱整体用量给出一个范围如“酱油适量”可能指 10-20 毫升。“小火/中火/大火”对应家用燃气灶旋钮的时钟位置描述如“小火旋钮指向7点到8点位置火焰高度约1厘米”。在指导中明确范围生成步骤时AI会这样描述“加入盐少许建议约2克相当于一个牙膏盖的量”“烧至油温七成热油面有轻微波纹用筷子插入周围冒密集小泡”。提供容错空间AI在规划时会倾向于选择容错率更高的方案。例如在推荐给新手的菜谱中会优先选择“烤箱设定180度25分钟”这种精确控温的方案而不是“油炸至金黄”这种需要经验判断的方案。同时在指导语中强调“如果第一次做盐可以先少放一点出锅前尝一下味道再决定是否添加。”4.3 处理复杂约束与用户偏好用户的需求往往是多维度且矛盾的。比如“我想吃健康的但又要快还要好吃冰箱里只有鸡胸肉和生菜。” “健康”低油低盐、“快”步骤少、烹饪时间短、“好吃”可能意味着需要一定的调味或烹饪技巧、“食材有限”这几个约束在一起会让简单的检索失效。智能体的策略是“约束优先级排序与折中方案生成”识别约束优先级通过与用户的简短对话澄清。例如系统会问“在‘健康’、‘快速’和‘尽可能美味’之间如果必须排个序您更看重哪两个” 根据用户的回答动态调整规划算法的权重。分层规划首先用硬约束食材鸡胸肉、生菜筛选出一批基础菜谱。然后根据优先级进行排序。如果“快”和“健康”优先系统可能会推荐“香煎鸡胸肉配生菜沙拉”煎鸡胸10分钟洗切生菜5分钟并给出让鸡胸肉更“好吃”的技巧提示“鸡胸肉切片后用刀背拍松用少量生抽、黑胡椒和淀粉腌制10分钟可以使口感更嫩。”提供“A或B”选择当无法完美满足所有条件时智能体会生成2-3个各有侧重的方案供用户选择。例如方案A侧重快速健康鸡胸肉蔬菜卷鸡胸肉煮熟撕丝与生菜、甜椒丝用低脂沙拉酱拌制用全麦饼卷起。总时长约15分钟。方案B侧重美味仿照宫保鸡丁风味的鸡胸肉炒生菜梗将生菜梗切丁同炒。总时长约20分钟口味更丰富。 把选择权交给用户同时清晰告知每个方案的侧重点和权衡点。5. 实际应用效果与迭代方向在实际测试中这个智能体最让我满意的不是它推荐了什么惊天动地的菜谱而是它真正缓解了“决策疲劳”和“操作焦虑”。很多测试者反馈感觉不是在看一个冰冷的菜单而是在和一个懂行的朋友商量今晚吃什么这个朋友还能手把手带你做。效果亮点极高的场景覆盖率从“清空冰箱”到“想吃某道特定菜”从“一人食”到“家庭聚餐”它都能给出靠谱的起点方案。显著降低失败率由于步骤被极度细化和口语化并包含了大量“为什么这么做”的小贴士如“热锅凉油可以防止粘锅”新手用户的烹饪成功率大幅提升。动态适应性在一次测试中用户不小心把糖当成了盐在步骤中反馈“好像太甜了”。系统没有报错而是立刻给出了补救建议“如果是炒菜可以尝试加入少量醋和生抽来平衡味道并减少后续的糖或酱料添加。”遇到的挑战与迭代方向硬件联动是下一个壁垒目前还停留在“语音/图文指导”层面。真正的“智能烹饪”需要与智能厨电联动。例如告诉AI“开始红烧肉模式”它能自动设定智能电压力锅的程序或者在煎牛排时通过连接智能测温计AI能实时监控核心温度并提示“现在翻面”或“已达五分熟可以出锅”。这需要与硬件厂商进行生态合作。风味创造的边界目前的系统本质上是“已知菜谱的智能组合与适配”。如何让AI在理解风味化学如哪些化合物共同产生某种味道的基础上进行真正的“创意菜谱生成”甚至根据用户的口味反馈进行个性化风味调整是更前沿的探索方向。成本与响应速度的平衡每次交互都调用大模型和检索在用户量增大时成本不容忽视。我正在尝试将一些高频、固定的决策路径如“冰箱里有鸡蛋和番茄 - 优先推荐番茄炒蛋或番茄鸡蛋汤”沉淀为更轻量的规则引擎让大模型专注于处理真正复杂、非标准的请求以优化体验和成本。这个项目让我深刻体会到AI的价值不在于替代人类而在于放大人类的能力。它替代的不是烹饪的乐趣和创意而是那些繁琐、耗神的前期规划和令人焦虑的不确定性。当AI帮你扫清了这些障碍你便能更专注地享受食物在锅中变化的声音、香气弥漫的过程以及最终与家人分享成果的喜悦。技术最终服务的是这份更具象、更温暖的生活体验。
基于AI智能体与知识图谱的个性化烹饪助手:从规划到执行的系统实践
发布时间:2026/6/1 6:44:02
1. 项目概述当AI成为你的私人厨房管家“今晚吃什么”——这大概是每个家庭每天都要上演的灵魂拷问。更别提后续的步骤了打开冰箱面对一堆零零散散的食材发呆打开手机App在成千上万的菜谱里大海捞针还得琢磨着怎么把手头的食材用上好不容易选定一个一看配料表发现缺东少西瞬间泄气。做饭这件本该充满创造力和幸福感的事常常被这些琐碎的前期准备消磨殆尽。我最近花了不少时间折腾出了一个能真正解决这些痛点的东西一个具备自主“智能体”Agentic能力的AI烹饪助手。它不是一个简单的菜谱搜索引擎也不是一个只会复读步骤的语音播报器。我把它想象成一个真正理解你、能替你思考和规划的厨房管家。你只需要告诉它“冰箱里有鸡胸肉、两个番茄、半颗洋葱还有一包意面”或者干脆拍张冰箱内部的照片给它它就能在几秒钟内结合你的口味偏好、饮食限制、甚至是想花多少时间生成一份专属的、可执行的烹饪方案。这背后是AI从“被动应答”到“主动规划”的一次关键升级。这个项目的核心价值在于将AI的“智能”从信息检索层面提升到了任务规划和决策执行的层面。它不再是你问一句“番茄炒蛋怎么做”它答一句“第一步打鸡蛋”。而是你提供一个模糊的、充满约束条件的目标“用现有食材做顿好吃的要快”它能主动拆解问题、调用工具、规划步骤并最终交付一个完整的解决方案。这就是“智能体”的魅力。接下来我就把这套系统的设计思路、技术实现的关键细节以及我踩过的那些坑毫无保留地分享给你。2. 系统架构与核心设计思路2.1 从“菜谱库”到“烹饪大脑”的范式转变传统的烹饪App或网站其核心是一个庞大的、静态的“菜谱数据库”。用户的行为模式是“检索-筛选-阅读-执行”。这种模式的瓶颈非常明显第一它要求用户对自己想要什么有非常清晰的认识第二它无法灵活处理“食材约束”这个现实问题第三它完全不具备应对突发状况比如某一步做砸了的应变能力。我设计的这个智能体其核心是一个“规划-执行-感知”的循环大脑。它的工作流程更像一个经验丰富的大厨目标理解与约束分析接收用户的自然语言指令如“用鸡胸肉和西兰花做顿低脂晚餐”或图像信息解析出核心目标做晚餐、硬性约束食材鸡胸肉、西兰花要求低脂和软性偏好可能隐含的“要好吃”、“别太麻烦”。方案生成与评估基于一个内部的知识图谱融合了菜谱、食材特性、烹饪技法、风味搭配原则生成多个候选的烹饪方案。每个方案都包含具体的菜式、步骤、预估时间和难度。然后系统会用一个评估模型根据约束条件和用户历史偏好对这些方案进行打分排序。步骤拆解与实时指导选定最优方案后系统并非一次性吐出所有步骤而是将其拆解为一个个原子化的任务例如“将200克鸡胸肉切成1.5厘米见方的丁”。在用户执行时它可以根据用户的反馈如“肉切好了”或通过计时器来推进到下一步并给出下一步的详细指导。异常处理与动态调整这是智能体的高级能力。比如用户反馈“我的西兰花好像不太新鲜了”系统能立刻识别这是一个“食材状态异常”然后启动备选方案要么建议用户剔除不新鲜的部分并调整用量要么直接替换方案中的西兰花为其他可用蔬菜如冰箱里还有的彩椒并重新计算和调整后续的调味步骤。这个架构的关键在于菜谱数据不再是直接呈现给用户的终点而是这个“烹饪大脑”进行推理和规划所使用的“知识燃料”。2.2 技术栈选型与核心组件拆解要实现上述思路我选择了一条以大型语言模型为核心结合专项工具链的路径。纯粹依赖一个“通才”大模型比如GPT-4也能做出雏形但它在专业性、稳定性和成本上都有问题。我的方案是“核心大脑专业工具”的混合架构。核心推理引擎大脑我选择了Claude 3 Haiku。相比更大的模型Haiku在推理速度、成本和对长指令遵循方面取得了很好的平衡。它的核心任务是理解用户意图、进行多步规划、协调各个工具调用、以及生成自然流畅的对话。我不需要它记忆全世界所有的菜谱我只需要它擅长逻辑规划和语言交互。知识库与检索系统记忆这是专业性的保障。我自建了一个结构化的烹饪知识库数据来源于多个权威菜谱网站和烹饪书籍并进行了清洗和标准化。每条知识记录包含菜谱名称、所需食材带精确用量和可替代项、步骤、烹饪技法、口味标签、难度、时间、适用厨具等。这个知识库通过向量数据库我用的ChromaDB进行索引。当智能体需要生成方案时Claude大脑会先根据用户约束生成一个搜索查询从向量库中召回最相关的候选菜谱片段作为它规划的具体依据。视觉识别模块眼睛为了支持“拍冰箱找菜谱”的功能我集成了一个图像识别模型。这里没有用特别庞大的通用模型而是用了在食品识别数据集上精调过的ViT模型。它能识别常见的蔬菜、水果、肉类、包装食品等并输出一个带置信度的食材列表。这个列表会成为约束条件的一部分输入给核心推理引擎。工具调用层双手智能体可以调用一系列预设工具来完成任务。这些工具包括search_recipes_by_ingredients(ingredients_list, constraints): 根据食材和约束检索知识库。check_ingredient_substitution(original, available): 查询食材替代方案。parse_recipe_steps(recipe_text): 将菜谱文本解析为结构化的步骤列表。set_timer(duration, task_name): 设定烹饪计时器。convert_units(amount, from_unit, to_unit): 单位换算。scale_recipe(recipe, serving_size): 根据用餐人数缩放菜谱用量。Claude大脑通过函数调用Function Calling能力来灵活使用这些工具。注意模型选型上我最初尝试过完全依赖GPT-4联网搜索。结果发现一是成本高二是搜索到的菜谱质量参差不齐经常出现用量模糊、步骤跳跃的问题导致规划失败。自建高质量、结构化的知识库虽然前期投入大但确保了系统输出方案的稳定性和专业性从长期看是更优解。3. 核心工作流程与实现细节3.1 用户交互与意图解析交互起点可以是一句话、一张图或者两者结合。系统首先需要准确理解用户的“混沌”意图。自然语言指令解析用户说“我只有鸡腿和土豆想做点下饭的不要太辣。” Claude大脑会将其解析为一个结构化的意图对象{ “goal”: “cook_a_meal”, “hard_constraints”: { “ingredients_must_include”: [“chicken_thighs”, “potatoes”], “ingredients_must_exclude”: [], “flavor_constraints”: {“spiciness”: “low”} }, “soft_preferences”: { “meal_type”: “下饭”, “cooking_time_preference”: “medium”, “difficulty_preference”: “any” }, “context”: “available_ingredients_only” }这里的关键是区分“硬约束”和“软偏好”。硬约束必须用这些食材、不能辣是筛选方案的铁律软偏好要下饭则是排序方案的依据。系统会明确告诉用户它理解了什么比如回复“明白我将用鸡腿和土豆为主料寻找一道不辣、下饭的菜。正在为您规划...”图像识别与信息融合如果用户上传了冰箱照片视觉模块会输出[(carrot, 0.95), (bell_pepper, 0.88), (chicken_breast, 0.92), (milk, 0.98)]。这个列表会自动转化为硬约束中的“ingredients_must_include”。如果同时有文字指令如“用这些做个汤”那么视觉识别的食材列表将与文字指令进行融合共同构成完整的约束条件。3.2 智能规划与菜谱生成这是整个系统最核心的环节。解析出意图后Claude大脑会启动一个多步的规划循环。第一步知识检索。大脑根据约束条件生成一个或多个搜索查询。例如针对上面的鸡腿土豆例子它可能生成“中式 鸡腿 土豆 炖菜 不辣 下饭菜谱”和“鸡腿 土豆 烤箱 食谱 简单”。这些查询被发送到向量知识库召回Top 5相关的菜谱片段。第二步方案构思与评估。大脑拿到这些菜谱片段后不会直接推荐其中一个而是会进行“脑内风暴”。它可能会想“召回的结果有‘土豆烧鸡块’、‘咖喱鸡’但咖喱可能辣需排除、‘香煎鸡腿配烤土豆’。结合用户‘下饭’的偏好‘土豆烧鸡块’的汤汁拌饭最合适。且烹饪方法烧符合现有厨具锅。” 它会为每个可行方案生成一个评估摘要包括预估总时间、复杂度、与用户偏好的匹配度。第三步生成可执行方案。选定“土豆烧鸡块”后大脑会从知识库中获取该菜谱的完整、结构化信息。然后它会做一次“个性化适配”用量标准化知识库中的菜谱可能是“4人份”。如果用户说“就我一个人吃”大脑会调用scale_recipe工具将所有食材用量按比例缩减为1/4。步骤口语化与细化将原菜谱中“鸡腿焯水”这样的步骤细化为“将2个鸡腿洗净放入冷水中加入3片姜和1勺料酒开大火煮至沸腾后继续煮2分钟捞出用温水冲洗干净”。这一步极大地提升了可操作性尤其是对新手。生成备选清单明确列出需要的所有食材、调料和厨具并核对用户已有项。对于缺失项如“料酒”它会调用check_ingredient_substitution工具提供替代建议如“可用少量白酒加一勺水代替”。最终呈现给用户的是一个包含“目标菜式”、“适配后用量清单”、“细化步骤”、“预估总时长”、“关键技巧提示”的完整方案卡片。3.3 渐进式引导与执行监控方案生成不是终点。智能体会将整个烹饪过程视为一个需要它引导的项目。步骤拆解与状态管理系统内部维护一个任务列表将做菜分解为“准备阶段”备料、“烹饪阶段”、“收尾阶段”。每个大阶段下是具体的原子任务如“切好200克土豆块”、“热锅下油”、“小火焖煮15分钟”。用户每完成一步可以通过语音或点击“下一步”进行反馈。系统更新任务状态并推送下一步的指导。计时器与主动提醒对于需要计时的步骤如“焖煮15分钟”智能体会自动调用set_timer工具并在后台计时。时间快到或到时它会主动提醒用户“还剩3分钟您可以准备下一步的葱花。”或者“15分钟到了请打开锅盖检查一下汤汁收得如何了。”这种主动式提醒能有效防止用户因忙于其他事而忘记关键节点。异常情况处理这是体现“智能体”自主性的关键。假设在“小火焖煮”步骤用户反馈“水好像快烧干了土豆还没很软。” 系统会立刻识别到“偏离预期状态”。它不会死板地让用户继续煮而是会启动问题诊断可能原因分析火太大锅盖没盖严初始水加少了解决方案生成根据最可能的原因初始水加少了它可能会建议“请立即加入约100毫升热水注意是热水不能加冷水转为中小火再盖上盖子焖煮10分钟并密切关注。”方案调整如果用户没有热水它可能会调整方案“如果没有热水可以关火加入常温饮用水重新煮沸后转小火继续焖。”这个过程展示了AI从静态指导者变为动态协作者的能力。4. 关键挑战与解决方案实录4.1 知识库构建的“脏活累活”构建一个高质量、结构化的烹饪知识库是项目最耗时但也是最重要的基础。网上菜谱数据质量良莠不齐存在大量问题用量模糊“适量”、“少许”、“一小把”。步骤跳跃“将食材翻炒均匀后焖至入味”——“入味”是多久描述主观“火候掌握好”——什么火多大格式混乱纯文本、HTML混杂图片步骤。我的解决方案是“人工规则AI清洗”的组合拳制定数据标准我首先定义了一个严格的JSON Schema规定每条菜谱必须包含的字段及其格式如ingredients是一个列表每个元素包含name,amount(数字),unit,optional(布尔值)。初始爬取与过滤从几个格式相对规范的网站爬取数据作为种子。大模型辅助解析与补全对于不规范的菜谱文本我编写了提示词让GPT-4帮我进行结构化提取。例如将“酱油两勺糖一勺醋少许”解析为[{name: 酱油, amount: 2, unit: 汤匙}, {name: 糖, amount: 1, unit: 汤匙}, {name: 醋, amount: null, unit: 少许, optional: true}]。对于“焖至入味”我会让模型根据同类菜谱补充一个建议时间范围。关键字段的标准化创建了标准的“烹饪技法”词典如“爆炒”、“清蒸”、“红烧”、“烤箱烘焙”和“食材”同义词词典如“西红柿”、“番茄”、“tomato”统一为“番茄”确保检索的准确性。向量化与索引将清洗后的菜谱文本包括名称、食材、步骤摘要、口味标签转换为向量存入ChromaDB。这里的一个技巧是除了整体向量化我还对“食材列表”单独做了向量化索引专门用于应对“根据现有食材找菜谱”这个高频场景大幅提升了检索精度和速度。实操心得不要指望一步到位。知识库建设是迭代过程。我先用5000条高质量数据让系统跑起来然后在用户使用过程中收集反馈比如用户经常问“这个步骤能再详细点吗”针对性地去补充和细化那部分菜谱的数据。同时建立一个简单的贡献机制允许用户对模糊步骤提交“细化建议”经审核后可以反向补充到知识库。4.2 让AI理解“少许”和“火候”中餐烹饪中大量存在的模糊性描述是AI规划面临的一大挑战。“盐少许”、“油温七成热”、“小火慢炖”这些对人类厨师而言靠经验把握的概念对AI来说是黑盒。我的解决思路是“量化范围感官描述对标”建立量化对照表我创建了一个内部映射表。例如“少许”对应 1-3 克盐/糖或 5-10 毫升液体。“适量”根据菜谱整体用量给出一个范围如“酱油适量”可能指 10-20 毫升。“小火/中火/大火”对应家用燃气灶旋钮的时钟位置描述如“小火旋钮指向7点到8点位置火焰高度约1厘米”。在指导中明确范围生成步骤时AI会这样描述“加入盐少许建议约2克相当于一个牙膏盖的量”“烧至油温七成热油面有轻微波纹用筷子插入周围冒密集小泡”。提供容错空间AI在规划时会倾向于选择容错率更高的方案。例如在推荐给新手的菜谱中会优先选择“烤箱设定180度25分钟”这种精确控温的方案而不是“油炸至金黄”这种需要经验判断的方案。同时在指导语中强调“如果第一次做盐可以先少放一点出锅前尝一下味道再决定是否添加。”4.3 处理复杂约束与用户偏好用户的需求往往是多维度且矛盾的。比如“我想吃健康的但又要快还要好吃冰箱里只有鸡胸肉和生菜。” “健康”低油低盐、“快”步骤少、烹饪时间短、“好吃”可能意味着需要一定的调味或烹饪技巧、“食材有限”这几个约束在一起会让简单的检索失效。智能体的策略是“约束优先级排序与折中方案生成”识别约束优先级通过与用户的简短对话澄清。例如系统会问“在‘健康’、‘快速’和‘尽可能美味’之间如果必须排个序您更看重哪两个” 根据用户的回答动态调整规划算法的权重。分层规划首先用硬约束食材鸡胸肉、生菜筛选出一批基础菜谱。然后根据优先级进行排序。如果“快”和“健康”优先系统可能会推荐“香煎鸡胸肉配生菜沙拉”煎鸡胸10分钟洗切生菜5分钟并给出让鸡胸肉更“好吃”的技巧提示“鸡胸肉切片后用刀背拍松用少量生抽、黑胡椒和淀粉腌制10分钟可以使口感更嫩。”提供“A或B”选择当无法完美满足所有条件时智能体会生成2-3个各有侧重的方案供用户选择。例如方案A侧重快速健康鸡胸肉蔬菜卷鸡胸肉煮熟撕丝与生菜、甜椒丝用低脂沙拉酱拌制用全麦饼卷起。总时长约15分钟。方案B侧重美味仿照宫保鸡丁风味的鸡胸肉炒生菜梗将生菜梗切丁同炒。总时长约20分钟口味更丰富。 把选择权交给用户同时清晰告知每个方案的侧重点和权衡点。5. 实际应用效果与迭代方向在实际测试中这个智能体最让我满意的不是它推荐了什么惊天动地的菜谱而是它真正缓解了“决策疲劳”和“操作焦虑”。很多测试者反馈感觉不是在看一个冰冷的菜单而是在和一个懂行的朋友商量今晚吃什么这个朋友还能手把手带你做。效果亮点极高的场景覆盖率从“清空冰箱”到“想吃某道特定菜”从“一人食”到“家庭聚餐”它都能给出靠谱的起点方案。显著降低失败率由于步骤被极度细化和口语化并包含了大量“为什么这么做”的小贴士如“热锅凉油可以防止粘锅”新手用户的烹饪成功率大幅提升。动态适应性在一次测试中用户不小心把糖当成了盐在步骤中反馈“好像太甜了”。系统没有报错而是立刻给出了补救建议“如果是炒菜可以尝试加入少量醋和生抽来平衡味道并减少后续的糖或酱料添加。”遇到的挑战与迭代方向硬件联动是下一个壁垒目前还停留在“语音/图文指导”层面。真正的“智能烹饪”需要与智能厨电联动。例如告诉AI“开始红烧肉模式”它能自动设定智能电压力锅的程序或者在煎牛排时通过连接智能测温计AI能实时监控核心温度并提示“现在翻面”或“已达五分熟可以出锅”。这需要与硬件厂商进行生态合作。风味创造的边界目前的系统本质上是“已知菜谱的智能组合与适配”。如何让AI在理解风味化学如哪些化合物共同产生某种味道的基础上进行真正的“创意菜谱生成”甚至根据用户的口味反馈进行个性化风味调整是更前沿的探索方向。成本与响应速度的平衡每次交互都调用大模型和检索在用户量增大时成本不容忽视。我正在尝试将一些高频、固定的决策路径如“冰箱里有鸡蛋和番茄 - 优先推荐番茄炒蛋或番茄鸡蛋汤”沉淀为更轻量的规则引擎让大模型专注于处理真正复杂、非标准的请求以优化体验和成本。这个项目让我深刻体会到AI的价值不在于替代人类而在于放大人类的能力。它替代的不是烹饪的乐趣和创意而是那些繁琐、耗神的前期规划和令人焦虑的不确定性。当AI帮你扫清了这些障碍你便能更专注地享受食物在锅中变化的声音、香气弥漫的过程以及最终与家人分享成果的喜悦。技术最终服务的是这份更具象、更温暖的生活体验。