ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

使用 LlamaIndex Yahoo Finance 工具构建股票与财报查询 Agent

使用 LlamaIndex Yahoo Finance 工具构建股票与财报查询 Agent 使用 LlamaIndex Yahoo Finance 工具构建股票与财报查询 Agent【免费下载链接】llama_indexLlamaIndex is the leading document agent and OCR platform项目地址: https://gitcode.com/GitHub_Trending/ll/llama_index导读本指南以 LlamaIndex 集成包llama-index-tools-yahoo-finance为核心讲解如何将 Yahoo Finance 的股票行情、财务三大报表、分析师评级与最新新闻封装为可被 LLM Agent 直接调用的工具集。你将掌握YahooFinanceToolSpec的安装方式、六大工具的用法与返回内容、基于FunctionAgent的端到端搭建流程以及BaseToolSpec到FunctionTool的底层转换原理可直接复制到自己的金融问答应用中。工具概览YahooFinanceToolSpec 是什么YahooFinanceToolSpec是 LlamaIndex 官方集成中面向金融数据场景的工具规范类它把yfinance库的常用查询能力统一封装为 6 个可被 Agent 调用的函数工具Function Tool。类定义位于 base.py通过spec_functions声明暴露的 6 个函数名balance_sheet获取公司资产负债表income_statement获取公司利润表cash_flow获取公司现金流量表stock_basic_info获取股票基础信息价格、描述、公司名等stock_analyst_recommendations获取分析师评级stock_news获取最近新闻标题该类的设计目标是作为 Agent 中的数据加载工具见 README.md 的说明即不直接面向终端用户展示数据而是把数据以字符串形式返回给 LLM由 LLM 进行解读、汇总和回答。从源码看其底层实现非常轻量每个方法都通过yf.Ticker(ticker)构造股票对象再调用对应的yfinance属性balance_sheet、income_stmt、cashflow、info、recommendations、news最终统一返回字符串。包依赖在 pyproject.toml 中声明为pandas、yfinance0.2.36,0.3与llama-index-core0.13.0,0.15Python 版本要求3.10,4.0。安装与环境准备通过 pip 安装集成包即可pip install llama-index-tools-yahoo-finance该包会自动拉取核心依赖llama-index-core与yfinance。若在 Notebook 环境中官方示例 yahoo_finance.ipynb 使用的安装命令为pip install llama-index llama-index-tools-yahoo-finance由于最终查询需要 LLM 参与决策示例中还需配置 LLM 的 API Key以 OpenAI 为例import os os.environ[OPENAI_API_KEY] sk-your-key需要说明的适用前提yfinance依赖 Yahoo Finance 公开接口实际可用性与数据字段以该库运行时的返回为准不同 ticker 的字段覆盖度可能不同个别行如早期的资产负债表条目可能为NaN。快速开始将财务能力接入 Agent集成包提供了两步式的极简用法。首先实例化工具规范并转换成工具列表from llama_index.tools.yahoo_finance import YahooFinanceToolSpec finance_tool YahooFinanceToolSpec() finance_tool_list finance_tool.to_tool_list()然后将其注入FunctionAgent与 LLM 一起构建可对话的金融助手完整示例见 README.mdfrom llama_index.core.agent.workflow import FunctionAgent from llama_index.llms.openai import OpenAI agent FunctionAgent( toolsfinance_tool_list, llmOpenAI(modelgpt-4.1), ) print(await agent.run(What is the price of Apple stock?)) print(await agent.run(What is the latest news about Apple?))Agent 会自主判断需要调用哪个工具、传入什么 ticker再基于返回的财务数据进行回答。你也可以在实例化后直接查看工具清单确认转换结果for tool in finance_tool_list: print(tool.metadata.name)输出应为 6 个工具名balance_sheet、income_statement、cash_flow、stock_basic_info、stock_analyst_recommendations、stock_news。六大工具详解以下每个工具方法的签名与返回内容均以 base.py 源码为准入参统一为股票代码字符串ticker如AAPL、MSFT。1. balance_sheet(ticker) —— 资产负债表返回yf.Ticker(ticker).balance_sheet数据以 pandas DataFrame 组织后转成字符串。列通常为最近几个财年如 2023-09-30、2022-09-30 等行包含总资产、总负债、股东权益、现金及等价物、应收账款、存货、长期债务等科目。示例中的 AAPL 输出展示了从Total Assets到Cash And Cash Equivalents的完整科目矩阵。2. income_statement(ticker) —— 利润表返回yf.Ticker(ticker).income_stmt数据包含营收、毛利、营业利润、净利润、每股收益EPS等利润表科目同样按财年列组织用于分析公司盈利能力与增长趋势。3. cash_flow(ticker) —— 现金流量表返回yf.Ticker(ticker).cashflow数据涵盖经营活动、投资活动、筹资活动产生的现金流以及自由现金流等关键科目用于评估公司的现金流健康度。4. stock_basic_info(ticker) —— 股票基础信息返回yf.Ticker(ticker).info字典的字符串形式。这是一个信息丰富的字段集合按 docstring 描述至少包含价格price、公司描述description、公司名name实际还会包含市值、市盈率、52 周高低、行业、官网等大量元数据。适合回答Apple 股价是多少这家公司是做什么的这类问题。5. stock_analyst_recommendations(ticker) —— 分析师评级返回yf.Ticker(ticker).recommendations数据包含分析师给出的 Strong Buy、Buy、Hold、Sell、Strong Sell 等评级分布及历史变化。在 yahoo_finance.ipynb 的示例中Agent 对 AAPL 的回答展示了当前周期与 1/2/3 个月前各评级人数的对比说明该数据带时间维度可支撑评级趋势类问答。6. stock_news(ticker) —— 最新新闻遍历yf.Ticker(ticker).news列表逐条提取title字段拼接输出每个标题占一行前缀为News:。该工具只返回新闻标题不返回正文链接与发布时间适合 Agent 快速获取公司近期热点再结合上下文生成摘要。源码原理从 ToolSpec 到 FunctionTool 的转换要理解上述工具如何被 Agent 调用需要追溯到核心层的BaseToolSpec基类定义于 tool_spec/base.py。YahooFinanceToolSpec直接继承BaseToolSpec仅需两件事即可成为一个可用的工具集一是声明spec_functions列表即上面 6 个方法名二是实现这些方法。to_tool_list()负责完成转换的核心逻辑遍历spec_functions中每个函数名通过getattr(self, func_spec)拿到实例方法并依据inspect.iscoroutinefunction区分同步/异步函数调用get_metadata_from_fn_name生成ToolMetadata——其描述由函数名、函数签名和 docstring 拼接而成f{name}{signature(func)}\n{docstring}这正是 LLM 判断何时调用哪个工具的依据将每个函数包装为FunctionTool并汇总成工具列表。由此可以推断工具的可调用性直接来自这些方法的函数签名参数名ticker会成为工具入参 schema而可理解性来自 docstring。因此保持方法 docstring 清晰Agent 的选工具准确率就越高。仓库中的测试 test_tools_yahoo_finance.py 也验证了这一契约它断言YahooFinanceToolSpec的 MRO方法解析顺序中包含BaseToolSpec确保该类确实以工具规范的形式接入 LlamaIndex 工具体系。端到端示例构建 AAPL 财报问答 Agent结合 yahoo_finance.ipynb 的完整流程一个可运行的端到端链路如下# 1. 安装 # !pip install llama-index llama-index-tools-yahoo-finance # 2. 配置 LLM Key import os os.environ[OPENAI_API_KEY] sk-your-key # 3. 创建工具 from llama_index.tools.yahoo_finance.base import YahooFinanceToolSpec finance_tool YahooFinanceToolSpec() finance_tool_list finance_tool.to_tool_list() # 4. 不经过 Agent直接验证单个工具可选 print(finance_tool.balance_sheet(AAPL)) # 5. 构建 Agent 并提问 from llama_index.core.agent.workflow import FunctionAgent from llama_index.llms.openai import OpenAI agent FunctionAgent( toolsfinance_tool_list, llmOpenAI(modelgpt-4.1), ) print(await agent.run(What are the analyst recommendations for AAPL?))在示例输出中Agent 对分析师评级问题的回答会以结构化文字汇总 Strong Buy / Buy / Hold / Sell / Strong Sell 的数量并对比一个月前、两个月前、三个月前的分布变化从而给出评级整体偏积极之类的判断。这说明 Agent 不仅能取数还能对财务数据做推理和比较。适用场景与使用注意典型场景金融问答助手回答个股股价、市值、公司简介类问题走stock_basic_info财报分析让 LLM 基于三大报表解读公司的资产负债结构、盈利与现金流状况投研信息聚合结合stock_news与stock_analyst_recommendations生成个股舆情与评级快照。注意事项数据源为 Yahoo Finance 公开数据字段与时效性由上游决定不适用于需要权威实时行情的交易场景工具返回的是字符串文本LLM 需要一次性处理完整报表超大表格可能占用较多上下文可引导 Agent 只关注目标科目yfinance版本被约束在0.2.36,0.3升级需关注兼容性如需在本地复现示例请按 README.md 与 Notebook 的步骤依次执行。掌握以上内容后你可以把YahooFinanceToolSpec无缝嵌入 LlamaIndex 的任意 Agent 工作流如FunctionAgent快速获得一个具备实时金融数据检索与解读能力的智能体。【免费下载链接】llama_indexLlamaIndex is the leading document agent and OCR platform项目地址: https://gitcode.com/GitHub_Trending/ll/llama_index创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表