Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions food_cal_README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
智能食物热量计算与营养分析助手

1. 简介

“智能食物热量计算与营养分析助手”是一个高级多智能体(Multi-Agent System, MAS)应用,旨在帮助用户轻松追踪日常饮食的营养信息。用户只需通过自然语言输入所食用的食物及其份量,系统便能自动解析、计算并提供详细的营养报告和个性化的饮食建议。

该系统不仅能识别用户输入的食物,还能处理常见的重量单位和量词(如“一个”、“一碗”),并能通过网络搜索功能查询本地数据库中不存在的食物,极大地提升了实用性和准确性。

2. 核心功能

2.1 自然语言理解与食物解析

- 智能文本解析:系统能够理解并解析用户的自然语言输入,例如“我早餐吃了一个苹果和200克面包”,并将其准确转换为结构化的食物列表(`[{'name': '苹果', 'weight': 150}, {'name': '面包', 'weight': 200}]`)。
- 智能重量估算:当用户使用“一个”、“一碗”等量词时,系统会根据内置的知识库估算一个合理的重量,使输入更加便捷。

2.2 动态食物营养数据库

- 本地数据库:系统内置了一个包含常见食物营养信息的本地数据库(`FOOD_NUTRITION_DB`),涵盖了卡路里、蛋白质、脂肪、碳水化合物和膳食纤维等关键指标。
- 实时网络查询:当用户输入的食物在本地数据库中不存在时,系统会自动调用网络搜索工具,从互联网上获取最新的营养信息,并将其动态添加到本地数据库中,以备后续使用。

2.3 营养成分计算

- 精准计算:根据解析出的食物列表和对应的重量,系统会精确计算总热量以及各种营养成分(蛋白质、脂肪、碳水化合物、膳食纤维)的总量。
- 结构化输出:计算结果以清晰的JSON格式呈现,包含了每种食物的详细营养信息以及汇总数据。

2.4 个性化饮食建议

- 智能分析:系统会根据计算出的总营养数据,评估当前饮食的热量水平、蛋白质、脂肪、碳水化合物和膳食纤维的摄入情况。
- 提供建议:基于分析结果,系统会生成个性化的饮食建议,例如:
- “这顿饭的热量较高,建议减少食用量或选择低热量的替代食品。”
- “蛋白质摄入偏低,建议增加瘦肉、鱼、蛋、豆类等富含蛋白质的食物。”
- “膳食纤维摄入不足,建议增加蔬菜、水果、全谷物的摄入。”

3. 技术实现

本系统基于`OxyGent`框架构建,采用先进的多智能体协作架构,主要包括以下几个核心组件:

- 主智能体 (Master Agent):作为工作流的协调者,负责接收用户请求,并依次调用其他子智能体和工具来完成任务。它采用`WorkflowAgent`实现,通过`master_workflow`函数编排整个处理流程。

- 食物解析智能体 (Food Parsing Agent):一个专门用于解析用户输入的`ChatAgent`。它被配置为一个“JSON生成器”,专注于从文本中提取食物名称和重量,并以结构化的JSON格式输出。

- 食物营养搜索智能体 (Food Nutrition Search Agent):一个`ReActAgent`,当遇到未知食物时,它会使用`web_search`工具在网上搜索该食物的营养成分,并将结果返回给主智能体。

- 工具集 (Tools):
- `calorie_calculation_tools`:用于计算食物总热量和营养成分的函数工具。
- `nutrition_advice_tools`:根据营养数据提供饮食建议的函数工具。
- `web_search_tools`:用于在网络上搜索食物营养信息的工具。

- 工作流程:
1. 接收输入:用户通过Web界面输入自然语言描述。
2. 食物解析:`master_agent`调用`food_parsing_agent`解析输入,提取食物列表。
3. 数据补充:如果存在未知食物,`master_agent`调用`food_nutrition_search_agent`进行网络搜索,并更新本地数据库。
4. 热量计算:`master_agent`调用`calculate_calories`工具计算营养成分。
5. 生成建议:`master_agent`调用`provide_nutrition_advice`工具生成饮食建议。
6. 返回结果:`master_agent`整合所有信息,以JSON格式返回最终的营养分析报告和饮食建议。

4. 使用方法

1. 启动系统:运行`food_calorie_agent.py`脚本,系统将启动一个Web服务。
```bash
python food_calorie_agent.py
```
2. 访问Web界面:在浏览器中打开提供的URL(通常是`http://localhost:8000`)。
3. 输入查询:在聊天界面中,输入您想要查询的食物和份量。例如:
- “一个苹果和200克的土豆炖牛肉和一盘番茄炒蛋”
- “我午餐吃了300克烤鸡胸肉和一碗西兰花”
4. 获取结果:系统将立即处理您的请求,并在界面上显示详细的营养分析报告和饮食建议。

5. 未来展望

- 支持图片识别:增加通过上传食物图片自动识别菜品和估算份量的功能。
- 集成更广泛的数据库:对接专业的第三方食物营养数据库API,提供更全面、更权威的数据。
- 长期饮食追踪:增加用户账户系统,记录用户的历史饮食数据,并提供长期的健康分析和趋势报告。
- 多语言支持:扩展自然语言处理能力,支持更多语言的输入。



Loading