AstrumPush f4b9d63ed1 fit: 根据 jjyaoao 意见,将关键代码集成到本项目中,并在Readme.md中说明 hai 1 mes
..
.env copy e8d9b8ecce feat: 添加毕业设计项目-AstrumPush-Smart-Recipe-Agent hai 1 mes
README.md f4b9d63ed1 fit: 根据 jjyaoao 意见,将关键代码集成到本项目中,并在Readme.md中说明 hai 1 mes
basic_func_test.py e8d9b8ecce feat: 添加毕业设计项目-AstrumPush-Smart-Recipe-Agent hai 1 mes
diet_recommendation_final.py e8d9b8ecce feat: 添加毕业设计项目-AstrumPush-Smart-Recipe-Agent hai 1 mes
protocol_tools.py f4b9d63ed1 fit: 根据 jjyaoao 意见,将关键代码集成到本项目中,并在Readme.md中说明 hai 1 mes
requirements.txt e8d9b8ecce feat: 添加毕业设计项目-AstrumPush-Smart-Recipe-Agent hai 1 mes

README.md

🍳 智能菜谱助手 (Smart Recipe Agent)

基于 hello_agents 框架的多智能体协作系统,自动搜索、筛选并生成完整菜谱

Python License


📋 项目简介

智能菜谱助手 是一个基于多 Agent 协作的菜谱搜索系统。用户只需输入饮食需求(如"我想吃小龙虾"、"适合降火的家常菜"),系统会自动:

  1. 🔍 搜索菜谱:调用网络搜索工具获取相关菜谱列表
  2. 🎯 智能筛选:根据用户偏好推荐最合适的菜谱
  3. 📄 内容提取:抓取完整菜谱内容并保存为 Markdown 文件

所有生成的菜谱自动保存在 recipes/ 目录下,方便随时查看和使用。


✨ 核心特性

  • 🤖 多 Agent 协作:搜索专家 + 饮食专家 + 内容提取专家分工协作
  • 🔗 真实数据源:基于香哈网等真实菜谱网站,拒绝编造信息
  • 📝 结构化输出:推荐结果包含菜名、链接、推荐理由,清晰可读
  • 💾 自动保存:生成的菜谱自动保存为带时间戳的 Markdown 文件
  • 🔧 可扩展架构:基于 MCP 工具协议,易于集成新数据源

🛠️ 技术栈

组件 说明
hello_agents 多智能体编排框架
MCPTool Model Context Protocol 工具接口
@mzxrai/mcp-webresearch 网页搜索与研究工具
python-dotenv 环境变量管理
json/datetime 数据解析与文件管理

🚀 快速开始

1️⃣ 环境准备

# 克隆项目
git clone https://github.com/AstrumPush/Smart-Recipe-Agent
cd Smart-Recipe-Agent

# 安装依赖
pip install -r requirements.txt

# 安装 Node.js 环境(用于 MCP 工具)
# 访问 https://nodejs.org 下载安装

# 替换hello-agents底层代码
将本项目下的protocol_tools.py文件,替换掉hello-agents中的文件,地址如下(根据本机环境自行调整即可):
D:\Anaconda3\envs\agents\Lib\site-packages\hello_agents\tools\builtin

2️⃣ 配置环境变量

创建 .env 文件:

# LLM API 配置(根据实际使用的模型提供商填写)
OPENAI_API_KEY=your_api_key_here
# 或其他模型配置...

3️⃣ 运行程序

python diet_recommendation_final.py

4️⃣ 交互示例

请输入菜谱需求(例如:我想吃小龙虾) >>> 适合夏天吃的清淡家常菜


正在搜索菜谱...
[TOOL_CALL:visit_page:url=https://www.xiangha.com/so/?q=caipu&s=清淡家常菜]

正在筛选菜谱...
{
  "name": "清蒸鲈鱼",
  "url": "https://www.xiangha.com/caipu/xxxxx.html",
  "reason": "**推荐理由:**\n- 🐟 **清蒸烹饪** - 少油少盐...\n..."
}

正在生成菜谱...
正在保存菜谱...
✅ 菜谱已创建: recipes/recipes_20260428_153022.md

🧠 Agent 架构说明

┌─────────────────────────────────────┐
│  用户输入: "我想吃小龙虾"            │
└─────────────┬───────────────────────┘
              ▼
┌─────────────────────────────────────┐
│  🔍 caipu_search_agent              │
│  • 角色:菜谱搜索专家                │
│  • 任务:调用 web_research 工具搜索  │
│  • 输出:菜谱列表(菜名+链接+特点)  │
└─────────────┬───────────────────────┘
              ▼
┌─────────────────────────────────────┐
│  🎯 caipu_select_agent              │
│  • 角色:饮食专家                   │
│  • 任务:根据用户需求筛选最佳菜谱    │
│  • 输出:JSON 格式推荐结果           │
└─────────────┬───────────────────────┘
              ▼
┌─────────────────────────────────────┐
│  📄 output_agent                    │
│  • 角色:网页内容提取专家            │
│  • 任务:抓取完整菜谱内容            │
│  • 输出:Markdown 格式完整菜谱       │
└─────────────┬───────────────────────┘
              ▼
┌─────────────────────────────────────┐
│  💾 自动保存至 recipes/ 目录         │
└─────────────────────────────────────┘

📁 项目结构

smart-recipe-agent/
├── main.py                 # 主程序入口
├── .env                    # 环境变量配置(需手动创建)
├── recipes/                # 生成的菜谱文件目录(自动创建)
│   └── recipes_20260428_153022.md
├── requirements.txt        # Python 依赖(建议创建)
├── protocol_tools.py        # 需要修改的hello-agents代码模块
├── basic_func_test.py        # 用于验证是否可以使用web_search模块
└── README.md              # 项目说明文档

⚙️ 配置说明

工具调用格式规范

搜索 Agent 和输出 Agent 使用统一的工具调用格式:

[TOOL_CALL:visit_page:url=https://www.xiangha.com/so/?q=caipu&s=关键词]

参数说明:

  • visit_page: 工具名称
  • url: 目标网页地址,支持香哈网搜索页或具体菜谱页

响应解析规则

parse_response() 函数支持纯 JSON 字符串(含 {})解析

解析失败时会输出警告并返回 None,主流程会进行空值检查。


🎯 使用建议

推荐的用户输入方式

✅ "适合减肥期间吃的低卡菜谱"
✅ "快手早餐,10分钟能做完的"
✅ "川菜,微辣,有鸡肉的"
✅ "适合老人吃的软烂易消化菜品"

避免的输入方式

❌ "随便做个菜"  # 需求过于模糊
❌ "生成一个不存在的菜"  # 系统拒绝编造信息
❌ 直接要求"写一个红烧肉做法"  # 应通过搜索获取真实菜谱

⚠️ 注意事项

  1. 网络依赖:程序需要联网调用 MCP 搜索工具,请确保网络通畅
  2. 网站适配:当前针对香哈网 (xiangha.com) 优化,更换数据源需调整 prompt
  3. API 配额:注意 LLM 和搜索工具的调用频率限制
  4. 文件权限:确保程序有 recipes/ 目录的写入权限
  5. 错误处理:解析失败或无匹配结果时程序会友好提示,不会崩溃

🔧 扩展开发

添加新数据源

修改 Agent 的 system_prompt 中的 URL 模板:

# 示例:添加下厨房网站支持
[TOOL_CALL:visit_page:url=https://www.xiachufang.com/search/?keyword=关键词]

自定义筛选逻辑

调整 caipu_select_agent 的 prompt,添加个性化推荐规则:

- 优先推荐烹饪时间 < 30分钟的菜谱
- 排除含用户过敏食材的菜品
- 根据季节推荐当季食材菜谱

增加输出格式

修改 write_content_to_file() 支持更多格式:

# 支持导出 PDF/HTML 等
def write_content_to_file(content, format="md"):
    ...

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!贡献前请:

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📄 许可证

本项目采用 MIT License 开源协议,可自由使用、修改和分发。


💬 反馈与支持

  • 🐛 遇到问题?请提交 Issue
  • 💡 有新想法?欢迎开启 Discussion
  • ⭐ 喜欢这个项目?点个 Star 支持一下!

🍽️ 祝您烹饪愉快,享受美食!

👤 作者

🙏 致谢

感谢 Datawhale 社区和 Hello-Agents 项目!