TradingAgents-CN

新闻分析师工具调用参数修复报告

问题描述

新闻分析师在强制调用和备用工具调用时出现 Pydantic 验证错误,导致工具调用失败:

❌ 强制调用失败: 1 validation error for get_realtime_stock_news 
curr_date 
  Field required [type=missing, input_value={'ticker': '600036'}, input_type=dict]

❌ 备用工具调用失败: 2 validation errors for get_google_news 
query 
  Field required [type=missing, input_value={'ticker': '600036'}, input_type=dict]
curr_date 
  Field required [type=missing, input_value={'ticker': '600036'}, input_type=dict]

根本原因

news_analyst.py 中,强制调用和备用工具调用时传递的参数不完整:

问题1:get_realtime_stock_news 调用

# 修复前(错误)
fallback_news = toolkit.get_realtime_stock_news.invoke({"ticker": ticker})

# 工具实际需要的参数
def get_realtime_stock_news(
    ticker: Annotated[str, "Ticker of a company. e.g. AAPL, TSM"],
    curr_date: Annotated[str, "Current date in yyyy-mm-dd format"],
) -> str:

问题2:get_google_news 调用

# 修复前(错误)
backup_news = toolkit.get_google_news.invoke({"ticker": ticker})

# 工具实际需要的参数
def get_google_news(
    query: Annotated[str, "Query to search with"],
    curr_date: Annotated[str, "Curr date in yyyy-mm-dd format"],
):

修复方案

修复1:get_realtime_stock_news 参数补全

# 修复后
fallback_news = toolkit.get_realtime_stock_news.invoke({
    "ticker": ticker, 
    "curr_date": current_date
})

修复2:get_google_news 参数补全

# 修复后
backup_news = toolkit.get_google_news.invoke({
    "query": f"{ticker} 股票 新闻", 
    "curr_date": current_date
})

修复验证

测试结果

🔧 测试新闻分析师工具调用参数修复
==================================================

📊 测试参数:
   - ticker: 600036
   - curr_date: 2025-07-28

🔍 测试 get_realtime_stock_news 工具调用...
   参数: {'ticker': '600036', 'curr_date': '2025-07-28'}
   ✅ get_realtime_stock_news 调用成功
   📝 返回数据长度: 26555 字符

🔍 测试 get_google_news 工具调用...
   参数: {'query': '600036 股票 新闻', 'curr_date': '2025-07-28'}
   ✅ get_google_news 调用成功
   📝 返回数据长度: 676 字符

🚫 测试修复前的错误调用方式(应该失败)...
   测试 get_realtime_stock_news 缺少 curr_date:
   ✅ 正确失败: 1 validation error for get_realtime_stock_news
   测试 get_google_news 缺少 query 和 curr_date:
   ✅ 正确失败: 2 validation errors for get_google_news

修复效果

✅ 修复成功

  1. get_realtime_stock_news 现在正确传递 tickercurr_date 参数
  2. get_google_news 现在正确传递 querycurr_date 参数
  3. Pydantic 验证错误 已完全解决
  4. 新闻分析师 应该能够正常获取新闻数据

📊 数据获取验证

影响范围

修改文件

受益功能

  1. 新闻分析师强制调用机制 - 现在能正常工作
  2. 备用工具调用机制 - 现在能正常工作
  3. A股新闻获取 - 显著改善数据获取成功率
  4. DashScope 工具调用兼容性 - 解决了参数验证问题

总结

这次修复解决了新闻分析师中一个关键的参数传递问题,确保了工具调用的正确性和稳定性。修复后,新闻分析师能够:

  1. ✅ 正确执行强制工具调用验证
  2. ✅ 正确执行备用工具调用
  3. ✅ 获取有效的新闻数据
  4. ✅ 避免 Pydantic 验证错误
  5. ✅ 提供完整的新闻分析报告

修复简单但关键,确保了新闻分析师的核心功能能够正常运行。