Files
aiagents-stock/docs/分析师团队选择功能说明.md
T

11 KiB
Raw Blame History

分析师团队选择功能

📋 功能概述

已成功在开始分析之前增加分析师团队选择功能,用户可以自由选择哪些分析师参与分析。

功能特点

1. 灵活选择分析师

6位专业分析师可供选择:

分析师 默认状态 职责 数据来源
📊 技术分析师 默认勾选 技术指标、趋势分析 yfinance/akshare
💼 基本面分析师 默认勾选 财务分析、估值研究 yfinance/akshare
💰 资金面分析师 默认勾选 资金流向、主力行为 pywencai
⚠️ 风险管理师 默认勾选 风险识别、控制策略 技术指标
📈 市场情绪分析师 默认不勾选 ARBR指标、情绪分析 akshare
📰 新闻公告分析师 默认不勾选 新闻事件、公告解读 pywencai

2. 智能数据获取

系统会根据选择智能决定是否获取数据:

  • 选择了资金面分析师 → 获取资金流向数据
  • 选择了市场情绪分析师 → 获取ARBR等市场情绪数据
  • 选择了新闻公告分析师 → 获取新闻和公告数据
  • 未选择的分析师 → 不获取相关数据,节省时间

3. 动态团队讨论

团队讨论只包含参与分析的分析师:

  • 只有选中的分析师会出现在团队讨论中
  • 讨论内容基于实际参与的分析师观点
  • 提高讨论的针对性和效率

🎯 使用场景

场景1:快速分析(核心4位)

推荐配置:

  • 技术分析师
  • 基本面分析师
  • 资金面分析师
  • 风险管理师

特点:

  • 分析速度快(约2-3分钟)
  • 📊 覆盖核心维度
  • 💰 成本低(Token消耗少)

场景2:深度分析(全部6位)

推荐配置:

  • 技术分析师
  • 基本面分析师
  • 资金面分析师
  • 风险管理师
  • 市场情绪分析师
  • 新闻公告分析师

特点:

  • 🔍 分析全面深入
  • 📰 包含最新资讯
  • 📈 情绪指标支持
  • ⏱️ 分析时间较长(约4-5分钟)

场景3:重点关注(自定义)

示例配置:

  • 技术分析师(关注买卖点)
  • 新闻公告分析师(关注重大事件)

特点:

  • 🎯 针对性强
  • 速度快
  • 📌 聚焦特定维度

📸 界面展示

分析师选择界面

👥 选择分析师团队
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

列1                  列2                  列3
☑️ 技术分析师        ☑️ 资金面分析师       ☐ 市场情绪分析师
☑️ 基本面分析师      ☑️ 风险管理师         ☐ 新闻公告分析师

✅ 已选择 4 位分析师: 技术分析师, 基本面分析师, 资金面分析师, 风险管理师
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

分析过程提示

🚀 启动多智能体股票分析系统...
==================================================
📋 参与分析的分析师: technical, fundamental, fund_flow, risk
==================================================

🔍 技术分析师正在分析中...
📊 基本面分析师正在分析中...
💰 资金面分析师正在分析中...
⚠️ 风险管理师正在评估中...

✅ 所有已选择的分析师完成分析
==================================================

🔧 技术实现

1. UI组件(app.py

# 分析师团队选择
st.subheader("👥 选择分析师团队")

col1, col2, col3 = st.columns(3)

with col1:
    enable_technical = st.checkbox("📊 技术分析师", value=True)
    enable_fundamental = st.checkbox("💼 基本面分析师", value=True)

with col2:
    enable_fund_flow = st.checkbox("💰 资金面分析师", value=True)
    enable_risk = st.checkbox("⚠️ 风险管理师", value=True)

with col3:
    enable_sentiment = st.checkbox("📈 市场情绪分析师", value=False)
    enable_news = st.checkbox("📰 新闻公告分析师", value=False)

2. 数据获取逻辑(app.py

# 根据选择决定是否获取数据
enable_fund_flow = st.session_state.get('enable_fund_flow', True)
enable_sentiment = st.session_state.get('enable_sentiment', False)
enable_news = st.session_state.get('enable_news', False)

# 只在选择了对应分析师时才获取数据
if enable_fund_flow and fetcher._is_chinese_stock(symbol):
    fund_flow_data = fetcher.get_fund_flow_data(symbol)

if enable_sentiment and fetcher._is_chinese_stock(symbol):
    sentiment_data = sentiment_fetcher.get_market_sentiment_data(symbol, stock_data)

if enable_news and fetcher._is_chinese_stock(symbol):
    news_announcement_data = news_fetcher.get_news_and_announcements(symbol)

3. 分析师调度(ai_agents.py

def run_multi_agent_analysis(self, ..., enabled_analysts: Dict = None):
    """运行多智能体分析
    
    Args:
        enabled_analysts: 字典,指定哪些分析师参与分析
    """
    # 只运行被选中的分析师
    if enabled_analysts.get('technical', True):
        agents_results["technical"] = self.technical_analyst_agent(...)
    
    if enabled_analysts.get('fundamental', True):
        agents_results["fundamental"] = self.fundamental_analyst_agent(...)
    
    # ... 其他分析师

4. 动态团队讨论(ai_agents.py

def conduct_team_discussion(self, agents_results, stock_info):
    # 收集参与分析的分析师
    participants = []
    reports = []
    
    if "technical" in agents_results:
        participants.append("技术分析师")
        reports.append(agents_results['technical'].get('analysis', ''))
    
    # ... 其他分析师
    
    # 只讨论参与分析的分析师的观点
    discussion_prompt = f"""
    参会人员包括:{', '.join(participants)}
    ...
    """

💡 使用建议

1. 时间和成本考虑

配置 分析时间 Token消耗 适用场景
2位分析师 1-2分钟 快速判断
4位分析师(默认) 2-3分钟 常规分析
6位分析师(全部) 4-5分钟 深度研究

2. 推荐组合

保守型投资者:

  • 基本面分析师(看价值)
  • 风险管理师(控风险)
  • 新闻公告分析师(看动态)

激进型投资者:

  • 技术分析师(看买卖点)
  • 资金面分析师(看主力)
  • 市场情绪分析师(看情绪)

全面研究:

  • 全部6位分析师

3. 特殊情况

仅A股可用:

  • 市场情绪分析师(ARBR数据)
  • 新闻公告分析师(问财数据)
  • 资金面分析师(问财资金流向)

美股和A股通用:

  • 技术分析师
  • 基本面分析师
  • 风险管理师

⚠️ 注意事项

1. 最少选择要求

  • ⚠️ 必须至少选择1位分析师
  • ⚠️ 如果不选择任何分析师,系统会提示错误

2. 数据依赖关系

  • 市场情绪分析师需要akshare数据(仅A股)
  • 新闻公告分析师需要pywencai数据(仅A股)
  • 资金面分析师需要pywencai数据(仅A股)

3. 性能影响

  • 选择越多分析师,分析时间越长
  • 选择越多分析师,API调用次数越多
  • 建议根据实际需求选择

📊 对比分析

更新前 vs 更新后

特性 更新前 更新后
分析师数量 固定6位 灵活选择1-6位
数据获取 全部获取 按需获取
分析时间 固定长 可调节
成本控制 固定高 可优化
灵活性

典型场景时间对比

场景 更新前 更新后
快速判断(2位) 不支持 1-2分钟
常规分析(4位) 4-5分钟 2-3分钟
深度研究(6位) 4-5分钟 4-5分钟

🎉 优势总结

1. 灵活性

  • 用户可以根据需求自由组合分析师
  • 支持从1位到6位的任意组合

2. 效率

  • 减少不必要的数据获取
  • 缩短分析时间
  • 降低API调用成本

3. 针对性

  • 可以聚焦特定分析维度
  • 团队讨论更有针对性
  • 结果更符合用户需求

4. 用户体验

  • 清晰的UI界面
  • 实时显示已选择的分析师
  • 友好的错误提示

📁 修改的文件

1. app.py

  • 新增分析师团队选择UI
  • 新增选择状态保存到session_state
  • 新增选择验证(至少1位)
  • 修改数据获取逻辑(按需获取)
  • 传递分析师选择信息给AI系统

2. ai_agents.py

  • 更新run_multi_agent_analysis方法

    • 新增enabled_analysts参数
    • 根据选择决定运行哪些分析师
    • 显示参与分析的分析师名单
  • 更新conduct_team_discussion方法

    • 动态收集参与的分析师
    • 只讨论参与分析师的观点
    • 更新讨论提示词

测试验证

测试场景

场景1:选择4位分析师(默认)

  • UI正确显示4个勾选
  • 提示"已选择 4 位分析师"
  • 只获取必要的数据
  • 只运行选中的分析师
  • 团队讨论只包含4位分析师

场景2:全选6位分析师

  • 获取所有数据
  • 运行所有分析师
  • 团队讨论包含6位分析师

场景3:只选1位分析师

  • 可以正常分析
  • 团队讨论只有1位分析师观点

场景4:不选任何分析师

  • 显示错误提示
  • 阻止分析执行

🚀 使用示例

示例1:快速技术分析

  1. 输入股票代码:000001
  2. 只勾选:
    • 技术分析师
    • 风险管理师
  3. 点击"🚀 开始分析"
  4. 结果:
    • 2分钟内完成
    • 只有技术和风险分析
    • 团队讨论简洁高效

示例2:全面深度研究

  1. 输入股票代码:600519
  2. 全部勾选:
    • 所有6位分析师
  3. 点击"🚀 开始分析"
  4. 结果:
    • 5分钟内完成
    • 包含所有维度分析
    • 团队讨论全面深入

📝 更新日志

版本:v1.1 - 分析师团队选择功能

更新日期: 2025年10月7日

主要更新:

  • 新增分析师团队选择UI
  • 支持灵活选择1-6位分析师
  • 智能按需获取数据
  • 动态团队讨论
  • 默认配置优化(4位核心分析师)

影响:

  • 分析时间可缩短50%(根据选择)
  • API调用成本可降低30-50%
  • 用户体验显著提升

状态: 已完成并测试通过
功能: 完整可用
文档: 完整齐全