构建可审计的金融图表问答系统:多智能体架构与实现

📅 2026/8/18 23:12:14
构建可审计的金融图表问答系统:多智能体架构与实现
1. 项目概述与核心价值最近在金融科技和数据分析的圈子里一个词被反复提及可审计性。无论是应对越来越严格的监管要求还是内部风控和流程透明化的需要传统的“黑盒”式数据分析工具都显得力不从心。正是在这个背景下我注意到了“AgentFinVQA”这个项目。它不是一个简单的图表问答工具而是一个可部署的、基于多智能体架构的管道专门为金融图表问答设计并且将“可审计”作为其核心卖点。这让我非常兴奋因为它戳中了当前行业的一个核心痛点——我们不仅需要模型给出答案更需要知道这个答案是如何得出的每一步的依据是什么。简单来说AgentFinVQA试图解决这样一个问题当你面对一张复杂的股价K线图、一份布满柱状图和折线的财报可视化图表时你不仅可以用自然语言提问例如“过去三个月哪只股票涨幅最大”或“第二季度的净利润率是多少”系统能给出准确答案更重要的是它能完整地回溯并展示得出这个答案的整个推理链条。哪个智能体负责读取图表坐标哪个智能体负责从财报PDF中提取文本数据它们之间如何协作决策的依据是哪些具体的数据点所有这些过程都被清晰地记录和结构化形成一个可供人类审查或机器复核的“审计轨迹”。这个项目的价值远不止于提升问答的准确性。在金融这样高风险的领域一个错误的决策背后可能是巨大的损失。可审计的管道意味着责任可追溯、过程可复现、决策可解释。这对于合规部门、风控团队、甚至是对冲基金的量化分析师来说都是一个强有力的工具。它把原本隐藏在深度学习模型层层权重背后的“直觉”变成了一个白盒化的、步步为营的逻辑推导过程。接下来我将结合我对多智能体系统和金融数据分析的理解深入拆解AgentFinVQA这个管道的设计思路、核心实现以及在实际部署中会遇到的关键问题。2. 架构设计多智能体协作管道的精髓AgentFinVQA的核心创新在于其“多智能体管道”设计。这不同于单个大语言模型LLM处理所有任务的范式而是将复杂的金融图表问答任务分解为一系列子任务并由专门化的智能体Agent各司其职通过管道串联协作完成。这种设计理念深受当前热门的“LLM Agent”和“AI Agent”应用模式影响但针对金融领域的特殊需求进行了深度定制。2.1 为什么选择多智能体而非单体模型首先我们需要理解这个根本性的架构选择。一个强大的、经过微调的LLM比如GPT-4或Claude 3似乎也能完成图表理解和问答为什么还要大费周章地设计多智能体管道原因主要有三任务解耦与专业化金融图表问答是一个复合型任务。它至少涉及视觉感知从图表图像中提取结构化数据、文本理解解析图表标题、图例、坐标轴标签、领域知识推理应用金融概念如“移动平均线”、“市盈率”、“同比增速”以及自然语言生成组织答案。一个单体模型试图同时学好所有这些技能难度极大容易导致“知识混淆”和“灾难性遗忘”。而多智能体架构允许我们为每个子任务训练或调用最专业的模型。例如视觉感知可以交给一个在ChartQA、FigureQA等数据集上精调过的视觉语言模型VLM金融推理则可以交给一个在大量金融文本上训练过的LLM。可审计性的天然基础审计的核心是过程记录。在单体模型中输入图表问题和输出答案之间是一个难以穿透的复杂非线性变换。我们很难说清模型到底“看”到了图表的哪个部分又“想起”了哪条金融知识。而在多智能体管道中每个智能体都是一个功能明确的“处理单元”。它们之间的通信即中间结果可以被清晰地捕获和记录。例如智能体A的输出是“从图表中提取出的数据序列[日期: 2023Q1, 营收: 100M; 日期: 2023Q2, 营收: 120M]”这个结果作为智能体B的输入。整个决策链条一目了然为审计提供了结构化的日志。系统的可维护性与可扩展性金融领域的规则和数据格式在不断变化。采用管道化设计后如果需要提升图表解析的精度我们可以单独升级“视觉解析智能体”而无需重新训练整个系统。同样如果需要增加对新型金融衍生品图表如期权波动率曲面的支持我们可以插入一个新的、专门处理此类图表的智能体到管道中系统的其他部分基本不受影响。这种模块化是工程实践中的最佳选择。2.2 AgentFinVQA管道的关键组件与数据流基于公开资料和行业常见模式我们可以推断出AgentFinVQA管道至少包含以下几个核心智能体它们的工作流大致如下查询理解与任务规划智能体这是管道的“大脑”或“调度器”。它接收用户的自然语言查询例如“对比公司A和公司B在过去四个季度的毛利率趋势”。它的职责是进行意图识别和任务分解。它会分析出这个查询需要a) 识别出涉及的两个实体公司A和公司Bb) 理解关键指标毛利率c) 确定时间范围过去四个季度d) 明确任务类型趋势对比。然后它会生成一个结构化的“任务工单”分发给后续的智能体。这个智能体通常由一个具备强逻辑和规划能力的LLM驱动。视觉图表解析智能体这是管道的“眼睛”。它接收原始的金融图表图像PNG, JPEG等以及来自规划智能体的指令如“提取公司A的毛利率季度数据”。它不负责理解复杂的金融问题只专注于一个任务将图表中的视觉元素转化为机器可读的结构化数据。这通常涉及图表类型识别判断是折线图、柱状图、散点图还是混合图表。OCR与文本提取识别图表中的所有文字包括标题、坐标轴标签、图例、数据点标签并建立它们与视觉元素的关联。数据数字化将图形中的点、柱的位置映射回其代表的实际数值。例如确定Y轴上某个像素点对应的具体营收金额。输出一个结构化的JSON或字典包含数据序列、元数据单位、时间范围等。这个智能体很可能基于像Pix2Struct、Donut或经过微调的SAMOCR组合模型构建。外部知识检索与验证智能体金融图表往往不能提供全部上下文。一张显示股价暴涨的K线图其背后可能是公司发布了超预期的财报。这个智能体的职责就是充当“调查员”。根据当前查询和已解析的图表数据它主动去检索相关的、权威的外部信息进行补充或交叉验证。例如连接到财经数据库如Bloomberg Terminal、Wind、同花顺iFinD的API获取公司基本面数据。从公司官网或SEC/交易所公告中检索对应的财报PDF原文。抓取权威新闻源关于特定事件的报道。它的输出是经过筛选和摘录的补充文本证据用于支撑或修正仅从图表中得出的结论。金融领域推理与计算智能体这是管道的“分析师”。它接收来自解析智能体的结构化数据、来自检索智能体的补充证据以及原始的查询意图。它的核心工作是进行专业的金融计算和逻辑推理。例如计算增长率、比率、波动率等衍生指标。应用技术分析公式如RSI、MACD。基于会计原则进行财务数据校验如检查资产负债表是否平衡。进行趋势判断、异常检测和对比分析。这个智能体需要一个在金融语料上深度训练或具有强工具调用能力的LLM并且可能内嵌一个符号计算引擎来处理确定性公式。答案合成与审计日志生成智能体这是管道的“报告撰写员”兼“档案管理员”。它汇总所有上游智能体的输出——原始查询、解析出的数据、检索到的证据、推理的中间步骤。它的任务有两个生成最终答案以清晰、准确、符合金融报告规范的自然语言组织答案并可能引用具体的数据来源“如图表所示2023Q4营收为150M根据公司年报附录X确认...”。生成结构化审计日志创建一个包含完整时间戳、每个智能体输入输出、所用模型版本、数据来源引用、置信度分数等信息的标准化日志如JSON-LD格式。这份日志是系统可审计性的核心载体可以存储到数据库或区块链中供日后查询。整个数据流是管道式的、顺序或部分并行的。一个典型的执行序列可能是用户查询-规划智能体- 并行视觉解析智能体知识检索智能体-金融推理智能体-答案合成智能体-返回答案与审计日志。3. 实现“可审计性”的关键技术细节“可审计”是AgentFinVQA区别于其他图表QA系统的核心特征。这三个字背后是一系列严谨的工程设计和数据治理实践。它不仅仅是在日志里多打几行字那么简单。3.1 审计日志的标准化与结构化审计日志必须超越简单的文本记录达到机器可读、可查询、可验证的水平。AgentFinVQA的审计日志很可能采用一种分层的结构化格式会话层记录本次问答会话的唯一ID、时间戳、用户ID匿名化处理、原始查询。管道执行层记录整个管道的执行流程图。每个智能体作为一个节点记录其激活时间/耗时。输入快照触发该智能体运行的输入数据可能是上游智能体的输出经过脱敏处理。配置快照该智能体运行时使用的模型版本、参数配置、提示词模板Prompt Template的哈希值。输出快照该智能体的完整输出。置信度与元数据智能体自身对其输出的置信度评分、调用的外部API列表及响应状态码。数据溯源层这是金融审计的重中之重。每一个出现在最终答案中的数据点都必须能追溯到其源头。系统需要实现类似“数据血缘”的机制。例如答案中的“净利润增长25%”这个结论其溯源链可能是最终答案“增长25%”-源于推理智能体的计算输出“本期净利润 - 上期净利润/ 上期净利润 0.25”-源于解析智能体提取的数值“本期净利润: 100M, 上期净利润: 80M”-源于图表图像中特定坐标位置的像素源于OCR识别的坐标轴刻度“单位百万美元”。 这个链条需要被完整地编码在日志中通常用RDF三元组或专用的溯源标记语言来实现。决策依据层记录推理过程中被考虑和排除的关键证据。例如推理智能体为什么认为某次股价上涨是“财报驱动”而非“市场大盘带动”因为它检索到了财报发布日期与上涨时间点吻合的新闻并且排除了同期大盘指数也大幅上涨的可能性。这些“为什么选A而不选B”的决策逻辑是审计人员最关心的部分。3.2 实现可靠溯源的挑战与方案实现上述级别的溯源在技术上挑战巨大。主要难点在于智能体间传递的数据可能是非结构化的自然语言难以自动建立精确的映射关系。解决方案一强制结构化中间表示。要求管道中所有智能体的输入输出在可能的情况下都采用高度结构化的格式如JSON Schema。例如解析智能体输出的不是“公司A营收上升”而是{metric: revenue, entity: Company A, period: 2023-Q4, value: 150, unit: M USD, trend: increase}。这样下游智能体引用时可以直接通过键值对进行关联溯源就变成了对结构化字段的引用追踪。解决方案二引入全局数据ID与版本控制。为每一份输入的原始数据如图片、PDF文档生成唯一哈希ID。任何从该数据衍生出的信息都携带这个源ID。当智能体处理数据时就像程序员提交代码一样需要“提交”一个带有父版本ID的新版本。这样整个处理历史就构成一个版本树清晰可控。解决方案三利用LLM自身进行溯源标注。在合成答案的最后一步要求答案合成智能体不仅生成答案还要以特定格式如Markdown脚注或XML标签显式标注答案中每个关键论断的来源指向上游智能体输出中的特定片段。虽然这依赖于模型的自觉性但通过精心设计的提示词和强化学习可以达到很高的准确率。实操心得审计日志的设计前置在开发这类系统的初期最容易犯的错误是把审计日志当作事后补充的功能。我们的经验是必须在设计每个智能体的接口时就把“需要记录什么以供审计”作为首要考虑因素。例如在定义视觉解析智能体的API时除了extracted_data字段必须强制包含raw_image_hash、ocr_raw_text、confidence_per_element等字段。否则等到管道都跑通了再回头加会发现很多中间状态已经丢失无法重建完整的审计链条导致“可审计性”大打折扣。4. 核心环节实现以视觉图表解析为例让我们深入管道中最具挑战性的环节之一——视觉图表解析智能体的实现细节。金融图表种类繁多从简单的线柱图到复杂的烛台K线图、期权链矩阵其解析精度直接决定了整个系统答案的上限。4.1 技术选型专用模型 vs. 通用VLM目前主要有两条技术路径路径A基于专用图表解析模型。例如使用Pix2Struct这是一个谷歌提出的基于Transformer的模型擅长将屏幕截图或文档图像转换为结构化标记Structured Tokens特别适用于图表、表格的解析。我们可以使用ChartQA、FigureQA等金融图表数据集对其进行进一步微调。它的优势是针对性强在坐标轴识别、数据点定位等任务上精度可能更高。缺点是泛化能力相对较弱面对训练集中未出现过的、风格迥异的图表如某券商软件自定义的图表样式时性能可能下降。路径B基于强大通用VLM后处理。直接使用GPT-4V、Claude 3 Opus或开源的LLaVA-NeXT等视觉语言模型。通过设计详细的提示词让模型描述图表内容然后使用一个规则引擎或一个小型语言模型来从描述文本中解析出结构化数据。例如提示词可能是“你是一个金融数据分析专家。请严格按以下JSON格式描述该图表1. 识别图表类型。2. 列出所有数据序列每个序列包含名称和一系列{x: value, y: value}数据点。3. 提取坐标轴的单位和量程...” 这种方法的优势是充分利用了顶级大模型强大的零样本Zero-shot理解和指令跟随能力对新颖图表的适应性强。缺点是成本高、速度慢且输出不稳定需要复杂的后处理来保证结构化数据的准确性。在实际的AgentFinVQA系统中可能会采用混合策略对于常见的标准图表类型如来自Bloomberg、Reuters的标准报表图表使用轻量级、高精度的专用微调模型路径A以保证效率和准确性对于未知来源或样式特殊的图表则降级到使用通用VLM路径B进行处理并通过审计日志明确标注本次解析使用了“通用降级模式”。4.2 从像素到数据的精确映射无论采用哪种模型将图表图像中的视觉元素精确转换为数值都是一个关键步骤。这不仅仅是OCR识别出“100”这个文本更重要的是知道这个“100”对应的是哪个数据点。实现步骤通常包括图表区域分割与元素检测使用目标检测模型如YOLO或传统图像处理技术轮廓检测识别出图表的绘图区Plot Area、坐标轴、图例、标题等区域。坐标轴校准与刻度识别在绘图区内定位X轴和Y轴的实际像素范围。通过OCR识别出坐标轴上的刻度标签如“0, 20, 40, 60”和“Q1, Q2, Q3, Q4”。建立“像素坐标”到“数据坐标”的线性或对数映射函数。例如Y轴像素位置y_pixel 300对应数据值0y_pixel 100对应数据值60那么映射函数就是data_value 60 - (y_pixel - 100) * (60 / 200)。数据点提取对于折线图在绘图区内检测线条上的关键点如峰值、谷值、交点的像素坐标。对于柱状图检测每个柱子的顶部中心点的像素坐标。对于散点图直接检测每个散点的中心像素坐标。将上述像素坐标通过步骤2建立的映射函数转换为实际的数据值(x_value, y_value)。数据关联将提取出的数据点与图例中的序列名称进行关联。这通常需要结合OCR识别的图例文本和检测出的颜色/形状信息。注意事项非均匀刻度与双坐标轴金融图表中经常出现对数坐标轴或双Y轴例如左边是股价右边是成交量。处理这类图表时简单的线性映射会完全失效。必须在步骤2中识别出坐标轴类型linear或log并对映射函数进行相应调整。对于双坐标轴需要分别为左右两套坐标系建立映射并将数据点正确归类到对应的坐标轴上。这是评估一个图表解析智能体是否专业的关键点。4.3 处理金融图表的特殊挑战金融图表有其独特性解析智能体必须专门处理烛台图需要同时提取每个时间单位的开盘价、收盘价、最高价、最低价四个值。这要求模型能精确识别“烛身”的上下沿和“影线”的尖端。堆积面积/柱状图需要解析各组成部分的绝对值和相对比例。例如一张展示营收构成的堆积柱状图需要能分离出“产品收入”、“服务收入”等各部分的数值。带标记的事件图图表上可能用箭头、虚线标记了“财报发布”、“并购公告”等事件。解析智能体需要将这些事件标记作为元数据提取出来传递给下游的推理智能体这对因果分析至关重要。动态交互图表的静态截图很多图表来自交互式财经网站截图可能包含悬浮提示框Tooltip。解析时需要区分哪些是图表固有信息哪些是临时性的悬浮信息避免将悬浮框里的文字误当作坐标轴标签。5. 部署考量与性能优化一个设计精良的管道如果无法高效、稳定地部署就只是空中楼阁。AgentFinVQA强调“可部署”意味着它在架构设计之初就考虑了工程化落地的需求。5.1 管道编排与执行引擎多个智能体如何协同工作这里涉及到工作流编排。有几种主流选择基于有向无环图的框架如Apache Airflow或Prefect。将每个智能体定义为一个任务Operator任务之间的依赖关系构成DAG。优势是调度功能强大、有重试机制、监控界面完善非常适合定时批处理任务。但对于需要低延迟响应的实时问答场景Airflow的调度开销可能过大。基于微服务与消息队列将每个智能体部署为独立的微服务通过消息队列如RabbitMQ、Kafka或Redis Streams进行异步通信。规划智能体作为“生产者”发布任务消息后续智能体作为“消费者”订阅并处理。这种架构松耦合、扩展性强适合高并发场景。但需要自己处理错误恢复、消息顺序和状态管理复杂度较高。专门的Agent编排框架如LangGraph、AutoGen、CrewAI。这些框架专为LLM智能体设计提供了直观的方式来定义智能体、工具和它们之间的交互流程如循环、条件分支。它们通常内置了状态管理、记忆和对话历史功能与LLM生态结合紧密是快速构建原型和中等规模系统的理想选择。AgentFinVQA很可能采用此类框架作为核心编排层。在AgentFinVQA的上下文中一个混合架构可能是最优解使用LangGraph等框架定义智能体的核心逻辑和交互流程而将计算密集型的智能体如图像解析部署为独立的GPU微服务通过RPC或消息队列与编排层通信。这样既保证了开发的敏捷性又满足了性能需求。5.2 延迟与性能优化策略多智能体管道的一个主要缺点是累积延迟。串行执行N个智能体总延迟是各智能体延迟之和。对于实时问答这是不可接受的。优化策略包括有向无环图优化分析任务依赖关系将可以并行的任务并行化。例如“视觉解析”和“外部知识检索”通常没有依赖关系可以同时启动。智能体缓存对于常见查询和标准图表缓存中间结果。例如如果同一张公司财报图表被多次查询其解析后的结构化数据可以直接从缓存中读取无需再次运行耗时的视觉解析模型。缓存需要设计合理的失效策略如基于原始数据哈希。模型蒸馏与轻量化对关键路径上的模型如金融推理LLM进行蒸馏在保持性能的同时减小模型尺寸提升推理速度。或者准备一个“快速通道”对于简单查询如“这张图表的标题是什么”直接由轻量级模型或规则处理绕过复杂的多智能体管道。流式处理与渐进式输出对于复杂查询不必等所有环节完成再返回答案。可以让答案合成智能体先返回一个初步框架如“正在分析您关于公司毛利率对比的查询已检索到相关财报图表...”然后随着各智能体完成工作逐步更新和丰富答案。这从用户体验上减少了等待感。5.3 容错与降级机制在复杂的管道中任何一个智能体失败都可能导致整个查询失败。系统必须具备鲁棒性。重试与超时为每个智能体调用设置合理的超时时间。对于因网络抖动或临时过载导致的失败进行有限次数的重试。降级策略组件降级如果高精度的视觉解析模型服务不可用自动降级到使用基于规则或通用VLM的备用解析器并在审计日志中明确记录此次降级。功能降级如果外部知识检索API失败系统可以基于已有图表数据继续推理但在答案中注明“以下分析仅基于图表数据未包含最新市场信息”。优雅失败当所有降级策略都失效时向用户返回一个有意义的错误信息并提供一个简化的问题路径例如“当前无法进行复杂趋势分析但您可以尝试询问图表中的具体数值”而不是一个通用的“系统错误”。监控与告警对每个智能体的成功率、延迟、资源使用率进行全方位监控。当某个组件的错误率或延迟超过阈值时及时触发告警以便运维人员介入。6. 常见问题与实战排查指南在实际部署和运行AgentFinVQA这类系统时会遇到各种各样的问题。以下是一些典型问题及其排查思路这些经验大多来自实际项目中的教训。6.1 答案不准确或荒谬这是最常见的问题根源可能出现在管道的任何环节。问题现象可能原因排查步骤与解决方案答案与图表数据明显不符视觉解析智能体出错。1.检查审计日志查看解析智能体的原始输出核对提取的数据是否与图表一致。2.验证坐标映射针对出错的数据点手动计算其像素坐标到数据值的映射检查映射函数是否正确特别是坐标轴类型线性/对数是否识别错误。3.OCR错误检查OCR提取的坐标轴刻度和单位是否正确。常见错误是“百万(M)”被识别为“十亿(B)”。答案忽略了关键上下文外部知识检索智能体未生效或检索结果不相关。1.检查检索查询查看规划智能体发给检索智能体的查询关键词是否准确。有时意图理解会出现偏差。2.检查API状态确认外部财经数据API的调用是否成功配额是否用尽。3.评估检索结果查看检索到的文档摘要判断其是否与当前问题强相关。可能需要优化检索的排序算法或引入重排序模型。金融计算逻辑错误金融推理智能体应用了错误公式或概念。1.复核推理步骤在审计日志中查看推理智能体的中间计算过程。例如计算毛利率时是否错误地使用了“营收/毛利润”。2.检查提示词审查驱动金融推理智能体的提示词Prompt是否明确定义了关键金融术语和计算公式。提示词中的细微歧义都可能导致错误。3.引入计算校验对于确定性计算如增长率、比率可以在管道末端增加一个简单的符号计算校验模块用Python的eval或numexpr快速验证结果是否在合理范围内。答案含糊其辞或“幻觉”答案合成智能体过度依赖LLM的生成能力脱离了上游提供的证据。1.强制引用修改答案合成智能体的提示词严格要求其答案中的每一个关键论断都必须引用上游输出的具体字段如根据解析数据中的‘revenue_q4: 150M’。2.证据加权让合成智能体对支持答案的证据进行置信度加权对于低置信度或冲突的证据在答案中明确说明“存在不确定性”。3.设置“我不知道”的边界当上游证据不足或矛盾时允许系统回答“根据现有信息无法确定”而不是强行生成一个可能错误的答案。6.2 系统延迟过高用户无法忍受长达数十秒的等待。瓶颈定位利用审计日志中的时间戳精确计算每个智能体的处理耗时。延迟瓶颈通常出现在1) 大模型推理视觉解析、LLM推理2) 外部API调用知识检索3) 复杂计算。优化措施模型层面对延迟高的模型进行量化、编译优化如使用NVIDIA TensorRT、ONNX Runtime或升级硬件。缓存层面扩大缓存范围不仅缓存最终答案也缓存常见的中间结果如标准图表的解析结果、热门公司的基本面数据。管道层面重新评估任务依赖图寻找更多可以并行化的环节。例如在解析图表的同时是否可以并行启动对相关公司名称的实体链接和知识检索配置层面对于非关键任务降低模型推理的配置如使用更小的模型、更低的采样温度temperature。6.3 审计日志不完整或难以查询失去了“可审计”的核心价值。问题日志缺少关键信息如模型版本、输入数据的哈希值日志格式不统一难以用工具分析。解决方案定义强制日志模式为每个智能体定义一个必须输出的日志字段模板在代码层面进行强制校验。使用结构化日志系统采用如ELKElasticsearch, Logstash, Kibana或Loki堆栈将结构化的审计日志直接摄入便于进行聚合、筛选和可视化分析。建立数据血缘图谱将每次查询的审计日志通过溯源ID关联起来构建一个图形化界面可以直观地展示“数据从哪里来经过了哪些处理”。6.4 处理边缘案例和对抗性输入用户可能会上传模糊的图表、带有水印的截图或者提出非常规问题。模糊或低质量图表在视觉解析前增加一个预处理步骤评估图像质量清晰度、对比度。如果质量过低直接拒绝并提示用户上传更清晰的图片而不是给出一个不可靠的解析结果。图表中包含主观标注用户可能在图表上手动画了箭头或写了注释。解析智能体需要区分哪些是原图内容哪些是用户添加的标注。这通常需要结合图像分割技术和上下文判断难度很高。一种务实的做法是在审计日志中标记“检测到用户手动标注可能影响原始数据”并在答案中提示这一点。复杂嵌套或多图表问题用户提问“比较这两张图表中A公司和B公司的现金流状况”。这需要规划智能体能够识别输入中包含多个图像并分别解析后再进行对比分析。这要求管道支持多模态输入的分拆与关联。开发AgentFinVQA这样的系统是一个持续迭代和优化的过程。它不仅仅是一个技术产品更是一个需要与领域专家金融分析师、审计员紧密协作的领域工程。每一次故障和误差都是优化智能体能力、完善审计链条的宝贵机会。最终的目标是让机器不仅能够“看到”图表更能像一位严谨、专业、可追溯的金融分析师一样“理解”和“分析”图表并将其思考过程透明地呈现给人。这条路很长但AgentFinVQA无疑指出了一个非常值得探索的方向。