OpenClaw美食助手:Qwen2.5-VL-7B根据冰箱照片推荐菜谱

张开发
2026/4/3 10:24:08 15 分钟阅读
OpenClaw美食助手:Qwen2.5-VL-7B根据冰箱照片推荐菜谱
OpenClaw美食助手Qwen2.5-VL-7B根据冰箱照片推荐菜谱1. 为什么需要AI美食助手每次打开冰箱看着满满当当的食材却不知道做什么菜这种困扰我持续了整整三年。直到上个月在星图平台发现Qwen2.5-VL-7B这个多模态模型突然意识到OpenClaw视觉大模型的组合或许能解决这个世纪难题。传统菜谱App的痛点很明确——需要手动输入已有食材而实际场景中我们更习惯用手机随手拍下冰箱内容。Qwen2.5-VL-7B的视觉理解能力可以直接分析照片中的食材配合OpenClaw的自动化流程实现了从拍照到菜谱的无缝衔接。这个方案最吸引我的是整个过程完全在本地完成不用担心食材照片上传到云端的安全隐患。2. 环境准备与模型部署2.1 基础组件安装我的实验环境是一台MacBook ProM1芯片16GB内存首先通过Homebrew安装OpenClawbrew install node22 npm install -g openclawlatest openclaw --versionQwen2.5-VL-7B的部署选择了星图平台的GPTQ量化镜像主要考虑是7B模型在消费级显卡上可流畅运行GPTQ量化后显存占用控制在8GB以内自带chainlit前端方便调试在平台控制台完成镜像部署后记下API访问地址如http://192.168.1.100:8000/v1这个地址后续需要配置到OpenClaw中。2.2 OpenClaw对接视觉模型修改OpenClaw配置文件~/.openclaw/openclaw.json增加模型提供商配置{ models: { providers: { qwen-vl: { baseUrl: http://192.168.1.100:8000/v1, apiKey: your-api-key, api: openai-completions, models: [ { id: qwen2.5-vl-7b, name: Qwen-Vision, contextWindow: 32768, maxTokens: 4096 } ] } } } }配置完成后执行命令验证连接openclaw gateway restart openclaw models list3. 构建食材识别工作流3.1 拍照与上传机制在OpenClaw的Web控制台我创建了一个专用工作区food-helper主要包含两个自动化脚本图片接收脚本upload.pyfrom openclaw.sdk import workspace import base64 def handle_image(file_path): with open(file_path, rb) as f: image_data base64.b64encode(f.read()).decode(utf-8) workspace.store(current_fridge, image_data)模型调用脚本analyze.pyfrom openclaw.sdk import models, workspace def analyze_fridge(): image_data workspace.get(current_fridge) prompt 请分析这张冰箱照片列出所有可见的完整食材排除调味品和已开封的包装食品 用JSON格式返回字段包括name食材名称、quantity估算数量、freshness新鲜程度1-5 response models.generate( modelqwen2.5-vl-7b, messages[{ role: user, content: [ {type: text, text: prompt}, {type: image_url, image_url: fdata:image/jpeg;base64,{image_data}} ] }] ) return response.choices[0].message.content3.2 实际测试中的调优第一次测试时就遇到了典型问题——模型把酱油瓶识别成了深色液体食材。通过调整prompt增加了排除调味品的明确指令后识别准确率显著提升。另一个发现是明确要求返回JSON格式比自然语言描述更利于后续处理。经过20次不同冰箱场景的测试最终确定的优化prompt包含食材完整性要求排除开封包装数量估算标准如1个胡萝卜而非一些胡萝卜新鲜度评估标准严格的JSON输出格式4. 菜谱推荐系统实现4.1 从食材到菜谱的转换获得食材清单后第二阶段是生成可行的菜谱方案。这里我设计了两步走策略食材预处理将模型返回的JSON数据转换为自然语言描述菜谱生成结合用户偏好生成3个候选方案关键实现代码def generate_recipes(ingredients_json): # 转换食材数据 ingredients json.loads(ingredients_json) ingredient_desc 、.join([f{i[name]}{i[quantity]} for i in ingredients]) # 生成候选菜谱 prompt f根据以下食材{ingredient_desc}请推荐3道家常菜。 每道菜需要包含 1. 菜名 2. 所需食材及用量必须在给定食材范围内 3. 简要烹饪步骤 4. 预估准备时间 返回格式为Markdown表格 response models.generate( modelqwen2.5-vl-7b, messages[{role: user, content: prompt}] ) return response.choices[0].message.content4.2 个性化偏好设置通过~/.openclaw/workspace/prefs.json文件存储用户偏好{ cuisine_preference: [中式, 日式], cooking_time_max: 40, avoid_ingredients: [香菜], skill_level: 中级 }在生成prompt时会自动注入这些参数例如用户偏好中式或日式料理烹饪时间不超过40分钟避免使用香菜烹饪技能为中级水平5. 完整工作流体验实际使用时的操作流程非常简单用手机拍摄冰箱内部照片通过OpenClaw网页端上传图片等待约30秒获取分析结果查看系统推荐的3个菜谱方案点击选择后生成详细的步骤图最令我惊喜的是模型生成的步骤图——Qwen2.5-VL不仅能描述步骤还能生成对应的示意图。比如选择番茄炒蛋后得到的反馈包含食材预处理示意图番茄切块大小、鸡蛋打散程度火候控制示意图中火炒蛋、大火收汁装盘建议图6. 实践中的经验与教训这个项目最大的收获是认识到多模态模型在实际应用中的潜力。但过程中也踩了不少坑光照条件影响识别最初在夜间拍摄的照片识别准确率明显下降后来增加了请在光线充足环境下拍摄的提示模型响应时间控制复杂prompt可能导致响应超时最终设置了15秒的硬性超时限制本地资源占用长时间运行后内存占用会累积现在每天定时重启OpenClaw服务一个意外发现是这个系统还能帮助减少食物浪费。通过记录每次识别的食材和最终选择的菜谱一个月后就能看到哪些食材经常被剩下从而调整采购策略。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章