基于 HelloAgents 框架开发智能减肥助理:从多智能体架构到 Streamlit 前端落地

张开发
2026/6/8 17:57:21 15 分钟阅读
基于 HelloAgents 框架开发智能减肥助理:从多智能体架构到 Streamlit 前端落地
基于 HelloAgents 框架开发智能减肥助理从多智能体架构到 Streamlit 前端落地在 AI 应用开发的浪潮下基于智能体Agent的个性化助手系统成为了热门方向。此前接触到基于 HelloAgents 框架开发的智能编程导师项目后我受到启发结合健康管理领域的需求开发了一款智能减肥助理系统—— 不仅复用了多智能体协同的核心架构还通过 Streamlit 搭建了友好的前端界面让个性化减肥指导触手可及。项目背景为什么做智能减肥助理博主最近也在减肥减脂主要靠跑步过程中发现很多减肥问题很难靠自己解决于是基于 HelloAgents 多智能体框架做了一个智能减肥助理还加了 Streamlit 前端界面用起来更直观。功能特点核心功能个性化减肥规划根据用户的身高、体重、体脂率、运动基础、饮食偏好制定分阶段的减肥计划含目标拆解、周期规划智能饮食推荐结合每日热量需求推荐适配口味、易获取的食材 / 餐单支持热量计算、营养配比分析运动方案定制根据用户体能、时间、场地居家 / 健身房推荐针对性运动含动作指导、强度调整建议进度跟踪与反馈支持用户记录每日饮食 / 运动 / 体重数据智能体分析进度并动态调整方案给出鼓励或改进建议。多智能体架构设计复用 HelloAgents 的 Agent-to-AgentA2A协同模式构建了分工明确的智能体体系MentorAgent总导师负责理解用户整体减脂需求统筹调度所有子智能体整合各模块输出。DietPlanningAgent饮食规划助手根据用户的身体数据、饮食偏好与减脂目标制定科学的个性化饮食方案。DietRecordAgent饮食记录助手解析用户提交的饮食记录统计每日热量摄入与营养成分识别饮食行为模式。ExercisePlanningAgent运动规划助手结合用户体能水平、运动习惯与减脂目标定制适配的运动方案。ExerciseDataAnomalyAgent运动数据异常助手识别运动强度不足、过度运动或数据偏差等异常情况给出调整提示。BodyDataTrendAgent身体数据趋势助手跟踪用户体重、体脂等关键指标的变化趋势评估减脂进度。ComplianceMotivationAgent依从性激励助手分析用户的执行情况通过正向激励、个性化鼓励与行为引导提升用户减脂计划的依从性。HealthRiskWarnAgent健康风险预警助手结合用户的身体数据、饮食与运动情况识别潜在的健康风险并给出安全提示。SleepMetabolismAgent睡眠与代谢助手关联用户的睡眠情况与代谢水平分析睡眠对减脂效率的影响。SystemOptimizeAgent系统优化助手基于用户的长期数据反馈动态优化其他智能体的输出策略让方案随用户状态变化持续迭代。下面是项目的整个目录环境配置与安装环境要求Python 3.8HelloAgents 框架Github链接安装依赖pip install hello-agents[all]0.2.7streamlit jupyterlab python-dotenv配置环境变量创建.env文件配置 LLM 模型相关参数这里使用的阿里百炼平台链接阿里百炼平台注册账号得到API_key。# LLM 模型配置LLM_MODEL_IDqwen-plus# 可以自己选模型LLM_API_KEYyour_api_key_here# 配置自己的API_keyLLM_BASE_URLhttps://api-inference.modelscope.cn/v1 LLM_TIMEOUT60文件代码# MentorAgent.pyfromhello_agentsimportSimpleAgent,HelloAgentsLLMfromtypingimportDict,Anyfromsrc.agent.BodyDataTrendAgentimportBodyDataTrendAgentfromsrc.agent.ComplianceMotivationAgentimportComplianceMotivationAgentfromsrc.agent.DietPlanningAgentimportDietPlanningAgentfromsrc.agent.ExerciseDataAnomalyAgentimportExerciseDataAnomalyAgentfromsrc.agent.ExercisePlanningAgentimportExercisePlanningAgentfromsrc.agent.HealthRiskWarnAgentimportHealthRiskWarnAgentfromsrc.agent.SleepMetabolismAgentimportSleepMetabolismAgentfromsrc.agent.SystemOptimizeAgentimportSystemOptimizeAgentfromsrc.tools.agent_toolimportAgentToolclassTutorAgent(SimpleAgent): MentorAgent 减肥导师智能体 多智能体减肥系统的核心总控模块负责统一调度管理所有子智能体。 汇总用户数据与各智能体分析结果综合决策并动态调整减肥方案 协调饮食、运动、数据监测等模块协同工作保障减脂安全、科学、有效。 def__init__(self,llm:HelloAgentsLLM): 初始化 TutorAgent 和所有子智能体。 Args: llm: 用于所有 agents 的大语言模型实例。 # 导入放在这里避免循环导入# 创建子智能体实例self.body_trendBodyDataTrendAgent(llm)# 体重体脂趋势分析智能体self.compliance_motivationComplianceMotivationAgent(llm)# 激励助手智能体self.diet_planningDietPlanningAgent(llm)# 饮食规划师智能体self.exercise_anomalyExerciseDataAnomalyAgent(llm)# 运动监测智能体self.exercise_planningExercisePlanningAgent(llm)# 运动规划师智能体self.health_risk_warnHealthRiskWarnAgent(llm)# 安全预警智能体self.sleep_metabolismSleepMetabolismAgent(llm)# 睡眠分析师智能体self.system_optimizeSystemOptimizeAgent(llm)# 复盘优化智能体# 定义系统提示词system_prompt 你是一位智能减肥导师 (Mentor)。你负责协调个性化的减脂体验。 你拥有以下专业助手工具 - call_diet_planning: 饮食规划师制定个性化饮食计划 - call_exercise_planning: 运动规划师制定个性化运动计划 - call_exercise_anomaly: 运动监测判断运动数据是否异常 - call_body_trend: 数据分析师分析体重体脂变化趋势 - call_sleep_metabolism: 睡眠分析师分析睡眠与代谢状态 - call_compliance_motivation: 激励助手提升依从性与动力 - call_health_risk_warn: 安全预警监测健康风险 - call_system_optimize: 复盘优化定期优化减脂方案 **关键你必须使用工具不能自己完成这些任务** 工具调用格式严格遵守此格式 [TOOL_CALL:工具名称:参数] 具体示例 示例1 - 制定饮食计划 用户我想减脂帮我制定饮食计划 你的回答[TOOL_CALL:call_diet_planning:query请为用户制定个性化减脂饮食计划] 示例2 - 制定运动计划 用户帮我安排今天的运动 你的回答[TOOL_CALL:call_exercise_planning:query请为用户制定个性化减脂运动计划] 示例3 - 分析体重趋势 用户我最近体重一直不变 你的回答[TOOL_CALL:call_body_trend:query请分析用户体重体脂变化趋势] 示例4 - 监测运动数据 用户我今天运动心率170 你的回答[TOOL_CALL:call_exercise_anomaly:query请判断用户运动数据是否异常] 工作流程必须严格遵守 1. 用户需要饮食方案 → 调用 call_diet_planning 2. 用户需要运动方案 → 调用 call_exercise_planning 3. 用户有运动数据 → 调用 call_exercise_anomaly 4. 用户记录体重体脂 → 调用 call_body_trend 5. 用户反馈睡眠问题 → 调用 call_sleep_metabolism 6. 用户难以坚持/需要鼓励 → 调用 call_compliance_motivation 7. 用户出现不适/风险行为 → 调用 call_health_risk_warn 8. 需要定期复盘优化 → 调用 call_system_optimize **绝对禁止的行为** - ❌ 不要自己制定饮食计划 - ❌ 不要自己制定运动计划 - ❌ 不要自己分析身体数据 - ❌ 不要自己判断运动是否异常 - ❌ 不要说工具调用失败然后自己完成任务 正确的行为 - ✅ 识别用户减脂需求 - ✅ 立即生成工具调用格式[TOOL_CALL:工具名:query...] - ✅ 等待工具返回结果 - ✅ 将结果友好地呈现给用户 # 初始化父类super().__init__(nameTutor,llmllm,system_promptsystem_prompt)# 将子智能体包装为工具并注册self.add_tool(AgentTool(self.body_trend,namecall_body_trend,description调用体重体脂趋势分析智能体分析用户体重体脂变化趋势))self.add_tool(AgentTool(self.compliance_motivation,namecall_compliance_motivation,description调用激励助手智能体提升依从性与动力))self.add_tool(AgentTool(self.diet_planning,namecall_diet_planning,description调用饮食规划师智能体为用户制定个性化减脂饮食计划))self.add_tool(AgentTool(self.exercise_anomaly,namecall_exercise_anomaly,description调用运动监测智能体判断运动数据是否异常))self.add_tool(AgentTool(self.exercise_planning,namecall_exercise_planning,description调用运动规划师智能体为用户制定个性化减脂运动计划))self.add_tool(AgentTool(self.health_risk_warn,namecall_health_risk_warn,description调用安全预警智能体监测健康风险))self.add_tool(AgentTool(self.sleep_metabolism,namecall_sleep_metabolism,description调用睡眠分析师智能体分析睡眠与代谢状态))self.add_tool(AgentTool(self.system_optimize,namecall_system_optimize,description调用复盘优化智能体定期优化减脂方案))# BodyDataTrendAgent.pyfromhello_agentsimportSimpleAgent,HelloAgentsLLMclassBodyDataTrendAgent(SimpleAgent): 负责分析体重、体脂、围度等身体数据趋势的智能体。 def__init__(self,llm:HelloAgentsLLM): 初始化 BodyDataTrendAgent。 Args: llm: 用于数据分析的大语言模型实例。 system_prompt 你是一位专业的身体数据趋势分析师。 你的目标是分析用户体重、体脂、围度等数据判断减脂效果。 当分析数据时 1. 接收用户每日体重、体脂、身体围度等记录。 2. 分析长期变化趋势排除短期波动干扰。 3. 判断是否进入减脂平台期识别异常变化。 4. 给出趋势解读、健康评估和优化建议。 5. 向导师智能体反馈效果用于调整饮食与运动计划。 分析结果简洁专业重点突出趋势与风险便于系统决策。 super().__init__(nameBodyDataTrend,llmllm,system_promptsystem_prompt)# ComplianceMotivationAgent.pyfromhello_agentsimportSimpleAgent,HelloAgentsLLMclassComplianceMotivationAgent(SimpleAgent): 负责用户依从性管理与减脂激励的智能体。 def__init__(self,llm:HelloAgentsLLM): 初始化 ComplianceMotivationAgent。 Args: llm: 用于激励与依从性管理的大语言模型实例。 system_prompt 你是减脂依从性与心理激励专家。 目标是提升用户坚持度避免放弃与暴食。 工作内容 1. 监测计划执行率识别懈怠与放弃倾向。 2. 提供正向鼓励、情绪疏导与动力激发。 3. 对情绪性进食给出替代方案。 4. 帮助用户建立长期坚持的习惯。 5. 语言温和积极富有说服力。 super().__init__(nameComplianceMotivation,llmllm,system_promptsystem_prompt)# DietPlanningAgent.pyfromhello_agentsimportSimpleAgent,HelloAgentsLLMclassDietPlanningAgent(SimpleAgent): 负责制定个性化减肥饮食计划的智能体。 def__init__(self,llm:HelloAgentsLLM): 初始化 DietPlanningAgent。 Args: llm: 用于生成饮食方案的大语言模型实例。 system_prompt 你是专业减脂饮食规划师。 你的目标是根据用户信息制定科学、可持续的饮食方案。 制定计划时 1. 结合身高、体重、目标、饮食偏好与禁忌。 2. 控制热量缺口保证蛋白质、膳食纤维与营养均衡。 3. 给出三餐结构、食材建议与饮食原则。 4. 避免极端节食保证可执行性。 5. 输出清晰易懂便于用户执行。 饮食方案健康、合理、贴合减脂需求。 super().__init__(nameDietPlanning,llmllm,system_promptsystem_prompt)# DietRecordAgent.pyfromhello_agentsimportSimpleAgent,HelloAgentsLLMclassDietRecordAgent(SimpleAgent): 负责饮食记录分析与热量评估的智能体。 def__init__(self,llm:HelloAgentsLLM): 初始化 DietRecordAgent。 Args: llm: 用于饮食识别与评估的大语言模型实例。 system_prompt 你是饮食记录与营养评估专家。 目标是识别饮食内容、估算热量并评估合理性。 工作内容 1. 分析用户饮食记录识别食物种类与分量。 2. 估算热量、宏量营养素比例。 3. 判断是否高脂高糖高油给出改进建议。 4. 对比计划饮食与实际摄入偏差。 5. 输出简洁明确便于导师智能体调整计划。 super().__init__(nameDietRecord,llmllm,system_promptsystem_prompt)# ExerciseDataAnomalyAgent.pyfromhello_agentsimportSimpleAgent,HelloAgentsLLMclassExerciseDataAnomalyAgent(SimpleAgent): 负责监测运动数据异常与风险识别的智能体。 def__init__(self,llm:HelloAgentsLLM): 初始化 ExerciseDataAnomalyAgent。 Args: llm: 用于异常分析的大语言模型实例。 system_prompt 你是运动数据监测与风险评估专家。 目标是识别运动数据异常保障用户安全。 监测内容 1. 心率、步数、运动时长、强度是否异常。 2. 判断是否过度运动、心率过高、负荷不当。 3. 识别风险行为并及时预警。 4. 向导师智能体反馈异常调整运动计划。 5. 输出风险等级与处理建议。 super().__init__(nameExerciseDataAnomaly,llmllm,system_promptsystem_prompt)# ExercisePlanningAgent.pyfromhello_agentsimportSimpleAgent,HelloAgentsLLMclassExercisePlanningAgent(SimpleAgent): 负责制定个性化减脂运动计划的智能体。 def__init__(self,llm:HelloAgentsLLM): 初始化 ExercisePlanningAgent。 Args: llm: 用于生成运动方案的大语言模型实例。 system_prompt 你是专业减脂运动规划师。 目标是根据用户情况制定安全高效的运动计划。 制定计划时 1. 结合用户体能、场地、时间与运动偏好。 2. 合理搭配有氧与力量训练提升消耗与代谢。 3. 控制强度避免受伤循序渐进。 4. 给出动作、组数、频次与注意事项。 5. 计划清晰可执行适合长期坚持。 super().__init__(nameExercisePlanning,llmllm,system_promptsystem_prompt)# HealthRiskWarnAgent.pyfromhello_agentsimportSimpleAgent,HelloAgentsLLMclassHealthRiskWarnAgent(SimpleAgent): 负责减脂过程健康风险预警与安全保障的智能体。 def__init__(self,llm:HelloAgentsLLM): 初始化 HealthRiskWarnAgent。 Args: llm: 用于健康风险评估的大语言模型实例。 system_prompt 你是减脂安全与健康风险预警专员。 目标是识别风险保障用户身体健康。 预警内容 1. 过度节食、营养不良、心率异常等风险。 2. 运动损伤、低血糖、疲劳过度等状况。 3. 对危险行为强制提醒并建议暂停。 4. 高优先级反馈给导师智能体调整计划。 5. 预警明确、严肃保障安全第一。 super().__init__(nameHealthRiskWarn,llmllm,system_promptsystem_prompt)# SleepMetabolismAgent.pyfromhello_agentsimportSimpleAgent,HelloAgentsLLMclassSleepMetabolismAgent(SimpleAgent): 负责睡眠监测与代谢状态评估的智能体。 def__init__(self,llm:HelloAgentsLLM): 初始化 SleepMetabolismAgent。 Args: llm: 用于睡眠与代谢分析的大语言模型实例。 system_prompt 你是睡眠与代谢健康分析师。 目标是评估睡眠对减脂与代谢的影响。 工作内容 1. 分析睡眠时长、质量、作息规律。 2. 判断睡眠是否影响饥饿激素与代谢效率。 3. 给出睡眠改善建议以辅助减脂。 4. 联动饮食与运动计划进行适配调整。 5. 输出简洁专业便于系统决策。 super().__init__(nameSleepMetabolism,llmllm,system_promptsystem_prompt)# SystemOptimizeAgent.pyfromhello_agentsimportSimpleAgent,HelloAgentsLLMclassSystemOptimizeAgent(SimpleAgent): 负责系统复盘与减脂策略迭代优化的智能体。 def__init__(self,llm:HelloAgentsLLM): 初始化 SystemOptimizeAgent。 Args: llm: 用于复盘优化的大语言模型实例。 system_prompt 你是减脂系统优化与复盘分析师。 目标是持续迭代计划提升减脂效果。 工作内容 1. 每周/每月复盘计划执行与减脂效果。 2. 分析有效与无效部分定位问题。 3. 优化用户模型与饮食运动策略。 4. 向导师智能体提供长期调整建议。 5. 让整个系统越用越精准高效。 super().__init__(nameSystemOptimize,llmllm,system_promptsystem_prompt)# agent_tool.py AgentTool: 将 SimpleAgent 包装为 Tool实现直接调用 这是比 A2A 协议更简单的多智能体模式 fromhello_agentsimportSimpleAgentfromhello_agents.toolsimportToolfromtypingimportDict,AnyclassAgentTool(Tool):将一个 SimpleAgent 包装为可被其他 Agent 调用的工具def__init__(self,agent:SimpleAgent,name:str,description:str): Args: agent: 要包装的 SimpleAgent 实例 name: 工具名称 description: 工具描述 self.agentagent self._namename self._descriptiondescriptionpropertydefname(self)-str:returnself._namepropertydefdescription(self)-str:returnself._descriptiondefget_parameters(self)-list:定义工具参数fromhello_agents.tools.baseimportToolParameterreturn[ToolParameter(namequery,typestring,description发送给智能体的查询或指令,requiredTrue)]defrun(self,parameters:Dict[str,Any])-str:执行工具 - 直接调用被包装的 agentqueryparameters.get(query,)ifnotquery:return错误需要提供 query 参数try:# 直接调用 agent 的 run 方法returnself.agent.run(query)exceptExceptionase:returnf调用{self.name}时出错:{str(e)}# code_runner.pyimportioimportcontextlibfromhello_agents.toolsimportToolfromtypingimportDict,AnyclassCodeRunner(Tool): 安全执行 Python 代码并返回输出的工具。 警告此工具使用 exec()在生产环境中不安全。 对于真实产品请使用 Docker 等沙箱环境。 def__init__(self):super().__init__(namecode_runner,description执行 Python 代码并返回标准输出/错误。输入应为包含 code 键的字典。)defget_parameters(self)-Dict[str,Any]:return{type:object,properties:{code:{type:string,description:要执行的 Python 代码片段}},required:[code]}defrun(self,parameters:Dict[str,Any])-str:codeparameters.get(code,)ifnotcode:return错误未提供代码。# 捕获标准输出和标准错误stdout_captureio.StringIO()stderr_captureio.StringIO()try:withcontextlib.redirect_stdout(stdout_capture),contextlib.redirect_stderr(stderr_capture):# 创建受限的全局作用域safe_globals{__builtins__:__builtins__,print:print,range:range,len:len,# 根据需要添加更多安全的内置函数}exec(code,safe_globals)outputstdout_capture.getvalue()errorsstderr_capture.getvalue()resultifoutput:resultf输出:\n{output}\niferrors:resultf错误:\n{errors}\nifnotresult:result代码执行成功无输出。returnresultexceptExceptionase:returnf运行时错误:{str(e)}# app.pyimporttimeimportstreamlitasstfrommainimporttutor st.title(减肥助理)st.divider()ifagentnotinst.session_state:st.session_state[agent]tutorifmessagesnotinst.session_state:st.session_state[messages][]formessagesinst.session_state[messages]:st.chat_message(messages[role]).write(messages[content])promptst.chat_input(请输入您的问题...)ifprompt:st.chat_message(user).write(prompt)st.session_state[messages].append({role:user,content:prompt})response[]withst.spinner(思考中...):resultst.session_state[agent].run(prompt)defstream_response(result:str): 流式输出助手回复 :param result: 要输出的字符串 msgst.chat_message(assistant)holdermsg.empty()textforcinresult:textc holder.write(text)time.sleep(0.01)stream_response(result)st.session_state[messages].append({role:assistant,content:result})st.rerun()# main.pyimportosfromdotenvimportload_dotenvfromhello_agentsimportHelloAgentsLLMfromsrc.agent.MentorAgentimportTutorAgent# 加载环境变量load_dotenv()# 初始化 LLM# 从环境变量读取配置正确写法没有 .from_env()llmHelloAgentsLLM(api_keyos.getenv(OPENAI_API_KEY),base_urlos.getenv(LLM_BASE_URL),modelos.getenv(LLM_MODEL_ID))# 创建导师智能体tutorTutorAgent(llm)运行代码在命令行中运行下面代码即可运行并打开web网页。streamlit run app.py下面是运行起来的界面总结本次项目开发的核心是复用成熟的多智能体框架适配垂直领域需求并通过前端降低使用门槛。后续我还计划接入更多健康数据接口如体脂秤、运动手环加入工具的使用让智能减肥助理更 “懂用户”。如果你也对多智能体应用开发感兴趣不妨从 HelloAgents 框架入手结合自己感兴趣的领域打造属于自己的智能助手

更多文章