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標籤頁中搜尋股票程式碼或上傳檔案,開始提問。