
人工智能大模型AI 應(yīng)用后端AI AgentRAG流程編排微服務(wù)【免費下載鏈接】fit-frameworkFIT: 企業(yè)級AI開發(fā)框架提供多語言函數(shù)引擎FIT、流式編排引擎WaterFlow及Java生態(tài)的LangChain替代方案FEL。原生/Spring雙模運行支持插件熱插拔與智能聚散部署無縫統(tǒng)一大模型與業(yè)務(wù)系統(tǒng)。項目地址https://gitcode.com/ModelEngine/fit-framework點擊查看免費下載導(dǎo)讀本文檔系統(tǒng)講解 FELFIT Extension for LLM插件在 FIT 框架中的啟動順序機制。當(dāng)應(yīng)用以 JAR 包方式運行時FIT 框架會依據(jù)插件的category類別與level等級兩個維度以確定性的先后順序加載插件從而保證工具倉庫、工具發(fā)現(xiàn)器、模型集成等組件按正確依賴關(guān)系就緒。讀完本文你將掌握 FEL 全部 9 個插件的加載層級與先后次序、category/level 的配置語法與默認(rèn)值、以及插件間啟動依賴背后的源碼實現(xiàn)原理能夠據(jù)此合理規(guī)劃自定義插件的啟動優(yōu)先級。一、兩級排序機制category → levelFEL 插件與 FIT 內(nèi)置插件共用同一套啟動順序規(guī)則。FIT 框架對插件執(zhí)行兩級排序第一級按 category 排序第二級在同一 category 內(nèi)按 level 數(shù)值排序。1.1 啟動規(guī)則規(guī)則說明category 優(yōu)先級categorySYSTEM (id1)的插件先于categoryUSER (id2)的插件加載level 優(yōu)先級相同 category 內(nèi)level 數(shù)值越小啟動優(yōu)先級越高同級順序相同 category 和相同 level 的插件加載順序不確定1.2 默認(rèn)值未指定 category 時默認(rèn)為categoryUSER未指定 level 時默認(rèn)為level4。1.3 源碼依據(jù)category 的兩個枚舉值在 FIT 核心 API 中定義于 PluginCategory.javapublic enum PluginCategory implements CodeableEnumPluginCategory { SYSTEM(1, system), USER(2, user); ... }其中SYSTEM的 id 為 1、USER的 id 為 2這正是“SYSTEM 先于 USER 加載”這一規(guī)則的底層來源。SYSTEM類別通常承載框架級基礎(chǔ)設(shè)施HTTP 服務(wù)、序列化、工具鏈路而USER類別則承載面向業(yè)務(wù)的功能插件二者解耦后用戶插件在啟動時即可安全使用系統(tǒng)插件提供的 Bean 與服務(wù)。二、整體啟動流程圖29 個插件的兩級啟動順序當(dāng)前build/plugins目錄共統(tǒng)計29 個插件其中 FEL 插件 9 個本文檔詳細(xì)說明FIT 內(nèi)置插件 20 個詳見 FIT插件啟動順序說明.md。整體啟動順序如下插件啟動順序29個插件 │ ├─ 階段1: SYSTEM 插件啟動 │ │ │ ├─ Level 4 (21個) │ │ ├─ FIT 內(nèi)置插件 (20個詳見FIT文檔) │ │ └─ fel-tool-repository-simple │ │ │ ├─ Level 5 (5個) │ │ ├─ fel-tool-discoverer │ │ ├─ fel-tool-executor │ │ ├─ fel-tool-factory-repository │ │ ├─ fel-tool-mcp-client │ │ └─ fel-tool-mcp-server │ │ │ └─ Level 7 (1個) │ └─ fel-model-openai-plugin │ └─ 階段2: USER 插件啟動 ├─ Level 1 (1個) │ └─ fel-tokenizer-hanlp-plugin │ └─ Level 4 (1個) └─ fel-langchain-runnable從圖中可以清晰看出兩個關(guān)鍵設(shè)計意圖SYSTEM 插件整體先于 USER 插件工具鏈相關(guān)插件全部屬于 SYSTEM 類別它們構(gòu)成了 FEL 工具能力的“地基”同一 category 內(nèi)按 level 從小到大FIT 內(nèi)置插件與工具倉庫Level 4最先就緒隨后是工具發(fā)現(xiàn)/執(zhí)行/工廠/MCP 相關(guān)插件Level 5模型集成插件Level 7最后啟動USER 類別中分詞器Level 1先于 LangChain 運行時Level 4。三、FEL 插件清單詳解以下按啟動階段逐一說明 9 個 FEL 插件的啟動層級、職責(zé)與其源碼位置。3.1 階段1SYSTEM 插件categorySYSTEM, level41 個插件名稱說明fel-tool-repository-simple工具倉庫簡單實現(xiàn)該插件是工具鏈的數(shù)據(jù)存儲層。核心實現(xiàn)為 SimpleToolRepository.java通過Component注冊為ToolRepository與ToolChangedObserverRegistryaddTool(ToolInfoEntity tool)將工具寫入ConcurrentHashMap緩存并向所有已注冊的ToolChangedObserver廣播工具添加事件deleteTool(namespace, toolName)移除工具并廣播工具移除事件getTool/listTool按 namespace 查詢與列舉工具。作為 Level 4 插件它與 20 個 FIT 內(nèi)置插件處于同一層級意味著工具倉庫在工具發(fā)現(xiàn)器啟動之前就已經(jīng)就緒。categorySYSTEM, level55 個插件名稱說明fel-tool-discoverer工具發(fā)現(xiàn)器fel-tool-executor工具執(zhí)行器fel-tool-factory-repository工具工廠倉庫fel-tool-mcp-clientMCP 客戶端fel-tool-mcp-serverMCP 服務(wù)端這 5 個插件構(gòu)成 FEL 工具能力的中樞鏈路各自職責(zé)如下fel-tool-discoverer核心實現(xiàn)為 DefaultToolDiscoverer.java實現(xiàn)PluginStartedObserver與PluginStoppingObserver。當(dāng)任意插件啟動時它會掃描該插件內(nèi)符合ToolSchema.TOOL_MANIFEST約定的工具清單資源解析后調(diào)用toolRepository.addTool(...)將工具裝配進倉庫插件停止時則執(zhí)行反向卸載。此外它還通過Value(${tool.max-num})讀取插件內(nèi)最大工具數(shù)量限制。fel-tool-executor核心實現(xiàn)為 DefaultToolExecutor.java實現(xiàn)ToolExecuteService是工具的執(zhí)行入口負(fù)責(zé)從工具倉庫取出工具信息、經(jīng)工具工廠創(chuàng)建可執(zhí)行實例并完成調(diào)用。fel-tool-factory-repository核心實現(xiàn)為 DefaultToolFactoryRepository.java實現(xiàn)ToolFactoryRepository以工具類型type為鍵維護ToolFactory注冊表供執(zhí)行器按類型查找對應(yīng)的工廠。fel-tool-mcp-clientMCP 客戶端插件核心實現(xiàn)為 DefaultMcpClient.java 與DefaultMcpClientFactory通過io.modelcontextprotocol.sdk:mcp版本 0.17.1接入 MCPModel Context Protocol客戶端能力使 FEL 能夠調(diào)用外部 MCP 服務(wù)器提供的工具。fel-tool-mcp-serverMCP 服務(wù)端插件核心實現(xiàn)位于 tool-mcp-server同時提供基于 SSE 與 Streamable 兩種傳輸方式的服務(wù)器實例詳見其 README.md將 FEL 工具系統(tǒng)暴露為 MCP 服務(wù)供外部 MCP 客戶端發(fā)現(xiàn)與調(diào)用。categorySYSTEM, level71 個插件名稱說明fel-model-openai-pluginOpenAI 模型集成這是 FEL 的模型接入插件位于 fel-community/model-openai核心實現(xiàn)為 OpenAiModel.java。它實現(xiàn)ChatModel、EmbedModel、ImageModel、RerankModel等 FEL 核心模型接口通過fit-http-classic、fit-http-protocol、fit-security等 FIT 服務(wù)完成對 OpenAI 兼容 API 的調(diào)用是 FEL 應(yīng)用接入大模型的“最后一公里”。為什么 Level 7模型插件依賴 HTTP 客戶端、安全、序列化等 FIT 基礎(chǔ)服務(wù)這些服務(wù)由 Level 4 的內(nèi)置插件提供因此將其安排在 SYSTEM 類別內(nèi)較高的 level確保底層能力全部就緒后才加載模型集成。3.2 階段2USER 插件categoryUSER, level11 個插件名稱說明fel-tokenizer-hanlp-pluginHanLP 分詞器該插件位于 fel-community/tokenizer-hanlp核心實現(xiàn)為 HanlpTokenizer.java通過Component注冊為 FEL 的Tokenizer實現(xiàn)基于 HanLP 分詞器提供countToken等文本 token 計數(shù)能力。作為 USER 類別中 level 最低的插件它在所有用戶插件中最先啟動保證后續(xù)用戶插件在做上下文長度計算時可直接使用。categoryUSER, level41 個插件名稱說明fel-langchain-runnableLangChain 運行時支持該插件位于 fel-langchain-runnable核心實現(xiàn)為 LangChainRunnableServiceImpl.java聲明Fitable(modelengine.fel.plugin.langchain.runnable.invoke)通過BrokerClient按 taskId 路由并遠程調(diào)用指定 fitableId 的算子為 LangChain Runnable 提供跨進程的調(diào)用適配。注意fel-langchain-runnable的 POM 中未顯式聲明 category 與 level因此其實際生效的配置正是默認(rèn)值categoryUSER、level4見 pom.xml這恰好驗證了第一節(jié)中的默認(rèn)值規(guī)則。四、插件依賴關(guān)系FEL 插件之間存在明確的啟動期依賴文檔中記錄的依賴如下依賴方插件被依賴插件依賴說明fel-tool-discoverer(Level 5)fel-tool-repository-simple(Level 4)在onPluginStarted()回調(diào)時調(diào)用addTool()方法這一依賴在源碼層面清晰可見DefaultToolDiscoverer的構(gòu)造器強依賴ToolRepository接口見 DefaultToolDiscoverer.java而SimpleToolRepository正是該接口在 Level 4 階段的實現(xiàn)。若工具倉庫未先啟動工具發(fā)現(xiàn)器將無法完成工具裝配。這正是“工具倉庫 Level 4 → 工具發(fā)現(xiàn)器 Level 5”層級設(shè)計的根本原因。五、category 與 level 的配置方式fit-build-maven-plugin每個 FEL 插件在構(gòu)建為插件 JAR 時通過 Maven 構(gòu)建插件fit-build-maven-plugin的configuration聲明其啟動類別與等級。以fel-tool-repository-simple為例見 pom.xmlplugin groupIdorg.fitframework/groupId artifactIdfit-build-maven-plugin/artifactId version${fit.version}/version configuration categorysystem/category level4/level /configuration executions execution idbuild-plugin/id goals goalbuild-plugin/goal /goals /execution execution idpackage-plugin/id goals goalpackage-plugin/goal /goals /execution /executions /plugin各 FEL 插件的實際配置值可在其 POM 中逐一核實插件categorylevel配置文件fel-tool-repository-simplesystem4pom.xmlfel-tool-discoverersystem5pom.xmlfel-tool-executorsystem5pom.xmlfel-tool-factory-repositorysystem5pom.xmlfel-tool-mcp-clientsystem5pom.xmlfel-tool-mcp-serversystem5pom.xmlfel-model-openai-pluginsystem7pom.xmlfel-tokenizer-hanlp-pluginuser1pom.xmlfel-langchain-runnable未聲明默認(rèn) user未聲明默認(rèn) 4pom.xml此外所有插件在package或install階段通過maven-antrun-plugin將構(gòu)建產(chǎn)物復(fù)制到build/plugins/目錄例如 tool-repository-simple/pom.xml 中的copy ... todir../../../../../build/plugins/最終由 FIT 框架在啟動時按該目錄中的插件清單統(tǒng)一加載。自定義插件如何選擇 category 與 level提供基礎(chǔ)設(shè)施、且被其他插件依賴的插件應(yīng)聲明為categorysystem并選擇一個小于其依賴方 level 的數(shù)值如level4面向業(yè)務(wù)功能、依賴框架能力即可的插件保持默認(rèn)categoryuser并按業(yè)務(wù)需要指定 level數(shù)值越小越早啟動同一 category 與 level 的插件之間不存在順序保證若兩個插件存在啟動期依賴必須通過調(diào)整 level 顯式表達先后關(guān)系而不能依賴同級插件的加載順序。六、與 FIT 內(nèi)置插件的關(guān)系build/plugins中的另外 20 個 FIT 內(nèi)置插件全部配置為categorySYSTEM, level4它們在 FEL 插件啟動前提供 HTTP 服務(wù)、序列化、驗證、服務(wù)發(fā)現(xiàn)、日志等框架級能力。FEL 插件尤其是fel-model-openai-plugin在依賴層面直接引用了fit-http-classic、fit-http-protocol、fit-security等 FIT 服務(wù)這些服務(wù)正是由內(nèi)置插件承載的具體清單與說明參見 FIT插件啟動順序說明.md。一個值得注意的細(xì)節(jié)是FIT 內(nèi)置插件與fel-tool-repository-simple同屬SYSTEM Level 4但文檔明確指出——相同 category 與 level 的插件之間加載順序不確定因此表格中的序號僅用于標(biāo)識不代表實際加載順序。在設(shè)計依賴時不應(yīng)假設(shè)同層級插件之間的先后關(guān)系。七、常見問題與排錯建議插件啟動后發(fā)現(xiàn)工具未注冊優(yōu)先檢查fel-tool-discovererLevel 5是否在fel-tool-repository-simpleLevel 4之后加載以及插件內(nèi)是否包含符合ToolSchema.TOOL_MANIFEST約定的工具清單資源自定義插件需要訪問模型服務(wù)但啟動過早模型集成插件位于SYSTEM Level 7依賴它的插件應(yīng)聲明為categoryuser且 level 大于其依賴對象或至少確保不早于依賴方同 level 插件間存在隱式依賴由于同級順序不確定應(yīng)立即通過調(diào)整 level 顯式化依賴關(guān)系否則可能在部分環(huán)境下出現(xiàn)偶發(fā)啟動失敗想確認(rèn)插件實際生效的 category/level查看該插件 POM 中fit-build-maven-plugin的configuration若未聲明則對應(yīng)默認(rèn)值USER與4fel-langchain-runnable即為此例。八、總結(jié)FEL 插件的啟動順序由categorySYSTEM → USER與 level從小到大兩級排序共同決定工具倉庫Level 4→ 工具發(fā)現(xiàn)/執(zhí)行/工廠/MCPLevel 5→ 模型集成Level 7構(gòu)成了 SYSTEM 階段的清晰鏈路分詞器Level 1與 LangChain 運行時Level 4則在 USER 階段完成收尾。理解這一機制是正確設(shè)計自定義 FEL 插件啟動優(yōu)先級、避免啟動期依賴問題的前提配置入口統(tǒng)一為 POM 中fit-build-maven-plugin的category與level兩個參數(shù)未配置時分別默認(rèn)USER與4。贊分享人工智能大模型AI 應(yīng)用后端AI AgentRAG流程編排微服務(wù)【免費下載鏈接】fit-frameworkFIT: 企業(yè)級AI開發(fā)框架提供多語言函數(shù)引擎FIT、流式編排引擎WaterFlow及Java生態(tài)的LangChain替代方案FEL。原生/Spring雙模運行支持插件熱插拔與智能聚散部署無縫統(tǒng)一大模型與業(yè)務(wù)系統(tǒng)。項目地址https://gitcode.com/ModelEngine/fit-framework點擊查看免費下載相關(guān)推薦leetcode-rust中的5個核心算法技巧提升你的Rust編程能力leetcode rust中的5個核心算法技巧提升你的Rust編程能力 在競爭激烈的編程世界中掌握高效算法是提升Rust編程能力的關(guān)鍵。leetcode r示例工程FIT 框架 FEL 工具調(diào)用機制實戰(zhàn)從 Pattern 委托到插件化工具編排FIT 框架 FEL 工具調(diào)用機制實戰(zhàn)從 Pattern 委托到插件化工具編排 導(dǎo)讀 本文聚焦 FIT 框架中 FELFramework for Engin人工智能大模型AI 應(yīng)用后端AI AgentRAG流程編排微服務(wù)FIT 框架 FEL 實戰(zhàn)基于 fel-flow 流程編排搭建 Native RAG 檢索增強應(yīng)用FIT 框架 FEL 實戰(zhàn)基于 fel flow 流程編排搭建 Native RAG 檢索增強應(yīng)用 本文以 examples/fel example/05 r人工智能大模型AI 應(yīng)用后端AI AgentRAG流程編排微服務(wù)創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考