CrewAI+MCP股票分析-完整解决方案
🎯 解决方案:扇区比较代理实现
此存储库包含完整的解决方案 第四位行业分析师代理将股票与行业同行进行比较。
🚀 快速开始
- 安装依赖项:
pip install -r requirements.txt - 启动MCP服务器:
uvicorn api:app --host 127.0.0.1 --port 8001 - 运行应用程序:
streamlit run streamlit_crewai_app.py - 输入您的OpenAI API密钥和股票符号以查看完整的分析
🏗️ 完整的系统架构
该系统现在包括 四名专业代理:
🔍 研究代理
- 角色:股票研究专家
- 工具:搜索、报价、价格系列
- 输出:基本库存数据和历史信息
📈 技术代理
- 角色:技术分析专家
- 工具:指标、事件、人工智能解释
- 输出:技术分析和市场洞察
🏢 行业分析师 ⭐ *新*
- 角色:行业比较专家
- 工具:搜索、报价、指标
- 输出:行业同行比较和定位分析
📝 报告撰写人
- 角色:财务报告撰写人
- 工具:仅合成
- 输出:包含所有分析的综合投资报告
🔄 工作流流程
- 研究任务 → 收集公司基本数据
- 技术任务 → 分析价格趋势和指标
- 行业任务 → 与3-5个行业同行相比⭐ *新*
- 报告任务 → 将所有发现综合到最终报告中
🎯 解决方案的主要特征
行业分析能力
- 自动识别3-5个关键行业同行
- 比较多个时间范围(1M、3M、6M、1Y)的性能
- 分析财务指标(市盈率、市值、收入增长)
- 评估技术指标(RSI、移动平均线、波动率)
- 提供行业定位和竞争优势见解
增强的报告生成
- 载有主要调查结果的执行摘要
- 当前市场地位分析
- 技术分析总结
- 行业比较分析 ⭐ *新*
- 结合行业背景进行风险评估
- 专业投资建议
📁 项目结构
mcp_stocks_demo_crewai_exercise/
├── README.md # This file (solution overview)
├── streamlit_crewai_app.py # Complete application with sector agent
├── api.py # MCP server API
├── mcp_server.py # MCP server implementation
├── datasource.py # Data source functions
├── requirements.txt # Dependencies
├── EXERCISE_INSTRUCTIONS.md # Original exercise instructions
└── hints/ # Help files for learning
├── agent_hint.md
├── task_hint.md
└── integration_hint.md🧪 测试解决方案
- 启动MCP服务器:
uvicorn api:app --host 127.0.0.1 --port 8001- 运行Streamlit应用程序:
streamlit run streamlit_crewai_app.py- 用热门股票测试:
- 苹果公司 (技术部门) - 摩根大通 (金融部门) - 强生 (医疗保健行业) - XOM (能源部门)
- 验证是否出现扇区分析 在最终报告中
🎓 展示的学习要点
代理设计模式
- 角色专业化:每个代理人都有一个明确、专注的角色
- 工具分配:适合每个代理专业知识的适当工具
- 后台开发:现实的专业背景
任务编排
- 顺序处理:任务按逻辑顺序执行
- 上下文依赖关系:后续任务建立在先前分析的基础上
- 数据流:来自研究的信息流→ 技术的→ 部门→ 报告
MCP集成
- 工具再利用:不同代理使用相同的MCP工具
- 错误处理:针对API调用的强大错误处理
- 进度跟踪:执行过程中的实时反馈
🔧 技术实施细节
行业代理实施
sector_agent = Agent(
role="Sector Comparison Specialist",
goal="Compare the target stock's performance, valuation, and fundamentals against its sector peers",
backstory="""You are a seasoned sector analyst with 15 years of experience...""",
tools=[search_tool, quote_tool, indicators_tool],
verbose=True,
allow_delegation=False
)部门任务执行
sector_task = Task(
description="""Identify 3-5 key sector peers and compare across multiple dimensions...""",
expected_output="""A detailed sector comparison report including peer analysis...""",
tools=[SearchSymbolsTool(), GetQuoteTool(), GetIndicatorsTool()],
context=[research_task, technical_task]
)工作流集成
# Agent assignment
tasks[0].agent = agents["research"]
tasks[1].agent = agents["technical"]
tasks[2].agent = agents["sector"] # NEW
tasks[3].agent = agents["report"]🎉 成功指标
✅ 符合所有成功标准:
- \[x\] 添加了具有适当角色和背景故事的行业分析师代理
- \[x\] 创建了具有清晰描述的扇区比较任务
- \[x\] 与现有工作流程无缝集成
- \[x\] 运行无错误
- \[x\] 在产出中生成全面的行业分析
- \[x\] 更新UI以显示所有四个代理
- \[x\] 增强报告包括部门比较部分
🚀 后续步骤和扩展
此解决方案为进一步增强提供了坚实的基础:
- 其他行业指标:添加更复杂的行业分析
- 行业特定分析:按行业类型自定义分析
- 实时行业更新:动态扇区对等体识别
- 投资组合背景:与投资组合进行比较
- 风险调整收益:在部门比较中纳入风险指标
______________________________________________________________________
准备好探索了吗? 运行应用程序,查看完整的四代理分析! 🚀
