尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

MindEchoAgent(心境回响):基于 hello-agents 框架的情绪驱动音乐推荐智能体实战

MindEchoAgent(心境回响):基于 hello-agents 框架的情绪驱动音乐推荐智能体实战 MindEchoAgent心境回响基于 hello-agents 框架的情绪驱动音乐推荐智能体实战【免费下载链接】hello-agents 《从零开始构建智能体》——从零开始的智能体原理与实践教程项目地址: https://gitcode.com/GitHub_Trending/he/hello-agents情绪驱动的音乐推荐智能体 MindEchoAgent心境回响是一个完全基于 hello-agents 框架hello-agents0.2.7构建的智能体应用它通过「对话状态机 工具注册 A2A 跨智能体协作」识别用户心境进而完成情感安抚、音乐推荐与睡眠问题升级。阅读本文后你将掌握如何使用 SimpleAgent、ToolRegistry、MemoryTool 与 A2ATool 搭建一个多状态、多工具、可扩展的情绪陪伴型智能体并学会用 Gradio 为其快速落地可交互的 Web 演示界面。项目定位为什么是「情绪驱动」而非「标签驱动」MindEchoAgent 的核心设计理念是情绪驱动而非标签驱动系统不依赖用户预先选择的音乐风格标签而是通过自然语言理解用户当下心境如今天工作压力好大想听放松的音乐结合对话状态与场景信息做动态推荐。该设计定位与代码结构在 README.md 中明确说明同时项目强调「完全模拟、稳定可控」——内置高质量模拟数据无需 API 密钥即可完整体验全部功能。主要特点可归纳为四点情绪驱动基于深度情绪识别而非简单标签匹配Agent Tool 架构基于 hello-agents 框架模块化设计易于扩展完全模拟内置模拟数据引擎开箱即用Gradio 快速演示开箱即用的 Web 界面支持实时交互跨智能体协作通过 A2A 协议在必要时将失眠/焦虑问题升级给 SleepAgent 睡眠专家。技术栈与运行环境项目依赖清单位于 requirements.txt关键依赖如下依赖版本要求用途hello-agents0.2.7[all]扩展安装核心智能体框架提供 SimpleAgent、ToolRegistry、MemoryTool、A2ATool 等qdrant-client~1.15.1向量数据库客户端为记忆/检索能力提供底层支持gradio最新版Web 演示界面python-dotenv最新版环境变量管理loguru / openai / flask最新版日志、LLM 调用与 A2A 服务支撑语言环境要求 Python 3.10数据处理依赖标准库json、datetime、typing。Docker 部署镜像基于python:3.12-slim配置可见 Dockerfile。快速启动方式一本地启动# 1. 克隆项目 git clone https://github.com/pamdla/MindEchoAgent.git cd MindEchoAgent # 2. 安装依赖 pip install -r requirements.txt # 3. 启动应用 python main.py启动后浏览器访问http://localhost:7860即可进入 Gradio 交互界面。方式二Docker Compose 部署仓库同时提供了 docker-compose.yaml编排了三个服务mindechoagent构建本项目镜像image: mindechoagent将当前目录挂载到/apprestart: unless-stopped保证自动重启qdrant向量数据库服务暴露6333端口数据持久化到./qdrant/data并关闭遥测QDRANT__TELEMETRY_DISABLEDtrueneosrvNeo4j 图数据库neo4j:2025.11.2-community暴露7474浏览器控制台与7687Bolt 协议端口默认认证neo4j/password可选加载 APOC 插件。docker compose up -d项目结构解析对照 README.md 中的目录说明与仓库实际文件核心结构如下Co-creation-projects/pamdla-MindEchoAgent/ ├── main.py # Gradio 主界面 SleepAgent 服务启动 ├── requirements.txt # 依赖列表 ├── Dockerfile # 容器镜像定义 ├── docker-compose.yaml # 多服务编排应用 Qdrant Neo4j ├── src/ # 源代码 │ ├── agents/ │ │ ├── sleep_agent.py # 子智能体A2A 服务端 │ │ └── mind_echo_agent.py # 主智能体Agent 组装 │ ├── tools/ │ │ ├── dialogue_state_tool.py # 对话状态工具 │ │ ├── mood_music_tool.py # 音乐推荐工具 │ │ ├── text_comfort_tool.py # 文字安慰工具 │ │ └── mood_summary_tool.py # 心情总结工具 │ └── utils/ │ ├── loader.py # 模拟数据加载 │ └── state.py # 状态枚举定义 └── data/ # 数据目录心情记录等主智能体、工具、状态枚举三部分职责分离是理解整个系统的关键入口。核心功能详解1. 情绪识别与响应MindEchoAgent 的情绪识别并非单一模型判断而是由「状态机 关键词规则 LLM 生成」三层协作完成。对话状态识别系统定义了 6 种对话状态见 src/utils/state.pyclass DialogueState(str, Enum): INIT init # 初始状态 MOOD mood # 情绪识别 COMFORT comfort # 情感支持 MUSIC music # 音乐推荐 REFLECT reflect # 情绪反思 ESCALATE escalate # 问题升级状态判定由 dialogue_state_tool.py 的 MVP 规则完成关键词触发逻辑稳定可控def run(self, query: str, current_state: str ) - str: if 睡不着 in query or 失眠 in query or 焦虑 in query: return DialogueState.ESCALATE.value if 听 in query or 音乐 in query: return DialogueState.MUSIC.value if 难受 in query or 不开心 in query: return DialogueState.COMFORT.value return DialogueState.MOOD.value多维情绪检测系统可识别 6 种核心情绪同样定义在 src/utils/state.py开心happy、悲伤sad、放松relaxed、专注focused、压力stressed、兴奋excited。上下文感知与自然语言交互系统提示词要求智能体每次对话先判断状态、再由状态决定调用哪个工具因此可以理解今天好累心情美美的等口语化表达并自动映射到对应情绪与场景工作、运动、学习、睡前等。2. 智能音乐推荐音乐推荐由 mood_music_tool.py 实现采用模拟数据引擎通过 loader.py 从data/mood_music_map.json加载「情绪 → 歌曲」映射表当前仓库中以模拟数据承载覆盖多种风格和场景。def run(self, query: str) - str: # 极简规则匹配稳 for mood, songs in self.mood_map.items(): if mood in query: return self._format_result(mood, songs) # fallback return self._format_result( 未识别, [Tycho - Awake, Ólafur Arnalds - Near Light] )值得注意的设计点稳字优先规则匹配保证确定性输出LLM 只负责对话包装避免推荐结果漂移优雅降级未命中任何情绪时返回 fallback 歌单后摇/新古典风格保证任何输入都有响应播放时长计算推荐结果附带播放列表总时长信息优化聆听体验README 中列为待完善项。3. 情感支持系统情感支持采用双模式安慰引擎预设回复模板 LLM 生成。模板层由 text_comfort_tool.py 提供结构化安抚要点def run(self, query: str) - str: return ( 安抚要点\n 1. 共情承认情绪存在\n 2. 允许停顿不用强迫自己立刻变好\n 3. 小动作深呼吸、短暂休息、听轻音乐\n 4. 若持续困扰建议升级到 SleepAgent )LLM 层负责将这些要点组织成温暖、支持的自然语言共情表达 适当 emoji实现稳定模板 创造性表达的平衡并给出可操作的情绪调节建议。4. 心境记忆分析心境记忆包含三层能力历史记录自动记录每次交互的心情状态、模式识别分析情绪变化趋势和时间分布、个性化洞察基于历史数据提供建议。源码层面mind_echo_agent.py 注册了MemoryTool(user_iduser001)提供记忆读写而 mood_summary_tool.py 生成长期记忆所需的心境总结模板要求最终由 LLM 填充def run(self, query: str) - str: return ( 请根据以下内容生成一个简短的心境总结用于长期记忆\n f用户输入{query}\n 需要包含\n 1. 当前心境1-2句\n 2. 触发因素如果有\n 3. 可能的长期偏好音乐/情绪\n )该模块在 README 中标注为「待完善」是后续版本的重点演进方向。源码级原理剖析Agent Tool 如何组装主智能体装配create_mind_echo_agent 函数演示了 hello-agents 框架的标准装配流程llm HelloAgentsLLM() agent SimpleAgent( nameMindEchoAgent, llmllm, system_promptsystem_prompt # 声明状态判断 → 工具调用 → 升级的决策规则 ) registry ToolRegistry() registry.register_tool(MemoryTool(user_iduser_id)) registry.register_tool(DialogueStateTool()) registry.register_tool(TextComfortTool()) registry.register_tool(MoodMusicTool()) registry.register_tool(MoodSummaryTool()) # A2A 工具指向 SleepAgent 服务 sleep_tool A2ATool( agent_urlhttp://localhost:6000, # SleepAgent 默认端口 namesleep_agent, description睡眠专家处理失眠/焦虑等问题 ) registry.register_tool(sleep_tool) agent.tool_registry registry agent.current_state DialogueState.INIT.value关键设计System Prompt 即决策策略提示词明确规定每次对话先判断状态MOOD/COMFORT/MUSIC/ESCALATE状态决定调用哪个工具若出现持续焦虑、睡不着、失眠等关键词或状态为 ESCALATE必须升级到 SleepAgentA2AToolRegistry 统一注册5 个本地工具 1 个 A2A 远程工具模块间解耦新增能力只需写一个 Tool 类 注册一行A2ATool 连接远程智能体通过agent_urlhttp://localhost:6000指向睡眠专家服务实现跨智能体调用。跨智能体协作A2A 协议实践SleepAgent 是一个独立的 A2A 服务端定义在 sleep_agent.pyfrom hello_agents.protocols import A2AServer sleep_agent A2AServer( namesleep_agent, description睡眠专家提供助眠建议与睡眠策略 ) sleep_agent.skill(answer) def answer_sleep_question(text: str) - str: # MVP直接返回固定策略可扩展 return ( 睡眠建议\n 1. 关闭电子设备做 5 分钟深呼吸\n 2. 选择一首轻柔音乐音量调低\n 3. 若持续焦虑建议记录当下思绪并写下 3 件感恩的事\n \n如需要更个性化建议可继续描述你的睡眠情况 )而 main.py 在启动 Gradio 界面前先用后台线程拉起该 A2A 服务threading.Thread(targetlambda: sleep_agent.run(port6000), daemonTrue).start() time.sleep(1)这里形成了一个完整的MindEchoAgent情绪陪伴/音乐推荐→ A2A 升级 → SleepAgent睡眠专家的级联协作链路普通情绪问题由主智能体就地解决睡眠/焦虑问题自动转交给专家智能体处理体现了多智能体系统专业分工、按需升级的架构思想。Web 界面操作启动应用后在浏览器打开http://localhost:7860在输入框输入心情描述如今天工作压力好大想听放松的音乐点击「✨ 发送」界面左侧「 AI 回响」区域展示智能响应右侧「 音乐推荐」面板展示推荐结果查看智能响应包含四类信息情绪识别结果、个性化音乐推荐、情感支持文字、心情分析报告。界面实现细节见 main.py模拟播放器右侧music-player面板以渐变卡片展示当前歌曲、艺术家、心情与播放列表数量并保留播放/暂停/切歌/音量控制按钮当前为 JavaScript 模拟实际音乐服务需后续集成响应解析extract_music_info()从智能体响应文本中定位并解析 JSON 格式的音乐数据找不到时降级为默认推荐信息快速示例内置 5 个示例输入压力大想放松、心情开心要活力、晚上睡不着焦虑、专注工作背景音乐、运动兴奋音乐一键体验不同情绪链路服务配置demo.queue().launch(server_name0.0.0.0, server_port7860)局域网内设备也可访问。后续优化计划近期约 1 个月功能扩展记忆系统记录和分析情绪变化打通MemoryToolMoodSummaryTool的完整落盘链路音乐预览片段30 秒试听功能将模拟播放器升级为真实音频播放增加音乐文件不同类型各 1~2 首歌曲丰富模拟数据引擎曲库。中期约 2 个月用户体验优化对话历史管理支持多轮对话上下文情感强度调节滑块用户可调整推荐强度个性化偏好设置音乐风格、语言偏好等多端适配支持家居设备音箱、灯光、窗帘等。智能家居扩展方案小米音箱集成README 中给出了小米音箱集成的分阶段方案阶段 1基础对接技术栈为 Python MiService WebSocket创建小米音箱技能注册小米开发者账号 → 创建智能家居技能 → 配置语音交互模型实现语音接口语音转文本ASR→ 文本转语音TTS→ 指令解析与响应设备控制集成播放控制播放、暂停、切歌、音量调节、播放列表管理。该方案与现有sleep_agent的answer技能形成呼应未来用户可通过音箱说我睡不着指令经 ASR 进入 MindEchoAgent由状态机判定为 ESCALATE 后升级给 SleepAgent最终以 TTS 输出助眠建议并联动播放轻柔音乐构成完整的语音入口 → 智能体决策 → 设备执行闭环。总结MindEchoAgent 是一个麻雀虽小、五脏俱全的 hello-agents 实战范例它用 6 个对话状态 6 种情绪刻画了情绪识别的最小状态机用 5 个本地工具 1 个 A2A 远程工具演示了 ToolRegistry 的模块化扩展方式并用SimpleAgent A2AServer展示了一条完整的跨智能体升级链路。对于希望学习如何在 hello-agents 框架上快速搭建领域智能体的开发者从 mind_echo_agent.py 的装配代码入手对照 tools 目录下的工具实现再结合 main.py 的 Gradio 集成即可完整复现这套情绪陪伴 音乐推荐 必要时升级专家的智能体应用。【免费下载链接】hello-agents 《从零开始构建智能体》——从零开始的智能体原理与实践教程项目地址: https://gitcode.com/GitHub_Trending/he/hello-agents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表