LangChain4j(1):初步认识Java 集成 LLM 的技术架构
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 进行交互。这一层级将所有复杂的底层逻辑与样板代码统统隐藏起来,开发者只需专注于业务逻辑的实现。