偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

基于JoyAgent的二開工程實踐(信貸盡調(diào)報告生成)

人工智能
JoyAgent 的 Github 官方自述、二開案例背景說明說明、項目架構(gòu)拆解、最小化侵入式擴(kuò)展策略的具體實現(xiàn),以及工程經(jīng)驗總結(jié)和架構(gòu)演進(jìn)思考。

很久沒更新,書稿終于寫完了,后續(xù)恢復(fù)每周一到兩更。

這篇來繼續(xù)聊聊 Agent,這個現(xiàn)在有些爛大街的概念。我在歷史文章中提到 Agent 的案例演示時,大多是圍繞 Dify,介紹了些諸如設(shè)備預(yù)測性運(yùn)維、多源異構(gòu)數(shù)據(jù)分析等使用場景。其中也搭配著提到了如何按照 OpenAI 的通用規(guī)范編寫自定義工具的示例。不過,Dify 的 Agent 主要是單個 Agent 進(jìn)行任務(wù)規(guī)劃和工具調(diào)用,屬于相對簡單的 ReAct 模式,更適合中小型應(yīng)用和快速原型開發(fā)。

而對于復(fù)雜場景的任務(wù),就少不了通過 Multi-Agent 方式來實現(xiàn)。這篇先來介紹下京東兩個月前開源的 JoyAgent,一款號稱業(yè)界首個開源高完成度輕量化通用多智能體產(chǎn)品。下篇再來介紹下如何使用 Langgraph 來實現(xiàn)類似復(fù)雜 Agent 的案例。

這篇試圖說清楚:

JoyAgent 的 Github 官方自述、二開案例背景說明說明、項目架構(gòu)拆解、最小化侵入式擴(kuò)展策略的具體實現(xiàn),以及工程經(jīng)驗總結(jié)和架構(gòu)演進(jìn)思考。

以下,enjoy:

1、Github 官方自述

項目的 github 地址如下:https://github.com/jd-opensource/joyagent-jdgenie?tab=readme-ov-file,開源兩個月左右時間已經(jīng)有了 8.9K stars, 應(yīng)該說還是挺受歡迎的。原始的 readme.md 有點(diǎn)長,我簡要梳理了一下四個要點(diǎn)供快速預(yù)覽。

圖片

1.1端到端完整 Multi-Agent 產(chǎn)品

不同于市面上的 SDK 或框架類產(chǎn)品,JoyAgent-JDGenie 是端到端的多 Agent 產(chǎn)品,對于輸入的 query 或任務(wù)可以直接回答或解決,例如用戶詢問"給我做一個最近美元和黃金的走勢分析",系統(tǒng)可以直接生成網(wǎng)頁版或 PPT 版的完整報告文檔。

1.2GAIA 打榜成績不錯

在權(quán)威 GAIA 榜單上表現(xiàn)優(yōu)異,Validation 集準(zhǔn)確率達(dá)到 75.15%,Test 集達(dá)到 65.12%,成功超越 OWL(CAMEL)、Smolagent(Huggingface)、LRC-Huawei、xManus(OpenManus)、AutoAgent(香港大學(xué))等行業(yè)知名產(chǎn)品。

圖片

1.3無平臺依賴限制

相對輕量化的架構(gòu)設(shè)計,不像阿里的 SpringAI-Alibaba 需要依賴阿里云百煉平臺,或 Coze 依賴火山引擎平臺。用戶可以獨(dú)立部署和使用,避免了云平臺綁定的限制,提供更大的部署靈活性。

1.4全棧產(chǎn)品級解決方案

整體開源了智能體產(chǎn)品的前端、后端、框架、引擎、核心子智能體(報告生成、代碼智能體、PPT 智能體、文件智能體等),是真正的產(chǎn)品級完整解決方案,而非僅提供 SDK、框架或協(xié)議層面的開源。

圖片

2、二開案例背景說明

正式開始介紹架構(gòu)前,簡要說明下選擇的這個信貸盡調(diào)報告生成場景一些核心環(huán)節(jié)和技術(shù)挑戰(zhàn),不熟悉這類業(yè)務(wù)的盆友可以但當(dāng)涉獵下。

在當(dāng)前息差收窄、監(jiān)管趨嚴(yán)的市場環(huán)境下,部分金融機(jī)構(gòu)開始嘗試通過開發(fā)一些大模型應(yīng)用來提升線下貸款盡職調(diào)查的效率和質(zhì)量。然而,技術(shù)路徑的選擇卻面臨糾結(jié)。首當(dāng)其沖的工作流方案雖能能夠通過復(fù)雜的編排來實現(xiàn)流程自動化,但固定設(shè)計很難應(yīng)對企業(yè)類型的多樣性。當(dāng)然可以也可以采用”高耦合、低內(nèi)聚“的思路,盡可能模塊化一個不同企業(yè)或者行業(yè)類型的盡調(diào)報告生成模板配置。但無法解決的是,如何在循規(guī)蹈矩的分析中如果發(fā)現(xiàn)了異常指標(biāo)進(jìn)行自主的 deep resarch, 這本也是一份報告中比較重要的部分。

反之,如果選擇 Agent 的路線,也面臨手搓和開源框架二開的兩種選擇。純原生 Agent 開發(fā),例如 Langraph,提供了高度靈活性,但技術(shù)門檻略高,需要熟悉大模型調(diào)用、工具管理、狀態(tài)處理等復(fù)雜工程經(jīng)驗才能實現(xiàn)理想的業(yè)務(wù)效果。如果團(tuán)隊有相關(guān)的積累,這種方式借助類似 Claude Code 等工具的幫助,倒也是不會很費(fèi)力,只是從架構(gòu)設(shè)計上來說,不見得是最佳實踐。還剩一種就是這篇要提到的通用 Agent 框架的二開做法。接下來,通過對JoyAgent具體的技術(shù)架構(gòu)分析,展示如何在保持框架通用性的前提下,快速實現(xiàn)專業(yè)領(lǐng)域的深度定制。

3、多層分離架構(gòu)的設(shè)計

下面直接結(jié)合演示案例,展示下原始框架的三層架構(gòu)是如何設(shè)計的、每一層承擔(dān)什么職責(zé)、以及如何在不破壞原有架構(gòu)的前提下,通過封裝“信貸專用工具集”,并增加一層“Python 工具服務(wù)層”來快速擴(kuò)展專業(yè)功能。

官方架構(gòu)圖技術(shù)細(xì)節(jié)太多,層次關(guān)系模糊,我手動繪制了下面這個簡化版的分層圖示,保留核心的技術(shù)棧,關(guān)鍵組件名稱和接口標(biāo)準(zhǔn)。

圖片

通過前端界面層、后端服務(wù)層、工具調(diào)用層和 Python 工具服務(wù)層的分層協(xié)作,實現(xiàn)了從用戶交互到專業(yè)分析的完整技術(shù)鏈路。整個系統(tǒng)采用四層技術(shù)架構(gòu),每一層都有獨(dú)立的技術(shù)棧和功能邊界,通過標(biāo)準(zhǔn)化的接口實現(xiàn)層間通信,既保持了框架的通用性和穩(wěn)定性,又為信貸領(lǐng)域的專業(yè)化擴(kuò)展提供了清晰的技術(shù)邊界和擴(kuò)展機(jī)制。(紅色部分為二開中新增)

3.1解析 JoyAgent 二開后的四層技術(shù)架構(gòu)

JoyAgent-JDGenie 采用經(jīng)典的分層架構(gòu)模式,將復(fù)雜的多Agent 系統(tǒng)分解為以下四個職責(zé)明確的技術(shù)層次。

前端界面層

采用 React + Ant Design + TypeScript 技術(shù)棧構(gòu)建用戶交互界面。React 是 Meta 開源的 JavaScript 庫,通過組件化開發(fā)模式和高效的頁面更新機(jī)制提供流暢的用戶體驗。Ant Design 是企業(yè)級 UI 組件庫,提供豐富的交互組件和統(tǒng)一的視覺規(guī)范,特別適合構(gòu)建數(shù)據(jù)密集型的企業(yè)應(yīng)用。TypeScript 通過靜態(tài)類型檢查提升代碼的可靠性和可維護(hù)性。

后端服務(wù)層

基于 Spring Boot 3.2.2 + Java 17 構(gòu)建,包含完整的 Agent 執(zhí)行框架。系統(tǒng)設(shè)計了多種專門化的 Agent 類型:

  • BaseAgent 定義基礎(chǔ)屬性和行為規(guī)范;
  • ReActAgent 實現(xiàn)“推理-行動-觀察”的循環(huán)執(zhí)行模式;
  • PlanningAgent 專注于任務(wù)分解和執(zhí)行計劃制定;
  • ExecutorAgent 負(fù)責(zé)具體工具調(diào)用和結(jié)果收集;
  • SummaryAgent 專門負(fù)責(zé)多源信息整合和專業(yè)報告生成;
  • AgentContext 負(fù)責(zé)上下文管理,狀態(tài)管理機(jī)制控制 Agent 生命周期;
  • SSE(Server-Sent Events)技術(shù)實現(xiàn)服務(wù)器向客戶端的實時數(shù)據(jù)推送。

工具調(diào)用層

通過統(tǒng)一的 BaseTool 工具接口規(guī)范和集中的 ToolCollection 工具管理機(jī)制,支持多種類型工具的調(diào)用。包含三類工具:

  • 內(nèi)置工具負(fù)責(zé)文件處理(FileTool)、代碼解釋執(zhí)行(CodeInterpreter)、深度搜索(DeepSearch)、報告生成(ReportTool)等基礎(chǔ)功能;
  • 信貸專用工具集包括企業(yè)信息查詢(CompanyInfo)、財務(wù)數(shù)據(jù)分析(Financial)、年報智能問答(AnnualRAG)、可視化圖表生成(Visualization)等專業(yè)功能;
  • MCP 工具協(xié)議支持外部服務(wù)的動態(tài)工具加載。

Python 工具服務(wù)層

基于 FastAPI 框架構(gòu)建,提供底層的數(shù)據(jù)處理和分析能力。FastAPI 是現(xiàn)代高性能的 Python Web 框架,支持異步處理和自動 API 文檔生成。該層集成數(shù)據(jù)處理引擎和 RAG 檢索引擎,前者負(fù)責(zé)結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)的解析分析,后者通過向量檢索和語義匹配技術(shù)實現(xiàn)年報文檔的智能問答功能。

3.2設(shè)計最小化侵入的工具擴(kuò)展機(jī)制

最小化侵入的理念是在不修改框架內(nèi)部結(jié)構(gòu)的前提下,通過標(biāo)準(zhǔn)化的擴(kuò)展機(jī)制實現(xiàn)專業(yè)化功能。這種設(shè)計策略既保持了原有系統(tǒng)的穩(wěn)定性,又為業(yè)務(wù)需求的快速響應(yīng)提供了技術(shù)保障。

統(tǒng)一的工具接口規(guī)范

系統(tǒng)通過標(biāo)準(zhǔn)接口定義了四個關(guān)鍵方法實現(xiàn)工具的標(biāo)準(zhǔn)化封裝。getName()返回工具的唯一標(biāo)識符,用于工具的注冊和調(diào)用;getDescription()提供工具功能的自然語言描述,供大模型進(jìn)行工具選擇時參考;toParams()定義工具的輸入?yún)?shù)結(jié)構(gòu),采用JSON Schema 格式確保參數(shù)的標(biāo)準(zhǔn)化;execute()實現(xiàn)工具的業(yè)務(wù)邏輯,接收標(biāo)準(zhǔn)化的輸入?yún)?shù)并返回處理結(jié)果。

分層的工具架構(gòu)設(shè)計

采用“API 調(diào)用+專業(yè)格式化+文件存儲”的三層設(shè)計,實現(xiàn)技術(shù)實現(xiàn)與業(yè)務(wù)邏輯的分離。API 調(diào)用層負(fù)責(zé)與外部服務(wù)的 HTTP 通信,處理請求構(gòu)建、響應(yīng)解析、異常處理等技術(shù)細(xì)節(jié);專業(yè)格式化層將外部 API 返回的原始數(shù)據(jù)轉(zhuǎn)換為符合信貸業(yè)務(wù)規(guī)范的標(biāo)準(zhǔn)格式;文件存儲層提供可選的數(shù)據(jù)持久化功能,支持分析結(jié)果的本地緩存和歷史查詢。

動態(tài)的工具注冊機(jī)制

通過集中的工具管理實現(xiàn)工具的動態(tài)加載和統(tǒng)一調(diào)度。系統(tǒng)通過工具映射表維護(hù)所有可用工具的索引,支持工具的運(yùn)行時注冊和查詢。當(dāng) Agent 需要調(diào)用特定工具時,工具管理器根據(jù)工具名稱快速定位對應(yīng)的工具實例,并通過統(tǒng)一的執(zhí)行接口完成調(diào)用,為工具的動態(tài)添加和版本升級提供了技術(shù)支持。

靈活的配置管理策略

通過統(tǒng)一的配置類(集中管理配置參數(shù)的 Java 類)和環(huán)境變量支持,實現(xiàn)不同部署環(huán)境下的靈活適配。配置類集中管理所有外部 API 的連接參數(shù),包括服務(wù)地址、認(rèn)證信息、超時設(shè)置等關(guān)鍵配置,采用環(huán)境變量優(yōu)先的策略,允許在不修改代碼的情況下適應(yīng)開發(fā)、測試、生產(chǎn)等不同環(huán)境的部署需求。

3.3構(gòu)建信貸專用工具與外部服務(wù)集成

信貸專用工具集通過四個專業(yè)化工具的協(xié)同工作,實現(xiàn)了從基礎(chǔ)信息查詢到深度分析報告的完整業(yè)務(wù)覆蓋。這四個專業(yè)化工具都針對信貸盡調(diào)的特定環(huán)節(jié)進(jìn)行了優(yōu)化,每個工具都與框架保持了標(biāo)準(zhǔn)化集成,同時提供了專業(yè)化的分析能力。

企業(yè)信息查詢工具

專注于企業(yè)基礎(chǔ)信息的獲取和整理,通過調(diào)用企業(yè)工商信息 API 獲取注冊信息、股東結(jié)構(gòu)、經(jīng)營范圍、變更歷史等關(guān)鍵數(shù)據(jù)。企業(yè)信息查詢工具內(nèi)置信貸行業(yè)的數(shù)據(jù)篩選邏輯,能夠自動識別和標(biāo)注法人變更、經(jīng)營異常、行政處罰等風(fēng)險指標(biāo),并提供企業(yè)關(guān)聯(lián)關(guān)系分析功能,通過股權(quán)穿透和關(guān)聯(lián)交易識別為復(fù)雜企業(yè)結(jié)構(gòu)的風(fēng)險評估提供數(shù)據(jù)支撐。

財務(wù)數(shù)據(jù)分析工具

實現(xiàn)多維度的財務(wù)指標(biāo)計算和分析,支持基礎(chǔ)財務(wù)比率計算,集成杜邦分析、現(xiàn)金流分析、盈利質(zhì)量評估等分析方法。財務(wù)數(shù)據(jù)分析工具采用時間序列分析技術(shù),自動識別財務(wù)數(shù)據(jù)的趨勢變化和異常波動,內(nèi)置行業(yè)對標(biāo)功能,通過與同行業(yè)企業(yè)的財務(wù)指標(biāo)對比,評估目標(biāo)企業(yè)在行業(yè)中的相對地位和競爭優(yōu)勢。

年報智能問答工具

通過 RAG 技術(shù)實現(xiàn)年報文檔的智能分析。年報智能問答工具將年報文檔進(jìn)行分塊處理和向量化存儲,構(gòu)建專門的年報知識庫,通過語義檢索找到相關(guān)文檔片段,結(jié)合大模型推理能力生成準(zhǔn)確答案。這種 RAG 檢索與大模型推理的融合機(jī)制,既保證回答內(nèi)容的事實準(zhǔn)確性,又提供專業(yè)的分析洞察。

可視化圖表生成工具

為財務(wù)數(shù)據(jù)和分析結(jié)果提供直觀的圖表展示,支持趨勢圖、對比圖、餅圖、雷達(dá)圖等多種圖表類型,能夠根據(jù)數(shù)據(jù)特征自動選擇合適的可視化方式??梢暬瘓D表生成工具采用 ECharts 圖表庫,生成具有良好交互性和視覺效果的圖表,支持?jǐn)?shù)據(jù)鉆取和動態(tài)更新,提供 PNG、PDF 等多種格式的圖表導(dǎo)出功能。

外部服務(wù)集成機(jī)制

采用統(tǒng)一的 HTTP 調(diào)用機(jī)制,通過標(biāo)準(zhǔn)化接口適配不同的數(shù)據(jù)服務(wù)商。系統(tǒng)內(nèi)置完善的錯誤處理和重試機(jī)制,應(yīng)對網(wǎng)絡(luò)異常、服務(wù)超時、數(shù)據(jù)格式錯誤等各種異常情況。數(shù)據(jù)格式化機(jī)制通過字段映射、數(shù)據(jù)清洗、格式轉(zhuǎn)換等步驟,將不同來源的原始數(shù)據(jù)轉(zhuǎn)換為系統(tǒng)內(nèi)部的標(biāo)準(zhǔn)格式。

4、技術(shù)實現(xiàn)

下述演示過程是在保持 JoyAgent-JDGenie 框架穩(wěn)定性的前提下,逐步集成信貸領(lǐng)域的專業(yè)化功能。實現(xiàn)過程涵蓋開發(fā)環(huán)境搭建、數(shù)據(jù)準(zhǔn)備、服務(wù)腳本開發(fā)、工具集成等關(guān)鍵環(huán)節(jié)。

4.1搭建 JoyAgent 多服務(wù)開發(fā)環(huán)境

JoyAgent-JDGenie 采用多服務(wù)架構(gòu)設(shè)計,需要同時啟動前端界面、后端服務(wù)、工具服務(wù)和 MCP 客戶端四個獨(dú)立的服務(wù)進(jìn)程。這種架構(gòu)雖然提供了良好的模塊化和可擴(kuò)展性,但也對開發(fā)環(huán)境的搭建提出了更高要求。

多服務(wù)架構(gòu)配置

系統(tǒng)包含四個服務(wù),每個服務(wù)運(yùn)行在獨(dú)立端口上。前端服務(wù)基于 React 技術(shù)棧提供用戶交互界面;后端服務(wù)基于 Spring Boot 框架提供 Agent 執(zhí)行引擎;工具服務(wù)基于 FastAPI 框架提供 Python 數(shù)據(jù)處理能力;MCP 客戶端負(fù)責(zé)與外部 MCP 服務(wù)器的通信。

環(huán)境依賴管理

系統(tǒng)對運(yùn)行環(huán)境有明確要求,需要 Java 17 及以上版本用于后端服務(wù),Python 3.11 及以上版本用于工具服務(wù),以及 Maven 和 uv 等構(gòu)建工具。系統(tǒng)提供自動化腳本檢測依賴項的安裝狀態(tài)和版本兼容性,并檢查端口占用情況。

一鍵啟動機(jī)制

系統(tǒng)提供統(tǒng)一啟動腳本,實現(xiàn)四個服務(wù)的并行啟動和健康檢查。腳本執(zhí)行配置驗證、初始化設(shè)置、服務(wù)啟動和健康檢查等步驟,并提供詳細(xì)的啟動狀態(tài)報告。

配置管理策略

系統(tǒng)采用分層配置策略,通過不同配置文件管理各層次的參數(shù)。后端配置文件管理 Spring Boot 應(yīng)用的參數(shù),包括大模型服務(wù)配置、數(shù)據(jù)庫連接、MCP 服務(wù)器列表等。代碼實現(xiàn)邏輯示例如下。

server:
  port: 8080
llm:
  default:
    base_url: 'https://openrouter.ai/api/v1'
    apikey: 'your-api-key-here'
    model: google/gemini-2.5-flash
    max_tokens: 16384
autobots:
  code_interpreter_url: "http://127.0.0.1:1601"
  deep_search_url: "http://127.0.0.1:1601"
  mcp_client_url: "http://127.0.0.1:8188"
  mcp_server_url: "your-mcp-server-url"

工具服務(wù)通過環(huán)境變量文件管理 Python 服務(wù)的運(yùn)行時配置,包括 API 配置、搜索服務(wù)密鑰、文件系統(tǒng)路徑等參數(shù)。配置示例如下。

# 大模型API配置
OPENAI_API_KEY=your-api-key-here
OPENAI_BASE_URL=https://openrouter.ai/api/v1
DEFAULT_MODEL=openrouter/google/gemini-2.5-flash
# 搜索服務(wù)配置
SERPER_SEARCH_API_KEY=your-serper-api-key
USE_SEARCH_ENGINE=serp
# 文件系統(tǒng)配置
FILE_SAVE_PATH=file_db_dir
SQLITE_DB_PATH=autobots.db

后續(xù)演示中,大模型選擇通過 openrouter 接入 gemini-2.5-flash,可手動換切換其他任意支持 openai 規(guī)范的大模型。其次,為了支持聯(lián)網(wǎng)搜索功能,可以從 https://serpapi.com/manage-api-key 獲取下 api key,每月 2500 次免費(fèi)查詢。

4.2準(zhǔn)備信貸盡調(diào)演示數(shù)據(jù)

為支撐演示案例的開發(fā)和功能驗證,演示數(shù)據(jù)的設(shè)計遵循真實業(yè)務(wù)場景的數(shù)據(jù)結(jié)構(gòu)和內(nèi)容特點(diǎn),選擇上市公司作為數(shù)據(jù)來源,主要考慮其信息披露相對完整和規(guī)范,數(shù)據(jù)的公開性和可獲得性較好。

企業(yè)基本信息數(shù)據(jù)(profile.json)

采用 JSON 格式存儲企業(yè)的基礎(chǔ)信息和風(fēng)險評估數(shù)據(jù),包含企業(yè)基礎(chǔ)信息、經(jīng)營概況、風(fēng)險評估和匯總指標(biāo)四個層次。企業(yè)基礎(chǔ)信息涵蓋工商登記要素和企業(yè)基本屬性,經(jīng)營概況包含股權(quán)結(jié)構(gòu)和資本市場相關(guān)信息,風(fēng)險評估從合規(guī)、法律、經(jīng)營三個維度進(jìn)行風(fēng)險識別,匯總指標(biāo)提供風(fēng)險評分和綜合評估結(jié)論。數(shù)據(jù)結(jié)構(gòu)示例如下。

{
  "enterprise_basic": {
    "name": "企業(yè)名稱",
    "legal_representative": "法定代表人",
    "registered_capital_wan": "注冊資本",
    "industry": {
      "level1_name": "一級行業(yè)",
      "level2_name": "二級行業(yè)"
    }
  },
  "risk_assessment": {
    "compliance_risks": "合規(guī)風(fēng)險信息",
    "legal_risks": "法律風(fēng)險信息",
    "operational_risks": "經(jīng)營風(fēng)險信息"
  }
}

財務(wù)數(shù)據(jù)(financials.json)

采用 JSON 格式存儲企業(yè)的財務(wù)分析數(shù)據(jù),主要分為公司概況、財務(wù)時間序列、財務(wù)結(jié)構(gòu)、關(guān)鍵指標(biāo)和對比分析五個層次。財務(wù)時間序列提供多期財務(wù)數(shù)據(jù)的歷史趨勢,財務(wù)結(jié)構(gòu)分析資產(chǎn)負(fù)債構(gòu)成,關(guān)鍵指標(biāo)匯總財務(wù)比率和增長數(shù)據(jù),對比分析提供行業(yè)基準(zhǔn)參考。數(shù)據(jù)涵蓋了信貸分析所需的盈利能力、償債能力、營運(yùn)能力、成長能力等維度。關(guān)鍵字段結(jié)構(gòu)如下。

{
  "company_profile": {
    "name": "企業(yè)名稱",
    "code": "企業(yè)代碼",
    "market_cap_billions": "市值"
  },
  "financial_time_series": [
    {
      "period": {"year": 2025, "period": "H1"},
      "operating_performance": {
        "revenue_billions": "營業(yè)收入",
        "net_profit_billions": "凈利潤"
      },
      "capital_efficiency": {
        "roe_pct": "凈資產(chǎn)收益率"
      }
    }
  ]
}

年報文檔數(shù)據(jù)(年報.md)

采用 Markdown 格式存儲企業(yè)年報的完整文檔內(nèi)容,為 RAG 智能問答提供豐富的文本素材。文檔按照標(biāo)準(zhǔn)年報格式組織,包含公司簡介、管理層討論與分析、公司治理、重要事項、財務(wù)報告等主要章節(jié)。其中管理層討論與分析是重點(diǎn)章節(jié),詳細(xì)闡述了企業(yè)的商業(yè)模式、經(jīng)營策略、市場地位、競爭優(yōu)勢、風(fēng)險因素等關(guān)鍵信息。Markdown 格式便于文本解析和向量化處理,支持 RAG 系統(tǒng)進(jìn)行高效的文檔檢索和語義匹配。

注:鑒于年報pdf文檔布局較為復(fù)雜,為了避免解析不準(zhǔn)確對最后結(jié)果的干擾,我提前對測試企業(yè)的25年半年報進(jìn)行了md格式的預(yù)處理。

4.3開發(fā) Python 數(shù)據(jù)服務(wù)腳本

Python 工具服務(wù)層是智能信貸盡調(diào)助手的數(shù)據(jù)處理基礎(chǔ),通過四個專業(yè)化腳本為 Java 工具類提供底層的數(shù)據(jù)查詢、分析和處理能力。這些腳本采用模塊化設(shè)計,每個腳本專注于特定的業(yè)務(wù)功能,通過 FastAPI 統(tǒng)一封裝為 HTTP 接口,實現(xiàn)與 Java 層的標(biāo)準(zhǔn)化通信。

企業(yè)信息查詢腳本(data_query_engine.py)

實現(xiàn) DataQueryEngine 類,為企業(yè)信息和財務(wù)數(shù)據(jù)查詢提供精確的數(shù)據(jù)服務(wù)。腳本采用“零大模型調(diào)用”的設(shè)計原則,確保完全基于原始 JSON 數(shù)據(jù)進(jìn)行查詢。支持企業(yè)基本信息查詢、財務(wù)數(shù)據(jù)查詢、時間序列數(shù)據(jù)提取和風(fēng)險因素搜索等功能。企業(yè)信息查詢支持分類查詢和嵌套字段查詢,財務(wù)數(shù)據(jù)查詢支持特定周期查詢、最新數(shù)據(jù)查詢、全時間序列查詢等多種模式。實現(xiàn)邏輯如下。

class DataQueryEngine:
    def query_company_info(self, category: str, field: Optional[str] = None):
        """查詢企業(yè)基本信息,支持分類和字段級查詢"""
        category_data = self.profile_data[category]
        if field is None:
            return category_data
        # 支持嵌套字段查詢
        if '.' in field:
            keys = field.split('.')
            result = category_data
            for key in keys:
                result = result[key]
            return result
        return category_data[field]
    def query_financial_data(self, period: Optional[str] = None,
                           metric: Optional[str] = None):
        """查詢財務(wù)數(shù)據(jù),支持多種查詢模式"""
        time_series = self.financials_data['financial_time_series']
        if period == 'latest':
            target_data = time_series[0]
        elif period == 'all':
            target_data = time_series
        else:
            target_data = next((item for item in time_series
                               if item['period']['label'] == period), None)
        return target_data if metric is None else self._extract_metric(target_data, metric)

財務(wù)數(shù)據(jù)分析腳本(data_query_engine.py 集成功能)

在數(shù)據(jù)查詢引擎基礎(chǔ)上,提供專業(yè)的財務(wù)分析功能,包括杜邦分析、時間序列分析和風(fēng)險評估等功能。杜邦分析功能自動計算 ROE、ROA、權(quán)益乘數(shù)等關(guān)鍵指標(biāo),時間序列分析支持營收、利潤、現(xiàn)金流等指標(biāo)的歷史趨勢提取。關(guān)鍵實現(xiàn)如下。

def get_dupont_analysis(self, period: str = 'latest') -> Dict:
    """獲取杜邦分析數(shù)據(jù)"""
    financial_data = self.query_financial_data(period)
    capital_efficiency = financial_data['capital_efficiency']
    operating_performance = financial_data['operating_performance']


    return {
        'roe_pct': capital_efficiency['roe_pct'],
        'roa_pct': capital_efficiency['roa_pct'],
        'net_margin_pct': operating_performance['net_margin_pct'],
        'equity_multiplier': round(capital_efficiency['roe_pct'] / 
                                 capital_efficiency['roa_pct'], 2)
    }

年報 RAG 服務(wù)腳本(rag_engine.py)

實現(xiàn)完整的 RAG 檢索服務(wù),為年報智能問答提供文檔檢索和語義匹配能力。RAGEngine 類負(fù)責(zé)向量索引構(gòu)建和檢索查詢,采用 sentence-transformers 進(jìn)行文本編碼。RecursiveSemanticChunker 類實現(xiàn)基于標(biāo)題的遞歸語義分塊,按照層次結(jié)構(gòu)進(jìn)行文檔分割,確保分塊的語義完整性。檢索實現(xiàn)如下。

class RecursiveSemanticChunker:
    def chunk_document(self, text: str) -> List[Dict]:
        """基于標(biāo)題層次進(jìn)行文檔分塊"""
        chunks = self._split_by_headers(text)
        return [chunk for chunk in chunks if len(chunk['content']) >= 50]
class RAGEngine:
    def query(self, question: str, top_k: int = 3) -> List[Dict]:
        """檢索相關(guān)文本塊"""
        query_embedding = self.encoder.encode([question])
        scores, indices = self.index.search(query_embedding, top_k)


        return [{
            'content': self.chunks[idx]['content'],
            'score': float(score),
            'hierarchy': self.chunks[idx]['hierarchy']
        } for score, idx in zip(scores[0], indices[0])]

可視化圖表腳本(visualization_engine.py)

為可視化工具提供專業(yè)的圖表配置生成服務(wù),支持 ECharts 和 Mermaid 兩種圖表格式。ChartEngine 類內(nèi)置多種圖表模板,包括營收凈利潤趨勢圖、杜邦分析樹狀圖、風(fēng)險因素餅圖等。腳本采用模板化配置策略,通過數(shù)據(jù)替換生成圖表配置代碼。核心實現(xiàn)如下。

class ChartEngine:
    def generate_chart_config(self, chart_type: str, data: Dict) -> str:
        """生成圖表配置"""
        template = self.chart_templates[chart_type]


        if chart_type == 'dupont_analysis_tree':
            config_str = json.dumps(template, ensure_ascii=False, indent=2)
            replacements = {
                '{roe}': str(data.get('roe', '0')),
                '{roa}': str(data.get('roa', '0')),
                '{net_margin}': str(data.get('net_margin', '0'))
            }
            for placeholder, value in replacements.items():
                config_str = config_str.replace(placeholder, value)
            return config_str

這四個 Python 腳本通過 api_server.py 統(tǒng)一封裝為 FastAPI 服務(wù),提供標(biāo)準(zhǔn)化的 HTTP 接口,實現(xiàn)數(shù)據(jù)查詢、RAG 檢索、圖表生成等功能的模塊化封裝,為 Java 工具類提供穩(wěn)定、高效的底層數(shù)據(jù)服務(wù)支撐。

4.4實現(xiàn) Java 工具類與 BaseTool 接口的集成

Java 工具類是連接 JoyAgent 框架與 Python 數(shù)據(jù)服務(wù)的關(guān)鍵橋梁,通過實現(xiàn) BaseTool 標(biāo)準(zhǔn)接口,四個專業(yè)化工具類實現(xiàn)了與框架的無縫集成。每個工具類都遵循統(tǒng)一的設(shè)計模式:參數(shù)驗證、HTTP 調(diào)用、專業(yè)格式化和異常處理,確保了工具的穩(wěn)定性和可維護(hù)性。

BaseTool 接口規(guī)范與標(biāo)準(zhǔn)化實現(xiàn)

BaseTool 接口定義了四個關(guān)鍵方法,為工具的標(biāo)準(zhǔn)化封裝提供了統(tǒng)一規(guī)范。getName()方法返回工具的唯一標(biāo)識符,用于框架的工具注冊和調(diào)用路由;getDescription()方法提供工具功能的自然語言描述,供大模型進(jìn)行工具選擇時參考;toParams()方法定義工具的輸入?yún)?shù)結(jié)構(gòu),采用 JSON Schema 格式確保參數(shù)的標(biāo)準(zhǔn)化;execute()方法實現(xiàn)工具的業(yè)務(wù)邏輯,接收標(biāo)準(zhǔn)化的輸入?yún)?shù)并返回處理結(jié)果。參數(shù)定義示例如下。

@Override
public Map<String, Object> toParams() {
    Map<String, Object> categoryParam = new HashMap<>();
    categoryParam.put("type", "string");
    categoryParam.put("description", "查詢類別:enterprise_basic(基礎(chǔ)信息)、business_profile(業(yè)務(wù)概況)、risk_assessment(風(fēng)險評估)");
    categoryParam.put("enum", Arrays.asList("enterprise_basic", "business_profile", "risk_assessment"));


    Map<String, Object> properties = new HashMap<>();
    properties.put("category", categoryParam);


    Map<String, Object> parameters = new HashMap<>();
    parameters.put("type", "object");
    parameters.put("properties", properties);
    parameters.put("required", Collections.singletonList("category"));
    return parameters;
}

三層架構(gòu)的工具實現(xiàn)模式

每個 Java 工具類都采用“參數(shù)處理+HTTP 調(diào)用+結(jié)果格式化”的三層架構(gòu)模式,實現(xiàn)了技術(shù)實現(xiàn)與業(yè)務(wù)邏輯的分離。參數(shù)處理層負(fù)責(zé)輸入?yún)?shù)的驗證、清洗和標(biāo)準(zhǔn)化;HTTP 調(diào)用層通過 OkHttp 客戶端與 Python 服務(wù)進(jìn)行異步通信,設(shè)置合理的超時時間和重試機(jī)制;結(jié)果格式化層將 Python 服務(wù)返回的原始數(shù)據(jù)轉(zhuǎn)換為符合信貸業(yè)務(wù)規(guī)范的標(biāo)準(zhǔn)格式。實現(xiàn)框架如下。

@Override
public Object execute(Object input) {
    String requestId = agentContext.getRequestId();
    try {
        // 參數(shù)處理層:驗證和標(biāo)準(zhǔn)化輸入?yún)?shù)
        Map<String, Object> params = (Map<String, Object>) input;
        String category = (String) params.get("category");
                log.info("{} [{}] 開始執(zhí)行,參數(shù): category={}", requestId, TOOL_NAME, category);
                // HTTP調(diào)用層:異步調(diào)用Python API服務(wù)
        Future<String> future = callCompanyInfoAPI(category, field, query);
        String result = future.get();
        // 結(jié)果格式化層:result已經(jīng)過格式化處理 
return result;
    } catch (Exception e) {
        log.error("{} [{}] 執(zhí)行失敗: {}", requestId, TOOL_NAME, e.getMessage());
        return "企業(yè)信息查詢失敗: " + e.getMessage();
    }
}

專業(yè)化的結(jié)果格式化機(jī)制

每個工具類都實現(xiàn)了針對信貸業(yè)務(wù)的專業(yè)化格式化邏輯,將技術(shù)數(shù)據(jù)轉(zhuǎn)換為業(yè)務(wù)友好的展示格式。企業(yè)信息工具根據(jù)查詢類別提供不同的格式化策略;財務(wù)數(shù)據(jù)工具實現(xiàn)多維度的財務(wù)數(shù)據(jù)格式化,支持經(jīng)營業(yè)績、資本效率、現(xiàn)金流分析等不同維度的專業(yè)展示;年報 RAG 工具采用結(jié)構(gòu)化的文檔片段展示,包含相似度評分、文檔層次和內(nèi)容摘要;可視化工具提供圖表配置的詳細(xì)說明和使用指導(dǎo)。格式化實現(xiàn)如下。

private String formatFinancialDataDetailed(Object data) {
    if (data instanceof Map) {
        Map<String, Object> dataMap = (Map<String, Object>) data;
        StringBuilder sb = new StringBuilder();
                // 格式化經(jīng)營業(yè)績
        if (dataMap.containsKey("operating_performance")) {
            sb.append("\n【經(jīng)營業(yè)績】\n");
            Map<String, Object> operating = (Map<String, Object>) dataMap.get("operating_performance");
            sb.append("營業(yè)收入: ").append(formatAmount(operating.get("revenue_billions"))).append("億元\n");
            sb.append("凈利潤: ").append(formatAmount(operating.get("net_profit_billions"))).append("億元\n");
        }
        return sb.toString();
    }
    return data.toString();
}

統(tǒng)一的配置管理與環(huán)境適配

工具類采用統(tǒng)一的配置管理策略,通過靜態(tài)常量定義 API 服務(wù)地址,支持不同部署環(huán)境的靈活適配。HTTP 客戶端配置采用統(tǒng)一的超時策略,連接超時 30 秒、讀取超時 60 秒,為不同復(fù)雜度的 API 調(diào)用提供合理的時間保障。日志記錄采用統(tǒng)一的格式規(guī)范,包含請求 ID、工具名稱、執(zhí)行時間和關(guān)鍵參數(shù)。異常處理采用分層策略,網(wǎng)絡(luò)異常、API 異常和業(yè)務(wù)異常分別處理,確保系統(tǒng)的穩(wěn)定性。

4.5注冊集成工具與系統(tǒng)配置

工具注冊是 JoyAgent 框架與信貸專用工具集成的關(guān)鍵環(huán)節(jié),通過 GenieController 的 buildToolCollection 方法實現(xiàn)工具的動態(tài)加載和統(tǒng)一管理。系統(tǒng)采用分層注冊策略,既保持了框架內(nèi)置工具的完整性,又實現(xiàn)了專業(yè)化工具的無縫集成。

ToolCollection 管理機(jī)制與動態(tài)注冊

ToolCollection 作為工具管理的組件,提供了工具的統(tǒng)一注冊、查詢和調(diào)用接口。系統(tǒng)采用分層注冊策略,首先注冊框架內(nèi)置工具包括文件處理、代碼解釋、報告生成、深度搜索等基礎(chǔ)工具;然后注冊信貸專用工具集,包括企業(yè)信息查詢、財務(wù)數(shù)據(jù)分析、年報 RAG 問答、可視化圖表四個專業(yè)化工具;最后注冊 MCP 協(xié)議工具,支持外部服務(wù)的動態(tài)工具擴(kuò)展。注冊實現(xiàn)示例如下。

private ToolCollection buildToolCollection(AgentContext agentContext, AgentRequest request) {
    ToolCollection toolCollection = new ToolCollection();
    toolCollection.setAgentContext(agentContext);
    // 注冊框架內(nèi)置工具
    FileTool fileTool = new FileTool();
    fileTool.setAgentContext(agentContext);
    toolCollection.addTool(fileTool);
    // 信貸盡調(diào)工具集成
    try {
        CompanyInfoTool companyInfoTool = new CompanyInfoTool();
        companyInfoTool.setAgentContext(agentContext);
        toolCollection.addTool(companyInfoTool);


        FinancialDataTool financialDataTool = new FinancialDataTool();
        financialDataTool.setAgentContext(agentContext);
        toolCollection.addTool(financialDataTool);


        log.info("{} 信貸盡調(diào)工具集成完成", agentContext.getRequestId());
    } catch (Exception e) {
        log.error("{} 信貸盡調(diào)工具集成失敗", agentContext.getRequestId(), e);
    }
    return toolCollection;
}

AgentContext 統(tǒng)一注入與上下文管理

AgentContext 作為 Agent 執(zhí)行的上下文環(huán)境,為所有工具提供統(tǒng)一的運(yùn)行時信息和服務(wù)接口。每個工具在注冊時都會注入 AgentContext 實例,獲得 requestId 用于請求追蹤、sessionId 用于會話管理、printer 用于結(jié)果輸出等關(guān)鍵服務(wù)。上下文注入采用依賴注入模式,工具類通過 setAgentContext 方法接收上下文實例,避免了硬編碼依賴;上下文管理采用線程安全設(shè)計,支持多請求并發(fā)處理,每個請求都有獨(dú)立的上下文實例。上下文構(gòu)建和工具集成的實現(xiàn)如下。

AgentContext agentContext = AgentContext.builder()
        .requestId(request.getRequestId())
        .sessionId(request.getRequestId())
        .printer(printer)
        .query(request.getQuery())
        .build();
// 構(gòu)建工具列表并注入上下文
agentContext.setToolCollection(buildToolCollection(agentContext, request));

工具級異常隔離與系統(tǒng)穩(wěn)定性保障

系統(tǒng)采用多層異常處理策略,確保單個工具的異常不會影響整個系統(tǒng)的穩(wěn)定性。工具注冊層面采用 try-catch 隔離,信貸專用工具的注冊失敗不會影響框架內(nèi)置工具的正常工作;工具執(zhí)行層面采用異常捕獲和友好提示,每個工具的 execute 方法都包含完整的異常處理邏輯;HTTP 調(diào)用層面采用超時控制和重試機(jī)制,通過 OkHttpClient 的超時配置避免長時間阻塞。異常處理機(jī)制如下。

// 信貸盡調(diào)工具集成 - 異常隔離
try {
    CompanyInfoTool companyInfoTool = new CompanyInfoTool();
    companyInfoTool.setAgentContext(agentContext);
    toolCollection.addTool(companyInfoTool);


    log.info("{} 信貸盡調(diào)工具集成完成", agentContext.getRequestId());
} catch (Exception e) {
    log.error("{} 信貸盡調(diào)工具集成失敗", agentContext.getRequestId(), e);
    // 異常不會中斷系統(tǒng)運(yùn)行,繼續(xù)注冊其他工具
}

RequestId 全鏈路追蹤與調(diào)試支持

系統(tǒng)實現(xiàn)了基于 RequestId 的全鏈路追蹤機(jī)制,為分布式系統(tǒng)的調(diào)試和監(jiān)控提供技術(shù)支撐。RequestId 在請求入口生成,貫穿整個處理流程包括 Agent 執(zhí)行、工具調(diào)用、Python 服務(wù)處理等各個環(huán)節(jié);每個工具類都通過 agentContext.getRequestId()獲取請求標(biāo)識,在日志記錄中統(tǒng)一使用該標(biāo)識進(jìn)行標(biāo)記;日志格式采用統(tǒng)一規(guī)范,包含 RequestId、工具名稱、執(zhí)行階段、耗時統(tǒng)計、關(guān)鍵參數(shù)等信息。追蹤格式如下。

// 統(tǒng)一的日志追蹤格式
log.info("{} [{}] 開始執(zhí)行,參數(shù): {}", requestId, TOOL_NAME, params);
log.info("{} [{}] 執(zhí)行完成,耗時: {}ms", requestId, TOOL_NAME, duration);
log.error("{} [{}] 執(zhí)行失敗,錯誤: {}", requestId, TOOL_NAME, e.getMessage());

通過這種全面的工具注冊和系統(tǒng)配置機(jī)制,實現(xiàn)了與 JoyAgent 框架的深度集成,既保持了框架的通用性和穩(wěn)定性,又提供了專業(yè)化的信貸分析能力。

4.6端到端實戰(zhàn)驗證與效果展示

完成二開后,需要通過全面的驗證測試確保功能的正確性和穩(wěn)定性。驗證過程采用分層測試策略,從通用能力完整性驗證到專業(yè)報告生成驗證,全面評估系統(tǒng)的功能完整性和工具調(diào)用效果。 

通用能力完整性驗證

首先驗證系統(tǒng)在集成信貸專用工具后,原有的通用 Agent 能力是否得到完整保持。測試采用“深度研究”模式,通過非信貸場景的復(fù)雜查詢?nèi)蝿?wù),驗證系統(tǒng)的任務(wù)規(guī)劃、工具選擇和結(jié)果整合能力。

測試用例選擇了“分析一下京東的最新財務(wù)報告,總結(jié)出關(guān)鍵數(shù)據(jù)以及公司發(fā)展情況”這一典型的財務(wù)分析任務(wù),這也是官方示例中的演示問題之一。該任務(wù)具有一定的復(fù)雜性,需要系統(tǒng)進(jìn)行多步驟的任務(wù)分解和工具協(xié)調(diào),能夠有效驗證 Agent 的推理規(guī)劃能力。

圖片

如圖所示,JoyAgent 首先對用戶查詢進(jìn)行 reasoning 分析,識別出這是一個需要獲取最新財務(wù)報告并進(jìn)行分析總結(jié)的復(fù)合任務(wù)?;谌蝿?wù)復(fù)雜性,系統(tǒng)自動制定了詳細(xì)的任務(wù)計劃,包括四個關(guān)鍵步驟:獲取財務(wù)報告、提取財務(wù)數(shù)據(jù)、分析公司發(fā)展情況、生成 Markdown 報告。

在具體的工具調(diào)用過程中,系統(tǒng)展現(xiàn)了工具選擇能力。Agent 根據(jù)任務(wù)需求,自動選擇并調(diào)用了搜索類工具和報告生成類工具。搜索類工具通過精確的搜索查詢獲取外部信息;如圖所示,報告生成類工具將搜索獲得的分散信息整理成結(jié)構(gòu)化的分析報告,展現(xiàn)了內(nèi)容創(chuàng)作和格式化能力。

圖片

最終生成的報告題為“京東集團(tuán) 2024 年全年及 2025 年第一、第二季度財務(wù)報告深度分析”,報告結(jié)構(gòu)完整,包含了財務(wù)表現(xiàn)分析、營收增長情況、利潤狀況評估、現(xiàn)金流分析等財務(wù)指標(biāo),以及公司在不同業(yè)務(wù)板塊的發(fā)展情況和未來展望。   

信貸盡調(diào)專業(yè)能力驗證

完成通用能力驗證后,重點(diǎn)驗證系統(tǒng)在信貸盡調(diào)場景下的專業(yè)化能力,通過完整的盡調(diào)報告生成流程,測試四個信貸專業(yè)工具的協(xié)同工作效果。

提示詞設(shè)計與任務(wù)規(guī)劃

出于信貸業(yè)務(wù)的專業(yè)性要求,本次測試采用了下述結(jié)構(gòu)化提示詞。

# 角色與任務(wù)


你是專業(yè)的信貸風(fēng)險分析師,請為"牧原食品股份有限公司"生成一份結(jié)構(gòu)化的信貸預(yù)審報告。


# 執(zhí)行計劃


## 數(shù)據(jù)收集階段


1. 調(diào)用company_info工具獲取企業(yè)基本信息


2. 調(diào)用financial_data工具獲取財務(wù)數(shù)據(jù)


3. 調(diào)用annual_report工具查詢關(guān)鍵問題:


- "公司主營業(yè)務(wù)和商業(yè)模式是什么?"


- "公司面臨的主要風(fēng)險有哪些?"


## 分析處理階段


4. 調(diào)用visualization工具生成財務(wù)趨勢圖表


5. 綜合分析收集到的所有信息


## 報告生成階段


6. 按照以下結(jié)構(gòu)輸出報告:


一、公司概況


- 基本信息表格


- 主營業(yè)務(wù)描述


二、財務(wù)狀況分析


- 關(guān)鍵財務(wù)指標(biāo)


- 財務(wù)趨勢圖表分析


三、風(fēng)險評估


- 主要風(fēng)險識別


- 風(fēng)險等級評估


四、授信建議


- 綜合評估結(jié)論


- 具體建議


請嚴(yán)格按照計劃執(zhí)行,每完成一個階段都要明確說明。

如下圖所示,Agent 準(zhǔn)確理解了提示詞的要求,在任務(wù)計劃部分精確地拆解出了四個關(guān)鍵步驟,分別對應(yīng)封裝的四個信貸專業(yè)工具。這種準(zhǔn)確的任務(wù)分解完全符合預(yù)期要求,說明工具封裝和注冊機(jī)制成功,Agent 能夠正確識別和規(guī)劃信貸專業(yè)工具的使用。

圖片

信貸專業(yè)工具調(diào)用執(zhí)行

下圖展示了“查詢年報關(guān)鍵問題”步驟的具體執(zhí)行過程。系統(tǒng)正確調(diào)用了年報查詢工具,針對預(yù)設(shè)的問題進(jìn)行 RAG 檢索。在右側(cè)的工作空間中,事實跟隨功能實時顯示了工具調(diào)用的結(jié)果。

圖片

系統(tǒng)根據(jù)測試問題準(zhǔn)確地檢索到了“片段二”,相似度為 61.17%,并且明確標(biāo)注了該片段在原年報文檔中的具體位置:“(一) 一體化產(chǎn)業(yè)鏈條”。這個結(jié)果充分體現(xiàn)了在年報數(shù)據(jù)準(zhǔn)備階段設(shè)置的分塊處理參數(shù)的有效性。RAG 系統(tǒng)能夠準(zhǔn)確定位到相關(guān)的文檔片段,并提供相似度評分和層次化的位置信息,為后續(xù)的分析提供了可靠的事實依據(jù)。

這個執(zhí)行過程展示了 RAG 技術(shù)在信貸專業(yè)場景中的關(guān)鍵價值:作為年報智能問答工具的技術(shù)基礎(chǔ),RAG 不僅能夠準(zhǔn)確響應(yīng)業(yè)務(wù)查詢,還能夠提供詳細(xì)的檢索元數(shù)據(jù),包括相似度評分和文檔位置信息。這些技術(shù)特性對于信貸風(fēng)控人員驗證信息來源和評估信息可靠性具有重要意義。通過把 RAG 技術(shù)封裝為專業(yè)工具,系統(tǒng)實現(xiàn)了復(fù)雜年報文檔的語義檢索能力,將非結(jié)構(gòu)化的年報內(nèi)容轉(zhuǎn)換為可查詢的知識庫,大幅提升了年報信息的獲取效率和準(zhǔn)確性。

報告生成與文件輸出

系統(tǒng)在完成所有信貸專業(yè)工具的調(diào)用后,調(diào)用了框架原生的文件寫入工具,將生成的信貸預(yù)審報告保存為文件。如下圖所示,在右側(cè)工作空間的“文件”選項卡中,可以看到生成了完整的“牧原食品股份有限公司信貸預(yù)審報告”。

圖片

生成的報告嚴(yán)格按照提示詞中指定的結(jié)構(gòu)組織,包含公司概況、風(fēng)險識別、綜合評價等部分,內(nèi)容專業(yè)、結(jié)構(gòu)清晰,滿足信貸業(yè)務(wù)的實際需求。

5.1工程經(jīng)驗總結(jié)

提煉最小化侵入的方法論

經(jīng)過完整的開發(fā)驗證,證明了最小化侵入式擴(kuò)展策略在企業(yè)級應(yīng)用中的實用價值。該策略在不破壞原有系統(tǒng)穩(wěn)定性的前提下,通過標(biāo)準(zhǔn)化的擴(kuò)展機(jī)制實現(xiàn)專業(yè)化功能的快速集成。

標(biāo)準(zhǔn)化接口設(shè)計的復(fù)用價值

BaseTool 接口的四個關(guān)鍵方法構(gòu)成了完整的工具抽象層,這種設(shè)計不僅適用于信貸領(lǐng)域的四個專業(yè)工具,更驗證了接口的通用性。任何垂直領(lǐng)域的專業(yè)功能都可以通過這一接口標(biāo)準(zhǔn)進(jìn)行封裝,實現(xiàn)與框架的無縫集成。接口設(shè)計的關(guān)鍵在于對抽象層次的把握:既要足夠通用以支持不同領(lǐng)域的需求,又要足夠具體以提供明確的實現(xiàn)指導(dǎo)。

分層架構(gòu)模式的工程實踐

三層工具架構(gòu)(API 調(diào)用+專業(yè)格式化+文件存儲)在實際開發(fā)中展現(xiàn)了良好的可維護(hù)性和擴(kuò)展性。分層設(shè)計實現(xiàn)了職責(zé)分離:技術(shù)實現(xiàn)層專注于外部服務(wù)調(diào)用,業(yè)務(wù)適配層負(fù)責(zé)數(shù)據(jù)格式轉(zhuǎn)換,存儲層提供數(shù)據(jù)持久化支持。分層架構(gòu)使得每一層都可以獨(dú)立演進(jìn),降低了系統(tǒng)的整體復(fù)雜度。

從復(fù)雜提示詞到產(chǎn)品化改造

驗證測試采用了復(fù)雜的結(jié)構(gòu)化提示詞,成功驗證了自定義工具的調(diào)用有效性。但是在實際生產(chǎn)環(huán)境中,很難要求真實用戶輸入如此復(fù)雜的提示詞。這就需要進(jìn)行進(jìn)一步的產(chǎn)品化改造:設(shè)計預(yù)置的提示詞模板,用戶只需通過占位符填空或標(biāo)準(zhǔn)按鈕選擇,輸入企業(yè)名稱等必要信息即可觸發(fā)完整的盡調(diào)流程。這種產(chǎn)品化改造是從技術(shù)驗證向業(yè)務(wù)應(yīng)用轉(zhuǎn)化的關(guān)鍵環(huán)節(jié)。

配置驅(qū)動的環(huán)境適配策略

通過分層配置文件管理,系統(tǒng)實現(xiàn)了在不同部署環(huán)境間的靈活切換。配置層次的合理劃分包括:框架級配置管理服務(wù)參數(shù),應(yīng)用級配置管理業(yè)務(wù)參數(shù),環(huán)境級配置管理部署參數(shù)。配置驅(qū)動策略簡化了部署流程,為系統(tǒng)的持續(xù)集成提供了技術(shù)基礎(chǔ)。

5.2多服務(wù)架構(gòu)運(yùn)維

解決多服務(wù)架構(gòu)的運(yùn)維復(fù)雜性

JoyAgent 的多服務(wù)并行架構(gòu)在提供模塊化優(yōu)勢的同時,也引入了分布式系統(tǒng)的復(fù)雜性。通過實際運(yùn)維實踐,總結(jié)出了一套復(fù)雜性管理機(jī)制。

服務(wù)依賴管理與故障隔離機(jī)制

多服務(wù)架構(gòu)的挑戰(zhàn)在于服務(wù)間依賴關(guān)系的管理。通過建立明確的服務(wù)啟動順序和健康檢查機(jī)制,系統(tǒng)能夠在啟動階段及時發(fā)現(xiàn)依賴問題。故障隔離策略確保每個服務(wù)的異常都被限制在其自身范圍內(nèi),不會導(dǎo)致整個系統(tǒng)的崩潰。

全鏈路追蹤的實際價值

RequestId 機(jī)制在分布式系統(tǒng)調(diào)試中展現(xiàn)了重要價值。通過統(tǒng)一的請求標(biāo)識,開發(fā)人員能夠快速定位問題發(fā)生的具體服務(wù)和處理環(huán)節(jié),顯著提升了問題排查效率。全鏈路追蹤為系統(tǒng)的持續(xù)優(yōu)化提供了數(shù)據(jù)基礎(chǔ)。

自動化運(yùn)維的工程實踐

一鍵啟動腳本和環(huán)境檢測機(jī)制降低了系統(tǒng)的部署和維護(hù)成本。這種自動化實踐減少了人為操作錯誤,提高了系統(tǒng)部署的一致性和可靠性。待開發(fā)完成之后,在生產(chǎn)環(huán)境使用時推薦Docker (容器化) + Kubernetes (編排) + CI/CD (自動化流程) + Prometheus/EFK (監(jiān)控日志)的部署方案。

5.3系統(tǒng)演進(jìn)思考

當(dāng)前的 JoyAgent 架構(gòu)已經(jīng)實現(xiàn)了基本的多Agent 協(xié)作能力,但在實際應(yīng)用中仍存在一些架構(gòu)層面的優(yōu)化空間?;陂_發(fā)實踐和技術(shù)發(fā)展趨勢,可以從以下方向考慮架構(gòu)的漸進(jìn)式演進(jìn)。

會話狀態(tài)管理的完善

當(dāng)前系統(tǒng)缺乏完整的會話狀態(tài)管理機(jī)制,每次交互都是獨(dú)立的請求-響應(yīng)模式??梢砸霑挃?shù)據(jù)持久化機(jī)制,通過數(shù)據(jù)庫存儲會話歷史和上下文信息,使 Agent 能夠理解用戶的歷史交互,實現(xiàn)真正的多輪對話能力。這種改進(jìn)不僅提升了用戶體驗,也為復(fù)雜任務(wù)的分階段處理提供了技術(shù)基礎(chǔ)。

工具調(diào)用的智能化升級

現(xiàn)有的工具調(diào)用機(jī)制基于靜態(tài)的工具定義和參數(shù)映射,未來可以考慮進(jìn)一步發(fā)展為動態(tài)工具發(fā)現(xiàn)和自適應(yīng)參數(shù)推理。通過引入工具使用的上下文學(xué)習(xí)機(jī)制,Agent 可以根據(jù)歷史調(diào)用效果優(yōu)化工具選擇策略,提高工具調(diào)用的準(zhǔn)確性和效率。

多模態(tài)數(shù)據(jù)處理能力

當(dāng)前架構(gòu)主要針對文本數(shù)據(jù)處理進(jìn)行了優(yōu)化,但實際業(yè)務(wù)場景往往涉及圖片、表格、文檔等多種數(shù)據(jù)類型??梢栽诒3脂F(xiàn)有架構(gòu)穩(wěn)定性的基礎(chǔ)上,擴(kuò)展多模態(tài)數(shù)據(jù)處理的工具集,通過統(tǒng)一的數(shù)據(jù)抽象層處理不同類型的輸入數(shù)據(jù)。

分布式部署的架構(gòu)優(yōu)化

現(xiàn)有的多服務(wù)架構(gòu)在單機(jī)部署時表現(xiàn)良好,但在分布式環(huán)境中可能面臨服務(wù)發(fā)現(xiàn)、負(fù)載均衡、故障恢復(fù)等挑戰(zhàn)??梢钥紤]引入服務(wù)注冊與發(fā)現(xiàn)機(jī)制、配置中心、分布式鏈路追蹤等基礎(chǔ)設(shè)施組件,提升系統(tǒng)在生產(chǎn)環(huán)境中的可靠性和可擴(kuò)展性。

Agent 協(xié)作模式的擴(kuò)展

當(dāng)前的 Agent 主要采用順序執(zhí)行模式,可以探索并行協(xié)作、層次化協(xié)作等更復(fù)雜的 Agent 協(xié)作模式。通過任務(wù)分解和結(jié)果合并機(jī)制,實現(xiàn)多個 Agent 的并發(fā)處理,提升復(fù)雜任務(wù)的處理效率。

6、寫在最后

Agent 與工作流并非是個二選一的問題。在真實的生產(chǎn)環(huán)境中,最有效的方案往往是根據(jù)業(yè)務(wù)需求,將兩者的能力進(jìn)行組合——用工作流編排固定的主流程,在關(guān)鍵的決策或探索環(huán)節(jié),交由Agent來“破局”,實現(xiàn)剛性與彈性的平衡。

其次,Agent的工程實踐,本質(zhì)是一門關(guān)乎“體感”的藝術(shù)。真正的理解來源于動手操作。通過對JoyAgent這類成熟框架的二次開發(fā),可以更好的體會到分層、解耦與擴(kuò)展性設(shè)計的價值。

Anyway, 技術(shù)的本質(zhì)是為業(yè)務(wù)創(chuàng)造價值,不應(yīng)為了追求更復(fù)雜的框架或所謂的技術(shù)領(lǐng)先性,而本末倒置。最后還是引用下 Manus 那話:“Less structure, more intelligence” 。

責(zé)任編輯:龐桂玉 來源: 韋東東
相關(guān)推薦

2025-07-31 06:57:27

Dify人機(jī)協(xié)同多模態(tài)

2023-09-15 07:28:02

2023-09-04 07:09:08

數(shù)據(jù)倉庫數(shù)據(jù)處理

2023-07-29 13:30:04

2023-11-22 08:00:00

人工智能云計算

2021-03-04 16:24:47

MAXHUB

2024-04-10 10:28:47

2024-05-24 10:23:25

2023-06-26 07:42:39

2018-04-11 17:51:17

信貸

2023-10-04 07:57:22

2022-08-08 07:05:36

KubeSphere分級管理

2015-07-17 10:25:43

kubernetesDocker集群系統(tǒng)

2021-11-07 23:49:19

SQL數(shù)據(jù)庫工具

2025-07-31 07:11:53

2020-09-10 07:00:00

測試工作測試實踐

2025-07-31 01:22:00

2017-09-01 18:27:36

前端 RxJs數(shù)據(jù)層

2024-11-15 08:00:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號