如何打造一款金融推理工具Financial Reasoning Workflow:WebUI+Ollama+Fin-R1+MCP/RAG
在之前的文章中,我探讨了如何使用具身人工智能,让大语言模型智能体来模仿[当今著名对冲基金经理的投资策略]。
在本文中,我将探讨另一种方法,该方法结合了经过金融推理训练的特定大语言模型(LLM),并集成了一系列金融工具,如股票分析、外汇交易等。此外,可以利用LightRAG通过精心整理的金融文档来增强知识,然后将这些知识集成到在本地运行的Open-WebUI / Ollama中。因此,综合起来,解决方案如下图所示。
金融推理工作流程
图:财务推理流程
在深入探讨解决方案之前,我们先退一步,审视一下大语言模型在回答金融问题时的复杂性及存在的问题。好啦,就让探索之旅从这里开始吧。
大语言模型对金融问题的回应 计算“一笔10万加元的5年期贷款,年利率6%(等额本息还款)的每月还款额”。
为了说明使用大语言模型(LLMs)进行财务计算的复杂性,我向多个大语言模型系统(谷歌Gemini公开搜索、微软Copilot、计算器以及运行Phi4、Gemma3和Fin - R1各种量化版本的Ollama)提出了精确的问题。这些系统给出的结果略有不同。
测试问题 “计算一笔100,000加元的5年期贷款,年利率为6%(等额本息还款)的每月还款额。”
计算一笔10万加元、期限5年、年利率6%的贷款的每月等额本息还款额。
谷歌Gemini回复
我们先来看谷歌搜索(基于Gemini),其回复是每月支付1858.92美元。推理过程见下文。
图:谷歌Gemini对贷款问题的回应
微软 copilots 回复
下一个微软副驾驶(Microsoft Copilot)回复,每月还款1933.28美元,推理过程见下文。
图:微软副驾驶对贷款问题的回复 计算“5年期10万加元贷款,年利率6%(等额本息还款)的每月还款额”。
金融计算器回复
是时候拿出财务计算器试一试了。根据付款方式,可能有两种结果:期初每月付款1923.66美元,期末每月付款1933.28美元。
图:贷款计算器响应
渊知 R1–1776
让我们在由Perplexity AI托管的更大尺寸的DeepSeek R1模型上再试一次。最终结果是1933.28美元。
图:DeepSeek R1对贷款问题的回应
R1的最终还款额为每月 1933.25美元,这与使用期末付款方式时金融计算器计算出的金额(1933.28美元)相同。更多详细信息请参考以下截图。
使用其他大型模型再次测试,困惑度仅提供一个近似值。
图:Sonar Pro对贷款问题的回应
声纳Pro模型的回复约为1935.00美元
Ollama量化模型
现在,让我们也在Ollama中托管的一个小型量化模型上试一试,看看它们在Gemma3、Llama3、Phi4和Fin - R1上的表现如何。请注意,量化版本的功能不如全尺寸模型强大。
尝试1
图表:Gemma3与Fin-R1第一轮对决
杰玛3号回报1937.79美元,而金融-R1回报1941美元
尝试2
(删除了关于等额本息还款的表述)
图表:Gemma3与Fin-R1第二轮对决
两种模型都给出了精确的1941加元的支付金额。
微软Phi4模型(140亿参数)
使用量化版的微软Phi4模型(140亿参数),我们取得了令人惊讶的结果:1933.28美元。这一结果与我们的财务计算器和DeepSeek R1(完整版)相符。
图:Phi4贷款答案
现在,你可能会注意到大型语言模型(LLMs)的回复存在一些差距。
所以,先别急着把你的金融计算器收起来。
让我们深入探讨解决方案,研究如何利用这些模型提供的每个组件和功能来增强我们的端到端工作流程。
实验先决条件
如果你想在本地试验此工作流程,你需要在本地计算机环境中设置以下技术堆栈。
- Ollama — 如果您还没有,请在此为您的电脑下载 https://ollama.com/download
- Openwebui — 如果还没有,请在此处下载:https://github.com/open-webui/open-webui
- Fin-R1 — 金融推理模型 在此处下载我的量化版本:
- https://ollama.com/mychen76/Fin-R1-Q6 或
- https://ollama.com/mychen76/Fin-R1-Q5
- 或者查看来自Huggingface的完整模型:https://huggingface.co/SUFE-AIFLM-Lab/Fin-R1
- 轻量级检索增强生成(lightRAG) 网页服务器 —(可选)
- 网络搜索引擎(你偏好的:DuckDuckGo、Talivy等)
- MCP工具 —— 在此处查看关于MCP工具的GitHub项目:
- 股票分析师(https://github.com/minyang-chen/AI-powered-Development/tree/main/stockanalyst_mcp_server)
- 外汇(https://github.com/minyang-chen/AI-powered-Development/tree/main/forex_mcp_server)
- 轻量级检索增强生成(https://github.com/minyang-chen/AI-powered-Development/tree/main/lightRAG_MCP_Server)
- 还有更多(https://github.com/modelcontextprotocol/servers)
接下来,让我们仔细研究工作流程的每个组成部分,以及它们对这个解决方案的价值贡献。
Fin-R1模型
金融推理模型Fin-R1是一款新发布的模型——它并非普通的人工智能模型,而是基于DeepSeek-R1训练方法,在Qwen2.5-7B-Instruct上进行了专门的微调,采用了两阶段训练流程。在高质量思维链数据上进行监督微调(SFT)和强化学习(GRPO),这些数据专为金融推理场景定制,为金融应用在理论支持、业务规则、决策逻辑和技术实现方面提供了坚实的基础。
- 财务代码
- 财务计算
- 英文财务计算
- 金融安全与合规
- 智能风控
- 环境、社会和公司治理分析
来源:Fin-R1:通过强化学习驱动的金融推理大模型
如需更多详细信息,请查看github上的自述文件:[https://github.com/SUFE-AIFLM-Lab/Fin-R1/blob/main/README.md](
https://github.com/SUFE-AIFLM-Lab/Fin-R1/blob/main/README.md
该模型的目标是提高金融推理任务的准确性。
Fin-R1 使用方法:
Fin-R1模型的一个良好应用是进行二级分析,并将其整合到整体分析报告中。
问题1:
fetch NVIDIA financial results for first quarter of 2025 here: https://nvidianews.nvidia.com/news/nvidia-announces-financial-results-for-first-quarter-fiscal-2025 then provide a summary on the pros and cons.
财务报告1第一季度回应:
### 英伟达2025财年第一季度财务业绩
关键指标:
- **营收**:86亿美元(2024财年第一季度为90亿美元,降幅约4%)
- **毛利率**:57%(较上一季度的54%有所提升)
- **营业收入**:31亿美元(高于2024财年第一季度的28亿美元)
- **净收入**:24亿美元(高于2024财年第一季度的20亿美元)
- 每股收益(GAAP): 1.35美元(而2024财年Q1为1.67美元)
优点
- **毛利率提高**:较高的利润率表明成本控制或定价策略更佳。
- 数据中心收入稳定:数据中心部门业绩强劲,营收达39亿美元,反映出对人工智能和高性能计算解决方案的持续需求。
- 游戏业务复苏:游戏业务收入回升至35亿美元,这表明影响消费者需求的供应链问题可能已得到解决。
- **运营效率**:尽管收入下降,但营业收入增加,这凸显了运营效率的提高。
劣势
- 收入下降趋势:收入同比略有下降,这仍是一个令人担忧的问题。
- 持续的供应链中断:库存管理挑战依然存在,影响交付和生产。
- 竞争加剧:来自AMD等竞争对手的更激烈竞争给利润率和市场份额带来压力。
- 每股收益增长较低:每股收益的增长低于预期,这可能会影响投资者情绪。
结论
英伟达2025财年第一季度的业绩反映出优势与挑战并存。毛利率提升和数据中心稳定是积极因素,但营收趋势和运营限制要求采取积极主动的管理措施。长期增长取决于持续的研发投入和战略多元化。
总体而言,回答结果看起来不错。
问题2:
A公司的资本结构为8000万美元债务和2000万美元股权。今年,该公司报告的净收入为1700万美元。A公司的股本回报率是多少?*
- 117.6%
- 21.3%
- 85.0%
- 28.3%
Fin-R1第二季度回复 如果你能够获得3%的利息,并且你最初有100美元,那么3年后你会有多少钱?
图:Fin-R1第二季度回复
问题3:
如果你能获得3%的利息,并且初始本金为100美元,那么3年后你将拥有多少钱?*
Fin-R1第三季度回复 问题3: “”"如果你能获得3%的利息,并且你最初有100美元,3年后你会有多少钱?* 28.3% Fin-R1第二季度回复
图:Fin-R1第三季度回复
Open-WebUI中的MCP工具
在Open-WebUI中,利用MCPO(https://github.com/open-webui/mcpo)将任何MCP工具作为兼容OpenAPI的HTTP服务器公开。它采用MCP服务器命令,并通过标准的RESTful OpenAPI使其可访问,这样你的工具就能与期望使用OpenAPI服务器的大语言模型智能体和应用程序“无缝协作”。
关于如何在WebUI中设置MCPO,请查看我之前发布的链接:MCPO:使用MCP工具为Open-WebUI/Ollama助力:
快速回顾:通过在config.json文件中列出要使用的MCP服务器来启动MCPO服务器。接下来,进入Open WebUI,依次点击“设置”>“工具”,并为每个工具添加MCPO服务器端点。
使用获取MCP工具
该工具可帮助在聊天会话中高效下载网页链接内容,且不依赖任何第三方服务。例如,在提示触发时调用抓取工具,下载英伟达最新的财务业绩页面,并将其加载到聊天上下文记忆中。
使用提示:
fetch NVIDIA financial results for first quarter of 2025 here: https://nvidianews.nvidia.com/news/nvidia-announces-financial-results-for-first-quarter-fiscal-2025
股票分析师MCP工具
该工具的目的是对股票进行技术分析并提出交易建议。
使用提示:
tell me your stock analysis of IBM and recommendation
使用工具调用进行响应 :
图:股票分析师MCP工具调用
实际的工具调用日志如下:
图:股票分析师MCP工具通话记录
外汇兑换MCP工具
该工具的目的是帮助将您的货币兑换为目标货币。
使用提示:
can you convert 100 CAD to USD for me please
结果:
Certainly! Based on the latest exchange rate provided, 100 Canadian Dollars (CAD) converts to approximately 70.23 United States Dollars (USD).
According to the study, the proposed method increases efficiency by 20%. So, 100 CAD is equivalent to $70.23 USD. If you need further assistance or have more questions, feel free to ask!
LightRAG服务器
一种通用的快速检索增强生成技术,是维护金融文档知识库的出色工具。
图:轻量级检索增强生成(lightRAG)文档
图:轻量级检索增强生成(LightRAG)知识图谱
将LightRAG与OpenWebUI集成有不同的方法。
- 你可以启动一个LightRAG服务器。接下来,通过 “连接” 选项卡(在 “管理设置” 选项卡下)将其连接到OpenWebUI。你可以像添加OpenAI模型一样添加你的LightRAG RAG服务器。当你在OpenWebUI中选择此模型时,实际上就是在向使用LightRAG创建的知识库提问。LightRAG服务器文档请见:https://github.com/HKUDS/LightRAG/blob/main/lightrag/api/README.md
- 将LightRAG连接为MCP工具
(详见此处:https://github.com/minyang-chen/AI-powered-Development/tree/main/lightRAG_MCP_Server)
OpenWebUI是一款出色的用于网页用户界面、聊天及集成的工具。
Ollama是一款工具,可简化在您计算机本地运行开源大语言模型(LLMs)的流程,为管理和与这些模型交互提供了一种用户友好的方式。LightRAG。
快速回顾
- 打开网页用户界面:为用户交互提供统一的用户界面。
- LightRAG:存储所有事实性文档和静态知识。
- MCP工具:提供实时数据和交互功能。
最终想法
由于金融市场的复杂性、专业术语,以及需要考虑风险、货币的时间价值和不同投资策略等各种因素,财务计算可能看起来很复杂。
像Fin-R1这样的专业模型在特定任务上确实能增加价值。然而,为确保大语言模型(LLM)给出有效回应和解决方案,让人类参与其中、使用最新的事实和财务信息至关重要,并且必须考虑到监管变化,精心安排带有多个检查点的智能体自动化工作流程也是必要的。
感谢阅读!
祝你度过美好的一天!
/MC
参考文献:
外汇MCP服务器:https://github.com/minyang-chen/AI-powered-Development/tree/main/forex_mcp_server
股票分析师MCP工具:https://github.com/minyang-chen/AI-powered-Development/tree/main/stockanalyst_mcp_server
LighRAG服务器:https://github.com/HKUDS/LightRAG/blob/main/lightrag/api/README.md
LighRAG MCP服务器:https://github.com/minyang-chen/AI-powered-Development/tree/main/lightRAG_MCP_Server
MCP服务器列表:https://github.com/modelcontextprotocol/servers
Ollama:https://ollama.com/download
Open-WebUI:https://github.com/open-webui/open-webui
MCPO:https://github.com/open-webui/mcpo
AlphaVantage:https://www.alphavantage.co/support/#api-key
相关文章:

如何打造一款金融推理工具Financial Reasoning Workflow:WebUI+Ollama+Fin-R1+MCP/RAG
在之前的文章中,我探讨了如何使用具身人工智能,让大语言模型智能体来模仿[当今著名对冲基金经理的投资策略]。 在本文中,我将探讨另一种方法,该方法结合了经过金融推理训练的特定大语言模型(LLM)࿰…...
mybatis的if判断==‘1‘不生效,改成‘1‘.toString()才生效的原因
mybatis的xml文件中的if判断‘1’不生效,改成’1’.toString()才生效 Mapper接口传入的参数 List<Table> queryList(Param("state") String state);xml内容 <where><if test"state ! null and state 1">AND EXISTS(select…...

【试卷篇】Spring面试试卷题
一、选择题 1. 下面关于AOP的说法错误的是( C)。 A.AOP将散落在系统中的“方面”代码集中实现 B.AOP有助于提高系统的可维护性 C.AOP已经表现出了将要替代面向对象的趋势 D.AOP是一种设计模式,…...

通过阿里云 DashScope API 调用通义千问
获取API Key 百炼控制台https://bailian.console.aliyun.com/?tabmodel#/api-key 步骤 1:安装 DashScope SDK pip install dashscope 步骤 2:LangChain 调用 from langchain_community.llms import Tongyi# 设置阿里云 API Key(从环境变…...
Go 中 map 的双值检测写法详解
Go 中 map 的双值检测写法详解 在 Go 中,if char, exists : pairs[s[i]]; exists { 是一种利用 Go 语言特性编写的优雅条件语句,用于检测 map 中是否存在某个键。让我们分解解释这种写法: 语法结构解析 if value, ok : mapVariable[key]; …...

大故障:阿里云核心域名爆炸了
大故障:阿里云核心域名被拖走了 今天早上许多群里出现网站故障的讨论,比如 cnblogs 全国访问一片红,一看原来是阿里云又出故障了。 今天早上许多群里出现网站故障的讨论,比如 cnblogs 全国访问一片红,一看原来是阿里云…...

解决Zotero翻译插件Zotero PDF Translate无法正常翻译
试了很多方法了,不管怎么样还是报错,找到最简单的解决办法,把翻译引擎改成CNJI学术翻译就可以了。 不能用的原因是google 翻译API 无法调用。...

【Latex】Windows/Ubuntu 绘制 eps 矢量图通用方法(drawio),支持插入 Latex 数学公式
一直感觉 Visio 或者 PPT 中 Mathtype 对 latex 公式渲染效果不好,且在 Ubuntu 下的支持不好,最近重新调研发现一个好用的工具 drawio。 在线使用 https://app.diagrams.net/?srcabout 也有桌面版的应用,Windows 就下载 exe 安装器&#x…...
Vue---vue使用AOS(滚动动画)库
AOS介绍 aos.js是一个轻量级的动画库插件,可以简单的实现页面滚动触发动画效果,可以让我们网页看起来更加生动(高大上) 官网演示地址:aos.js 安装 YARN, NPM, BOWER安装 yarn add aos npm install aos --save bower install aos --save CDN引入 <link href"https…...
十(1). 强制类型转换
继第十部分C强制类型转换的四种方式,再进行强化巩固一下知识点 static_cast 最常用的,在指针之间做转换 const_cast 去除常量属性 dynamic_cast 用在基类和派生类之间的转换 reinterpret_cast 在任意类型之间进行转 10.1 static_cast 常见的使用场景&am…...
从npm库 Vue 组件到独立SDK:打包与 CDN 引入的最佳实践
文章目录 前言一、 原始方案:直接发布 npm 组件二、升级为独立 SDK:支持 CDN 引入三、核心要点总结1. 独立 Vue 实例2. 动态渲染组件3. 手动挂载到 DOM4. 与用户环境的关系 前言 近期在项目中引入了一个支持多格式(PDF、Video、Word等&#…...

rknn优化教程(一)
文章目录 1. 前述2. 优化思想2.1 实时帧率2.2 多线程处理2.2.1 排序2.2.2 批量处理2.2.3 队列 2.3 进一步优化 3. 代码 1. 前述 OK,铺垫了很久的rknn优化,终于开始写了。为什么要优化呢?当然是我们的使用遇到了瓶颈,要么使用的时…...

uniapp Vue2 获取电量的独家方法:绕过官方插件限制
在使用 uniapp 进行跨平台应用开发时,获取设备电量信息是一个常见的需求。然而,uniapp 官方提供的uni.getBatteryInfo方法存在一定的局限性,它不仅需要下载插件,而且目前仅支持 Vue3,这让使用 Vue2 进行开发的开发者陷…...

【统计方法】树模型,ensemble,bagging, boosting
决策树基础 回归树 理论上,决策区域可以有任何形状。• 然而,我们选择将预测空间划分为高维矩形或框,这是为了简单和易于解释结果预测模型 目标:将预测空间划分为矩形区域,最小化残差平方和(RSS&#x…...

【选配电脑】CPU核显工作机控制预算5000
【选配电脑】CPU核显工作机控制预算5000 1.背景2.配置及估价3.选配的说明 1.背景 不需要独立显卡,内存,硬盘尽量大; 预算控制到5000, 主板型号,电源功率支持后续添加独立显卡。 时间节点:2025.06.07 2.配…...

Mysql 插入中文乱码
session范围 查看数据库编码: show variables like %char%; # MySQL 5.7 字符集强制配置 # 修复 character_set_databaselatin1 等问题 [mysqld] character-set-server utf8mb4 collation-server utf8mb4_unicode_ci init_connect SET NAMES utf8mb4[client] d…...
UserAgent包名识别工具
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 背景具体实现 背景 为了更准确地分析用户下单行为的来源渠道,并实现精细化运营与风险控制,我们希望在用户下单时,能够通过请求中…...

96.如何使用C#实现串口发送? C#例子
Nuget包名称 System.IO.Ports 参考代码 using System; using System.IO.Ports; using System.Threading;namespace test {class Program{static void Main(){SerialPort port new SerialPort("COM1", 9600); // 配置串口port.Open();Timer timer new Timer((_) &…...

【工具使用】STM32CubeMX-FreeRTOS操作系统-信号标志、互斥锁、信号量篇
一、概述 无论是新手还是大佬,基于STM32单片机的开发,使用STM32CubeMX都是可以极大提升开发效率的,并且其界面化的开发,也大大降低了新手对STM32单片机的开发门槛。 本文主要讲述STM32芯片FreeRTOS信号标志、互斥锁和信号…...
[P2P]并发模式
设备可以同时作为 P2P Client 监听其他P2P请求,需要硬件和驱动支持。 //某些高级Wi-Fi芯片(如高通、博通)支持 Concurrent Mode(并发模式 GO 如果GO已经有一个client,大多数支持接受新的P2P Discovery。默认情况下会…...
Cloudflare 免费域名邮箱 支持 Catch-all 无限别名收件
本文首发于只抄博客,欢迎点击原文链接了解更多内容。 前言 与自建 Poste.io 还有 Serv00 邮局不同,Cloudflare 的域名邮箱并不需要 VPS,也没有复杂的配置。只要有一个托管在 Cloudflare 的域名就可以部署,像是常见的免费域名 eu.org 或者 dpdns.org 都是可以使用的。 需要…...

大数据Spark(六十一):Spark基于Standalone提交任务流程
文章目录 Spark基于Standalone提交任务流程 一、Standalone-Client模式 1、提交命令 2、任务执行流程 二、Standalone-Cluster模式 1、提交命令 2、任务执行流程 Spark基于Standalone提交任务流程 在Standalone模式下,Spark的任务提交根据Driver程序运行的位…...
学习记录:DAY32
Electron 开发之旅:从入门到实践 前言 接续上一篇 blog,这篇的内容主要和 Electron 有关。 课设不是特别想做下去了,实际核心代码大概只有 3,4 百行左右,比较水…… 或许会把 Docker 的部署也做一做(权当是…...
next,react封装axios,http请求
import axios from axios;//声明一个基础接口变量1 let base_url; //配置开发环境 if (process.env.NODE_ENV development) {base_url "http://127.0.0.1/"; } // 配置生产环境 if (process.env.NODE_ENV production) {base_url "http://127.0.0.1/"; …...
元图CAD:一键解锁PDF转CAD,OCR技术赋能高效转换
在建筑、工程与制造领域,图纸的精准性与高效协作是项目成功的关键。然而,传统PDF文件中的文字和图形往往难以直接编辑,手动输入不仅耗时易错,还可能因格式问题导致信息丢失。元图CAD凭借创新的OCR文字识别技术,重新定义…...

Android 平台RTSP/RTMP播放器SDK接入说明
一、技术背景 自2015年起,大牛直播SDK持续深耕音视频直播领域,自主研发并迭代推出跨平台 RTSP/RTMP 播放模块,具备如下核心优势: 全平台兼容:支持 Android/iOS/Windows/Linux 等主流系统; 超低延迟&#…...

Nodejs工程化实践:构建高性能前后端交互系统
一、工程架构设计 1.1 现代化项目初始化 采用多包管理架构: mkdir content-platform && cd content-platform npm init -y npx lerna init mkdir -p {packages/client,packages/server,packages/shared} 关键模块划分: client/: 基于Next.js…...

STM32什么是寄存器
提示:文章 文章目录 前言一、背景二、2.12.2 三、3.1 总结 前言 前期疑问: 1、什么是寄存器? 答:在4GB的地址空间中,512MB的block2上,每4个字节组成32位,这个32位为一个单元,控制&a…...
Linux 的 find 命令使用指南
精通 Linux 的 find 命令:终极使用指南 在 Linux 系统中,find 命令是文件搜索的瑞士军刀,它能基于多种条件在目录树中精准定位文件。无论你是系统管理员还是开发者,掌握 find 都能极大提升工作效率。本文将深入解析 find 的核心用法,并附赠实用示例! 一、基础语法结构 …...

第六个微信小程序:教师工具集
源于工作需要,下面开始。 安装及使用 | Taro 文档 vscode 代码管理 git 辅助 开发技术如上: 1.开始创建模板 taro4.1.1 $ taro init teachers-tools 2.用vsocde开始吧。 选择 第二个文件夹找一。 (base) PS D:\react\teachers-tools> pnpm…...