新闻分析师在强制调用和备用工具调用时出现 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
中,强制调用和备用工具调用时传递的参数不完整:
# 修复前(错误)
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:
# 修复前(错误)
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"],
):
# 修复后
fallback_news = toolkit.get_realtime_stock_news.invoke({
"ticker": ticker,
"curr_date": current_date
})
# 修复后
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
ticker
和 curr_date
参数query
和 curr_date
参数get_realtime_stock_news
成功获取 26,555 字符的新闻数据get_google_news
成功获取 676 字符的新闻数据tradingagents/agents/analysts/news_analyst.py
get_realtime_stock_news
强制调用参数get_google_news
备用调用参数这次修复解决了新闻分析师中一个关键的参数传递问题,确保了工具调用的正确性和稳定性。修复后,新闻分析师能够:
修复简单但关键,确保了新闻分析师的核心功能能够正常运行。