OpenClaw+Phi-3-vision-128k-instruct:智能菜谱生成与购物清单

1. 从冰箱照片到购物清单的智能厨房助手

上周六早上,我站在打开的冰箱前,盯着里面零零散散的食材发愁——鸡蛋、半颗西兰花、几根蔫了的胡萝卜、一块快过期的鸡胸肉。正当我纠结"这些东西能做出什么菜"时,突然想到刚部署的Phi-3-vision多模态模型和OpenClaw自动化框架。两小时后,我的厨房管理方式彻底改变了:拍张冰箱照片,AI不仅推荐了三道可行菜谱,还自动生成了缺失食材的购物清单,甚至能在指定时间提醒我下单。

这个看似简单的场景背后,是OpenClaw与多模态模型的完美配合。Phi-3-vision负责"看懂"冰箱内容并给出专业建议,OpenClaw则将这些建议转化为可执行的自动化流程。整个过程完全在本地运行,既保护了家庭隐私,又实现了真正的个性化服务。

2. 技术栈搭建:当多模态遇见自动化

2.1 为什么选择Phi-3-vision作为"厨房大脑"

在测试了多个开源多模态模型后,Phi-3-vision-128k-instruct最终胜出有三个关键原因:

首先,食材识别准确率令人惊喜。即使拍摄角度不佳(如冰箱顶部俯拍)、光线不均匀(冷藏室LED灯造成的反光),模型仍能准确识别出"半颗西兰花"和"临近保质期的鸡胸肉"这类细节。相比之下,其他模型要么将西兰花误认为花椰菜,要么直接忽略部分被遮挡的食材。

其次,上下文理解能力超出预期。当我上传照片并询问"用这些能做两人份晚餐吗",模型不仅列出菜谱,还会标注"鸡胸肉建议优先使用"的提醒。这种结合视觉识别与逻辑推理的能力,正是厨房场景需要的。

最后,本地部署成本相对可控。在RTX 3090上运行128k上下文版本的推理,处理一张冰箱照片平均只需3-5秒,显存占用约18GB。对于个人使用场景完全可接受。

2.2 OpenClaw的自动化魔法

Phi-3-vision给出了专业建议,但如何让它真正融入日常生活?这就是OpenClaw的舞台。我的自动化链路设计如下:

  1. 照片采集:通过OpenClaw的desktop-capture技能定时扫描指定文件夹(我将手机拍摄的冰箱照片自动同步到该目录)
  2. 模型调用:OpenClaw将新照片通过API发送给本地部署的Phi-3-vision模型
  3. 结果解析:提取模型返回的JSON数据中的菜谱和缺失食材清单
  4. 文档生成:自动创建Markdown格式的菜谱文档,保存到~/Kitchen/Recipes目录
  5. 清单管理:将缺失食材追加到购物清单文件,并通过飞书机器人发送提醒

整个流程中最精妙的部分在于异常处理。例如当模型返回"照片中无可用食材"时,OpenClaw会自动发送"请重新拍摄冰箱照片"的提醒到我的飞书;当识别到临近过期的食材,则会优先推荐使用该食材的菜谱。

3. 从零搭建你的智能厨房系统

3.1 环境准备与模型部署

首先确保已安装OpenClaw核心框架(以macOS为例):

curl -fsSL https://openclaw.ai/install.sh | bash
openclaw onboard --install-daemon

Phi-3-vision的部署需要额外注意两点:

  1. 显存要求:至少20GB显存(实测RTX 3090/4090或A10G表现良好)
  2. 依赖安装
pip install chainlit==1.0.0 vllm==0.3.3

启动模型服务:

chainlit run app.py -w --port 8000

3.2 OpenClaw与Phi-3-vision的对接配置

~/.openclaw/openclaw.json中添加自定义模型配置:

{
  "models": {
    "providers": {
      "phi3-vision": {
        "baseUrl": "http://localhost:8000",
        "api": "custom",
        "models": [
          {
            "id": "phi3-vision-128k",
            "name": "Phi-3 Vision Kitchen Assistant",
            "capabilities": ["vision"]
          }
        ]
      }
    }
  }
}

关键点在于"capabilities": ["vision"]的声明,这告诉OpenClaw该模型支持图像输入。

3.3 核心技能开发:菜谱生成器

创建一个名为kitchen-assistant的自定义技能:

// ~/.openclaw/skills/kitchen-assistant/index.js
module.exports = {
  name: "Kitchen Assistant",
  description: "Generate recipes from fridge photos",
  triggers: ["fridge.jpg"],
  async execute(context) {
    const photoPath = context.triggerFile;
    const visionResponse = await context.models.phi3-vision.generate({
      prompt: "列出冰箱中的所有可用食材,给出3道适合的菜谱,并列出需要购买的食材",
      image: photoPath
    });
    
    const { recipes, shoppingList } = parseResponse(visionResponse);
    await generateMarkdown(recipes);
    await updateShoppingList(shoppingList);
    await notifyUser();
  }
}

这个技能会在检测到新照片时自动触发,完成从图像识别到菜谱生成的全流程。

4. 实际使用中的优化与调整

第一版系统上线后,遇到了几个意料之外的问题:

问题1:食材重量估算不准 模型常给出"适量盐"这类模糊表述,但购物清单需要具体克数。解决方案是在prompt中明确要求:"所有食材用量必须精确到克,调味料精确到毫升"。

问题2:中西餐偏好混乱 作为中国胃,却被推荐了大量沙拉菜谱。通过在模型调用时添加系统提示解决:"你是一个精通中国家常菜的厨师,优先考虑炒、炖、蒸等中式烹饪方式"。

问题3:购物清单重复累积 简单的追加写入导致清单越来越长。最终改用YAML格式存储清单,并添加去重逻辑:

# shopping-list.yaml
items:
  - name: 胡萝卜
    quantity: 200g
    neededBy: 2024-06-15
  - name: 鸡蛋
    quantity: 6个
    neededBy: 2024-06-12

经过这些调整后,系统的实用性大幅提升。现在每周日晚,我都会拍下空冰箱的照片,系统不仅规划好下周的菜谱,还会在食材将用完时(通过计算使用频率预测)提前提醒补货。

5. 隐私与安全考量

将厨房管理交给AI时,最需要警惕的是数据泄露风险。这套方案的三大安全设计值得分享:

  1. 全链路本地化:从图像识别到购物清单生成,所有数据处理都在本机完成,照片不会上传至任何云端服务
  2. 最小权限原则:OpenClaw仅被授权访问特定的照片目录和文档文件夹,无法读取其他个人文件
  3. 敏感信息过滤:在生成购物清单时,系统会自动剔除"生抽""老抽"等可能暴露饮食习惯的调味品名称,改用"酱油(品类)"的通用表述

这种设计使得系统既智能又安全,连我家人都放心使用——毕竟谁都不希望自己的饮食记录成为大数据的一部分。

6. 超越厨房的想象空间

虽然本文聚焦厨房场景,但"多模态识别+自动化执行"的组合拳潜力远不止于此。经过这段实践,我发现至少还有三个方向值得探索:

家庭药箱管理:拍摄药盒识别药品名称和有效期,自动提醒补充常用药或处理临期药品。这需要模型具备药品说明书理解能力。

个人衣橱搭配:通过服装照片分析颜色和款式,结合天气预报推荐每日穿搭。挑战在于对主观审美偏好的把握。

植物养护助手:定时拍摄家中绿植,识别叶片状态判断是否需要浇水施肥。需要专业园艺知识库支持。

每个方向都遵循相似的技术架构,只需调整模型的专业领域知识和OpenClaw的自动化流程。这也正是此类方案最迷人的地方——用标准化技术解决个性化需求。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐