TradingAgents-CN 获取 Finnhub 新闻数据报 No such file or directory 怎么排查?
【免费下载链接】TradingAgents-CN基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN
TradingAgents-CN 在调用 Finnhub 新闻工具(FinnhubNewsTool/get_finnhub_news)时,如果日志里出现类似这样的报错:
[DEBUG] FinnhubNewsTool调用,股票代码: AAPL 获取新闻数据失败: [Errno 2] No such file or directory: '/Users/yluo/Documents/Code/ScAI/FR1-data\\finnhub_data\\news_data\\AAPL_data_formatted.json'说明新闻数据文件没有落在程序实际查找的位置。根据 Finnhub 新闻数据配置指南,这类报错对应三类原因:路径配置错误(混合了 Unix 和 Windows 路径分隔符)、数据文件不存在、数据目录配置不正确。本文章的排查路径基于该文档与 数据目录配置指南,适用于 TradingAgents-CN v0.1.3+(故障指南标注的适用范围)。
新闻数据的读取逻辑在 get_data_in_range:它按数据目录/finnhub_data/news_data/{ticker}_data_formatted.json拼接文件路径,文件不存在时记录⚠️ [DEBUG] 数据文件不存在: {data_path}警告并返回空结果;get_finnhub_news 拿到空结果后返回中文错误提示。因此排查的核心只有一条:确认程序读取的数据目录,和新闻文件实际存放的目录是同一个。
第一步:查看当前数据目录配置
数据目录的取值优先级(从高到低)是:环境变量TRADINGAGENTS_DATA_DIR> CLI 设置 > 默认配置(见 数据目录配置指南)。默认路径为:
- Windows:
C:\Users\{username}\Documents\TradingAgents\data - Linux/macOS:
~/Documents/TradingAgents/data
用 CLI 查看当前生效的配置:
# 显示当前数据目录配置 python -m cli.main># Windows python -m cli.main># Windows set TRADINGAGENTS_DATA_DIR=C:\MyTradingData # Linux/macOS export TRADINGAGENTS_DATA_DIR="/home/user/trading-data"如果数据目录本身因权限问题无法创建或写入(文档 Q1 场景),先手动建目录:
# Windows(以管理员身份运行) mkdir "C:\Users\%USERNAME%\Documents\TradingAgents\data" # Linux/Mac mkdir -p ~/Documents/TradingAgents/data chmod 755 ~/Documents/TradingAgents/data第三步:下载缺失的新闻数据
文件不存在时,用项目自带的下载脚本 scripts/download_finnhub_data.py 从 Finnhub API 拉取。先配置 API 密钥(脚本未设置密钥时会直接报❌ 未找到Finnhub API密钥,请设置FINNHUB_API_KEY环境变量):
# 在.env文件中添加 FINNHUB_API_KEY=your_finnhub_api_key_here然后只下载新闻数据(--data-type news只请求 news 一类数据;--all会同时下载 news、sentiment、transactions 三类,只排查新闻问题时无需使用):
# 下载指定股票、指定天数的新闻数据 python scripts/download_finnhub_data.py --data-type news --symbols AAPL --days 30参数说明(来自文档与脚本帮助):
--data-type:数据类型,可选news、sentiment、transactions、all;--symbols:股票代码,逗号分隔,例如AAPL,TSLA,MSFT;--days:新闻数据天数,默认 7 天;--force-refresh:强制刷新已存在的数据;--data-dir:数据存储目录,不传时使用环境变量TRADINGAGENTS_DATA_DIR,都没有则用项目根目录下的data/。
注意目录对齐:不显式传--data-dir且未设置TRADINGAGENTS_DATA_DIR时,数据会写到项目根目录的data/下,而分析流程读取的DATA_DIR是config_manager.get_data_dir()的取值。两边不一致时,"文件已下载但依旧报 No such file or directory" 就会复现,所以建议用--data-dir显式指定为data-config --show显示的那个目录。
可选分支:只是想验证功能通路而不关心真实数据时,可以运行示例数据生成脚本(只创建本地文件,不调用 API):
python scripts/development/download_finnhub_sample_data.py验证配置与数据是否生效
按文档给出的验证方式,依次确认:
数据目录配置正确:
python -m cli.main>ls ~/Documents/TradingAgents/data/finnhub_data/news_data/直接调用读取函数测试:
python -c " from tradingagents.dataflows.interface import get_finnhub_news result = get_finnhub_news('AAPL', '2025-01-02', 7) print(result[:200]) "参数分别是股票代码、当前日期(yyyy-mm-dd)和回看天数。如果返回的是"无法获取AAPL的新闻数据"错误提示,说明文件还是没找到或日期范围内没有数据;能打印出新闻内容则说明链路已通。
另外可以运行测试脚本做综合检查(它会依次检查数据目录格式、新闻文件路径和错误处理):
python tests/test_finnhub_news_fix.py需要说明的是:该脚本引用了tradingagents.dataflows.finnhub_utils,而当前仓库中对应逻辑位于 providers/us/finnhub.py,脚本在部分版本上可能无法完整执行,验证请以上面两步为准。
已知边界与残留问题
- API 配额限制:Finnhub 免费额度有限,调用超限时文档建议升级 API 计划、用缓存减少调用、降低获取频率。
- JSON 格式损坏:如文件已存在但解析失败,脚本会记录
❌ [ERROR] JSON解析错误并返回空。可用python -c "import json; print(json.load(open('path/to/file.json')))"验证文件内容(path/to/file.json替换为实际的*_data_formatted.json路径),确认损坏后重新执行python scripts/download_finnhub_data.py --force-refresh覆盖下载。 - 路径修复后,同类报错不会再以
[Errno 2]形式抛出,而是变成上面第 3 步中那样的中文提示,并附带"数据文件不存在或路径配置错误 / 指定日期范围内没有新闻数据 / 需要先下载或更新Finnhub新闻数据"三种可能原因,可据此判断下一步。
【免费下载链接】TradingAgents-CN基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考