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標籤頁中搜索股票代碼或上傳文件,開始提問。