FinRobot项目中的FinGPT-Forecaster智能预测代理实现教程
2025-07-09 04:59:50作者:裴麒琰
概述
本文将介绍如何在FinRobot项目中实现一个基于FinGPT-Forecaster模型的智能预测代理。这个代理能够接收公司股票代码、近期财务数据和市场新闻作为输入,预测其股票走势。
技术背景
FinGPT-Forecaster是一个专门为金融预测设计的语言模型,它结合了传统金融分析方法和现代自然语言处理技术。在FinRobot项目中,我们通过AutoGen框架重新实现了这一功能,使其更加模块化和易于扩展。
环境准备
首先需要导入必要的库和工具:
import autogen
from autogen.cache import Cache
from finrobot.utils import get_current_date, register_keys_from_json
from finrobot.data_source import FinnHubUtils, YFinanceUtils
配置API密钥
项目需要配置两个关键API:
- OpenAI API:用于语言模型服务
- Finnhub API:用于获取金融数据
# 读取OpenAI配置
config_list = autogen.config_list_from_json(
"../OAI_CONFIG_LIST",
filter_dict={"model": ["gpt-4-0125-preview"]},
)
llm_config = {"config_list": config_list, "timeout": 120, "temperature": 0}
# 注册FINNHUB API密钥
register_keys_from_json("../config_api_keys")
创建代理
我们创建两个主要代理:
- 市场分析师(Market_Analyst):负责收集和分析金融信息
- 用户代理(User_Proxy):作为用户与分析师之间的接口
analyst = autogen.AssistantAgent(
name="Market_Analyst",
system_message="作为市场分析师,必须具备强大的分析和解决问题的能力...",
llm_config=llm_config,
)
user_proxy = autogen.UserProxyAgent(
name="User_Proxy",
is_termination_msg=lambda x: x.get("content", "") and x.get("content", "").endswith("TERMINATE"),
human_input_mode="NEVER",
max_consecutive_auto_reply=10,
code_execution_config={"work_dir": "coding", "use_docker": False},
)
注册工具函数
我们为代理注册了四个关键工具函数:
- 获取公司概况
- 获取公司相关新闻
- 获取基本财务数据
- 获取股票价格数据
from finrobot.toolkits import register_toolkits
tools = [
{"function": FinnHubUtils.get_company_profile, "name": "get_company_profile", ...},
{"function": FinnHubUtils.get_company_news, "name": "get_company_news", ...},
{"function": FinnHubUtils.get_basic_financials, "name": "get_financial_basics", ...},
{"function": YFinanceUtils.get_stock_data, "name": "get_stock_data", ...}
]
register_toolkits(tools, analyst, user_proxy)
执行预测分析
启动对话,让代理调用所有工具函数,并分析收集到的信息:
user_proxy.initiate_chat(
analyst,
message="使用所有提供的工具检索2024-04-11苹果公司的可用信息..."
)
分析流程
代理会按照以下步骤执行分析:
- 获取公司基本信息
- 收集近期相关新闻
- 获取基本财务数据
- 获取股票价格历史数据
- 综合分析所有信息
- 做出预测并给出理由
预测结果解读
预测结果通常包括:
- 正面发展因素(2-4个关键点)
- 潜在担忧因素(2-4个关键点)
- 下周股价变动预测(如上涨/下跌2-3%)
- 支持预测的总结分析
技术优势
这种实现方式具有以下优势:
- 模块化设计:每个功能都是独立的工具,易于维护和扩展
- 自动化流程:从数据收集到分析预测完全自动化
- 多数据源整合:结合了FinnHub和YFinance的数据
- 可解释性:分析过程透明,预测结果有据可依
应用场景
这种预测代理可以应用于:
- 个人投资决策支持
- 机构投资研究
- 金融教育工具
- 量化交易系统的信号生成
总结
通过FinRobot项目实现的FinGPT-Forecaster代理,我们展示了如何将大型语言模型与专业金融数据源相结合,构建一个强大的金融预测工具。这种方法不仅提高了预测的准确性,还增强了分析过程的可解释性,为金融分析提供了新的技术路径。