dify工作流需通过参数提取器精准识别口味、健康限制与过敏源,再调用魔搭mcp“今天吃什么”服务,经三层过滤(剔除过敏食材→营养师打分→主厨口语化推荐)生成适配菜谱。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你想让AI根据“我最近在控糖,冰箱里有鸡胸肉、西兰花和鸡蛋”这种日常描述,直接给出三道可操作的菜谱,而不是泛泛而谈“推荐低糖饮食”。这需要Dify工作流真正理解口味倾向、饮食限制和食材约束,而不是把用户输入原样扔给大模型瞎猜。
配置口味与健康偏好识别节点
在Dify工作区新建应用→点击“添加节点”→选择【参数提取器】→在提示词框中粘贴以下内容:
你是一个严格的饮食意图解析器。请从用户输入中精确提取:①明确提到的口味偏好(如“不要辣”“喜欢酸甜”“清淡”);②健康目标或限制(如“控糖”“乳糖不耐”“减脂期”“孕妇饮食”);③过敏源或拒绝食材(如“不吃香菜”“对花生过敏”)。只输出JSON格式,字段为taste_preference、health_constraint、allergy_avoid,值为空字符串或具体关键词。禁止解释、补充、猜测。
【必须关闭“允许模型自由发挥”开关】否则该节点会自行编造不存在的限制,比如把“今天想吃点暖和的”误判为“需高热量”,导致后续推荐完全跑偏。
接入魔搭MCP“今天吃什么”服务
方法一:直接调用(推荐新手)
在节点库搜索“HTTP请求”→拖入工作流→配置URL为https://mcpcdn.modelscope.cn/v1/agents/today-eat-what/invoke→请求方式选POST→Body填JSON:
{“ingredients”: “{{上一节点输出.ingredients}}”, “constraints”: “{{参数提取器输出.health_constraint}},{{参数提取器输出.allergy_avoid}}”}
方法二:绑定API密钥(适合高频调用)
进入魔搭MCP广场→找到“今天吃什么”服务→点击“获取凭证”→复制API Key→回到Dify,在HTTP节点的Headers中添加:
Authorization: Bearer 【你的API Key】
注意:魔搭服务返回的是结构化菜谱数据(含名称、步骤、时长、难度),不是纯文本,因此后续节点必须能解析JSON数组。
构建三层过滤式推荐逻辑
第一步:剔除硬冲突菜谱
添加【代码节点】→语言选Python→输入代码:
```python
recipes = input['recipes'] # 假设上游返回字典列表
filtered = [r for r in recipes if not any(ing in r.get('allergens', []) for ing in input.get('allergy_avoid', '').split(','))]
return {'filtered_recipes': filtered}
```
第二步:按健康目标加权排序
在代码节点后接【LLM节点】→提示词写:“你是一名注册营养师。请根据用户健康目标‘{{参数提取器输出.health_constraint}}’,对以下菜谱按适配度0–5分打分,仅输出JSON数组,每个元素含name和score字段。”→输入为上一步的filtered_recipes。
第三步:注入口味偏好润色
将LLM打分结果传入新LLM节点→提示词设定角色:“你是米其林三星主厨,说话带烟火气。请用口语化中文介绍前三名菜谱,每道强调1个符合用户口味偏好的细节(如‘酸甜口正合你意’‘全程不放辣椒,清爽到底’)。”











