AI News HubLIVE
站内改写3 分钟阅读

如何使用LiteParse构建财务尽职调查代理

本文介绍了一个利用LiteParse构建的AI代理演示应用,该代理能够处理SEC文件、跨文件搜索并回答带有精确引用的问题。文章详细讲解了项目架构,包括PDF解析、文档存储、工具定义、聊天端点和引用系统,并说明了如何集成SEC EDGAR获取文件。整个项目约600行库代码,无需向量数据库或外部基础设施。

财务尽职调查是金融领域中文档最密集的工作流程之一。分析师通常花费高达70%的时间进行手动数据提取,包括将PDF转录到电子表格、映射总账科目以及核对试算平衡表。一笔交易可能涉及数百页SEC文件,每个数字都需要来源。

本文介绍了一个演示应用,它解决了这个问题:一个AI代理能够接收SEC文件,跨文件搜索,并以精确的引用回答问题,这些引用会在原始PDF页面上高亮显示来源文本。关键组件是LiteParse,它能够从PDF中提取文本以及边界框坐标。利用这些数据,该应用能够直观地高亮显示数字来源,增加了代理回答的可信度和透明度。

架构

该应用是一个Next.js项目,包含三个层次:一个Next.js聊天UI和PDF引用查看器;用于聊天、文档摄取、SEC EDGAR集成和引用解析的API路由;以及一个核心库,包含三个文件/职责:PDF解析(ingest.ts)、带搜索功能的文档存储(store.ts)以及代理工具定义(tools.ts)。整个库代码约600行。值得注意的是,项目避免了使用向量数据库、嵌入管道或除LLM API密钥之外的任何外部基础设施。这种简洁性使得项目易于理解和扩展,同时展示了LiteParse的核心用法。

步骤1:使用LiteParse解析PDF

使用LiteParse进行摄取非常简单。输入PDF文件路径(或文件缓冲区),它会返回结构化数据:所有文本以及每段文本的边界框坐标(x、y、width、height)、字体名称和字体大小。典型的10-K文件(70-100多页)解析只需几秒钟。

步骤2:简单的文档存储

解析后的文档以平面JSON文件存储。搜索功能采用关键词匹配而非向量相似度:将查询拆分为术语,并根据每个页面包含的术语数量进行评分。还有正则表达式模式,用于更精确的模式匹配(例如,查找美元金额)。作者指出,通常应用中的文档工作集很小(1-100份文件),并且暴露给代理的工具足以找到相关信息,无需语义搜索。此外,10-K等文件在LLM训练数据中很常见,可以利用现有知识。

步骤3:为代理提供工具

通过Vercel AI SDK,代理获得三个工具:list_document(列出文档)、search_documents(带查询、文件通配符、最大结果数和是否使用正则表达式的搜索)和get_page(按文件名和页码返回页面文本)。search_documents中的file_glob参数允许代理将搜索范围限定到特定文档(例如*2024*),这在加载多个文件并需要跨期间比较时非常有用。

步骤4:聊天端点

聊天端点使用Vercel AI SDK的streamText与工具调用。系统提示告诉模型已加载哪些文档以及如何使用引用。提示强调引用必须从文档中完全复制文本,因为引用系统需要找到确切的字符串来计算高亮位置。如果LLM改写或重新格式化数字,匹配将失败。

步骤5:引用系统

当UI遇到<citation>标签时,它会解析标签以提取文件名、页码和引用的短语;调用/api/cite,该接口使用findTextLocation()在页面上定位短语;通过将匹配字符映射回原始文本项及其坐标来计算边界框;使用LiteParse的screenshot()方法渲染PDF页面并绘制高亮叠加。匹配算法采用分层策略,因为LLM并不总是完美的逐字输出,并且金融文档中存在一些边缘情况。如果找到匹配项,边界框会根据重叠文本项按比例计算。当引用无法验证时,UI会显示黄色“未验证”徽章,而不是隐藏它。

步骤6:SEC EDGAR集成

为了使演示自包含,项目添加了直接的SEC EDGAR集成。用户输入股票代码,应用通过SEC的公司文件解析为CIK编号,从EDGAR提交API获取近期文件,用户选择要下载的文件,然后下载、用LiteParse解析并添加到存储中。EDGAR API返回HTML和PDF的混合文件,但应用会使用Puppeteer将HTML转换为PDF,因此相同的提取管道适用于任何原始格式。

演示的限制与扩展

这是一个演示,而不是生产系统。但要部署到生产环境,只需替换磁盘存储为S3或类似对象存储,将平面JSON文件存储替换为带有索引搜索的数据库,并添加用户认证和访问控制。这些都是在已有核心功能基础上的工程细节。

完整源代码在GitHub上。需要Node.js 18+和Anthropic API密钥。克隆仓库后,运行npm install,在.env中添加API密钥,然后npm run dev即可在localhost:3000启动。在EDGAR标签页中搜索股票代码或上传文件,开始提问。