使用 Agentic Retrieval-Augmented Generation (RAG) 工作流程从与特定公司和更广泛的股票市场相关的新闻和财务数据中提取见解。它利用大型语言模型 (LLM)、ChromaDB 作为向量数据库、LangChain、LangChain 表达式语言 (LCEL) 和 LangGraph 来提供全面的分析。
更多AI开源软件:/sources
主要功能
- Stock Performance Visualization(股票表现可视化):显示说明所选股票历史表现的图形和图表。
- 特定于属性的数据检索:获取与特定股票的特定属性相关的详细信息。
- 新闻聚合:显示与特定股票或公司相关的一般新闻或特定主题的文章。
安装和使用
异步抓取
- 新闻数据:定期异步抓取一组预定义股票的新闻数据,并将信息存储在 MongoDB 中。这些文档与 ChromaDB 同步,使 LLM 能够执行语义搜索,从而有助于检索特定于特定股票或公司的相关信息。
- 财务数据:定期异步抓取选定股票的财务数据,并将信息存储在 PostgreSQL 中。
LangGraph 工作流
新闻数据 RAG 图
一个代理 RAG 图形,用于在矢量数据库(来自 MongoDB 的同步文档)中搜索股票的新闻数据,或者在找不到相关文档时执行 Web 搜索。
此图包含以下节点:
- **从数据库检索新闻 (
retrieve_news
):**利用 LLM、LangChain 和检索器工具在矢量数据库中执行语义搜索,以查找与特定股票主题相关的文档。 - **对文档评分 (
grade_documents
):**评估在上一步中检索到的文档的质量,并指定分数以确定其相关性。条件边缘决定是生成结果,还是在文档不相关时执行其他 Web 搜索。 - **Web Search (
web_search
):**使用与 LangChain 和 LLM 调用集成的 TavilySearch 工具进行 Web 搜索。 - **Generate Results (
generate_results
):**根据用户查询和在前面的步骤中检索到的文档生成结果。
股票数据 RAG 图
一个代理 RAG 图,用于在 SQL 数据库 (PostgreSQL) 中搜索股票的财务数据。
此图表包括以下节点:
- **生成 SQL (
generate_sql
):**使用 LLM 和 LangChain 根据用户输入生成 SQL 查询。 - **执行 SQL (
execute_sql
):**执行上一步中生成的 SQL 查询,从数据库中获取数据。 - **Generate Results (
generate_results
):**利用 LLM 根据用户查询和上一步中检索到的数据生成结果。
股票数据图表 RAG 图
一个代理 RAG 图形,用于从 SQL 数据库 (PostgreSQL) 检索股票的财务数据并生成可视化图表。
此图由以下节点组成:
- **生成 SQL (
generate_sql
):**使用 LLM 和 LangChain 根据用户输入创建 SQL 查询。 - **执行 SQL (
execute_sql
):**运行之前生成的 SQL 查询以从数据库获取数据。
APIs
详细的 API 规范请参考附件。openapi.json
价格统计 (GET)/stock/{ticker}/price-stats
)
获取特定股票代码的股票价格统计数据。
参数: ticker (str):股票代码。 operation (str):要执行的作(例如,‘highest’、’lowest’、‘average’)。 price_type (str):价格类型(例如,‘open’、‘close’、’low’、‘high’)。 duration (int):天数
返回: dict:包含请求的统计信息的股票数据。
参数:
ticker
: string - 股票代码operation
: string - 要执行的作: ‘highest’, ’lowest’, ‘average’price_type
: string - 价格类型: ‘open’, ‘close’, ’low’, ‘high’duration
: 字符串 - 持续时间(天):‘1’、‘7’、‘14’、‘30’
图表 (GET/stock/{ticker}/chart
)
获取股票价格统计数据并返回特定股票代码的直方图/图表。
参数: ticker (str):股票代码。 price_type (str):价格类型(例如,‘open’、‘close’、’low’、‘high’)。 duration (int):天数
返回: dict:包含请求的统计信息的股票数据。
参数:
ticker
: string - 股票代码price_type
: string - 价格类型: ‘open’, ‘close’, ’low’, ‘high’duration
: 字符串 - 持续时间(天):‘1’、‘7’、‘14’、‘30’
按主题分类的新闻 (GET)/news/{ticker}
)
获取特定代码的新闻。
参数: ticker (str):股票代码。 topic (str):用于获取特定股票新闻的主题。
返回: dict:特定滚动条的相关新闻。
参数:
ticker
: string - 股票代码topic
: string - 主题
Root (GET/
)
应用程序的根/主页
参数:
无参数
类图
图表
有关视觉表示,请参阅目录中的图像。images/
测试框架
该项目使用 pytest 框架进行自动化测试。这可确保所有模块都经过全面测试,以保持可靠性和稳健性。测试设置的主要特点包括:
全面的测试用例:为每个模块编写测试用例,确保应用程序的完整覆盖。 易用性:只需运行以下命令即可执行所有测试:
pytest
测试报告:框架会为每次测试运行生成详细的报告,突出显示成功和失败。 此测试设置可确保应用程序在添加新功能或更新现有功能时保持稳定和功能。
可观测性和跟踪
为了监控应用程序的性能并调试与 LLM 相关的进程,该项目集成了 LangSmith 跟踪。这样可以详细跟踪所有 LLM 调用,从而深入了解应用程序的执行流程。
主要特点: LLM 调用跟踪:跟踪与大型语言模型的所有交互,包括输入、输出和执行时间。 调试协助:帮助识别 LLM 工作流程中的瓶颈或错误。 LangSmith 控制面板:提供用户友好的界面来可视化和分析跟踪。 这个怎么运作: LangSmith 跟踪无缝集成到应用程序中。所有 RAG 工作流程,包括新闻 RAG 图形、股票数据 RAG 图形和股票数据图表 RAG 图形,都利用 LangSmith 来提供可作的可观测性见解。
引用
- LangGraph:一个使用 LLM 构建有状态的多角色应用程序的库,有助于创建代理和多代理工作流。
- **LangChain 表达式语言 (LCEL):**一种用于组合链的声明式方法,可实现复杂工作流的无缝集成和优化。
该项目举例说明了高级 AI 工作流程的集成,以提供对财务和新闻数据的有洞察力的分析,为用户提供了全面的股票市场评估工具。