LangChain 作為構建具備 LLM 能力應用的框架,雖在 Python 領域大放異彩,但 Java 開發者卻只能望洋興嘆。LangChain4j 正是為解決這一困境而誕生,它旨在借助 LLM 的強大效能,增強 Java 應用,簡化 LLM 功能在Java應用中的集成流程。
官網為LangChain4j | LangChain4j
一、獨具魅力的特點與優勢
- 兼容多元 LLM:LangChain4j 支持超過 15 種流行的 LLM,OpenAI、ZhiPu、Qianfan 等均在其列,可以依據項目的實際需求、成本考量,靈活切換適配的 LLM。
- Java 集成無縫對接:它實現了 LLM 與 Java 的雙向深度集成,二者之間可自如相互調用。
- 降低學習成本與靈活切換:通過提供如 AiServices 這般的高級 API 與 LLM 交互,開發者無需再為逐個鉆研每個 LLM 的復雜細節而頭疼,同時還能輕松在不同 LLM 間自由切換。
- 功能模式:當前LangChain4j 支持聊天對話、流式對話、文生圖這三種常見且實用的模式。
二、解析 LangChain4j 架構模塊
- Chains:Chains 負責定義輸入輸出的鏈式步驟,但官網推薦使用功能更為強勁的 AIService,所以在實際開發中,它的出場頻率相對較低。
- AI Services:作為封裝了與 LLM 交互功能的高級 API,AI Services 無疑是 LangChain4j 的核心樞紐。它以簡潔高效的方式,將復雜的 LLM 交互邏輯封裝起來,為開發者提供了便捷且強大的交互能力。
- Basics:Basics 模塊匯聚了 LLM 大模型、提示詞模板、歷史對話內存等基本組件,為構建基于 LLM 的 Java 應用奠定了基礎。
- RAG:RAG 模塊作為檢索增強組件,包含文檔加載器、文檔分割器、向量模型、向量存儲等,提升了應用在處理海量信息時的檢索與增強能力。
三、LangChain4j 類庫:
LangChain4j 采用精妙的模塊化設計,不同模塊各司其職,協同為開發者提供強大支持。
- langchain4j-core 模塊:作為核心抽象的定義者,ChatLanguageModel 和 EmbeddingStore 及其 API 均在此模塊中誕生。
- langchain4j 模塊:這里匯聚了眾多實用工具,如 ChatMemory、OutputParser,同時還包含像 AiServices 這樣的高級功能。
- langchain4j-{integration} 模塊:該模塊系列為各種 LLM 提供商及嵌入存儲與 LangChain4j 的集成搭建了橋梁,每個模塊都能獨立使用,開發者可按需引入,實現與特定 LLM 或嵌入存儲的無縫對接。
- langchain4j-spring-{integration}-spring-boot-starter 模塊:此模塊專為與 Spring boot 項目集成而設,意圖實現開箱即用的便捷體驗。從模塊劃分角度來看,相較于 Spring AI 清晰的Models 模塊、Embeddings模塊等劃分方式,langchain4j-spring 模塊的劃分稍顯混亂。
四、API 抽象層級
在 LangChain4j 的 API 抽象層面,分為 Low Level 和 High Level 兩種,為開發者提供了不同維度的開發選擇。
- Low Level:處于此級別,開發者能夠像擺弄樂高積木一樣,自由調用所有低級組件,如 ChatLanguageModel、UserMessage、AiMessage、EmbeddingStore 等 Embedding。這些組件構成了所謂的 “膠水代碼”,開發者可依據具體需求,以任意組合方式使用它們,實現高度定制化的功能開發。
- High Level:簡潔高效的 “一鍵快車”:在 High Level 層級,開發者可借助如 AiServices 這樣的高級 API 與 LLMs 進行交互。這一層級將所有復雜的底層邏輯與樣板代碼統統隱藏起來,開發者只需專注于業務邏輯的實現。
?