LangChain4j 项目深度解读:在 JVM 上用惯用 Java 构建 LLM 应用的统一框架
2026/9/15 18:31:10 网站建设 项目流程

LangChain4j 项目深度解读:在 JVM 上用惯用 Java 构建 LLM 应用的统一框架

【免费下载链接】langchain4jLangChain4j is an idiomatic, open-source Java library for building LLM-powered applications on the JVM. It offers a unified API over popular LLM providers and vector stores, and makes implementing tool calling (including MCP support), agents and RAG easy. It integrates seamlessly with enterprise Java frameworks like Quarkus and Spring Boot.项目地址: https://gitcode.com/GitHub_Trending/la/langchain4j

本文围绕开源仓库 README.md 的核心内容展开,系统解读 LangChain4j 的项目定位、设计理念、仓库结构、核心 API 与快速上手路径。读者读完本文,将掌握 LangChain4j 的模块化架构、统一模型与向量存储抽象、AI Services 高阶封装,以及它在 Quarkus、Spring Boot 等企业级 Java 框架中的集成方式,可直接据此评估并开始构建自己的 LLM 应用。

上图展示了 LangChain4j 的组件分层:上层是 Chains 与 AI Services,Basics 层包含语言模型、提示词模板、输出解析器与记忆,RAG 层则覆盖文档加载、文档切分、嵌入模型与嵌入存储。

项目定位:为 JVM 而生的 LLM 集成库

LangChain4j 的目标非常明确:简化将大语言模型(LLM)集成进 Java 应用程序的过程。从 README 开篇即可看到,它的核心承诺是让 Java 开发者以惯用(idiomatic)的方式构建 LLM 应用,而不是被迫模仿 Python 生态的写法。

README 特别强调了一个关键事实,值得每一位读者注意:

Despite the name, LangChain4j is not a Java port of LangChain (Python) — it is built for Java, not ported to it.

即:尽管名字中含有 "LangChain",LangChain4j并不是 Python 版 LangChain 的 Java 移植。它是一个围绕 Java 约定(类型安全、POJO、注解、接口、依赖注入、流式 API)从零设计的原生 Java 库,其 API、内部实现与发布节奏均独立于 Python 的 LangChain 项目。这一点对于架构选型评估非常重要——你拿到的是一个面向 JVM 生态深度优化的库,而非简单的语言翻译。

三大核心设计支柱

README 将 LangChain4j 的设计哲学概括为三点,这也是理解整个仓库结构的钥匙。

1. 统一 API:屏蔽各家厂商差异

LLM 提供商(如 OpenAI、Google Vertex AI)与嵌入/向量存储(如 Pinecone、Milvus)各自使用专有 API,LangChain4j 通过统一 API 屏蔽这些差异,使开发者无需为每家厂商学习并实现各自特有的 API。想更换底层模型或向量库时,只需切换依赖,业务代码基本无需重写。

据 README 声明,LangChain4j 当前支持 20+ 主流 LLM 提供商与 30+ 嵌入存储。从仓库根目录的 pom.xml 中的模块清单可以看到这一承诺的落地形态:

  • 模型提供商模块langchain4j-open-ailangchain4j-anthropiclangchain4j-azure-open-ailangchain4j-bedrocklangchain4j-coherelangchain4j-google-ai-geminilangchain4j-google-genailangchain4j-vertex-ailangchain4j-vertex-ai-geminilangchain4j-mistral-ailangchain4j-ollamalangchain4j-hugging-facelangchain4j-local-ailangchain4j-watsonxlangchain4j-ovh-ailangchain4j-jinalangchain4j-nomiclangchain4j-voyage-ailangchain4j-workers-ai等;
  • 嵌入/向量存储模块langchain4j-pineconelangchain4j-milvuslangchain4j-milvus-v2langchain4j-qdrantlangchain4j-weaviatelangchain4j-elasticsearchlangchain4j-opensearchlangchain4j-pgvectorlangchain4j-chromalangchain4j-azure-ai-searchlangchain4j-azure-cosmos-nosqllangchain4j-mongodb-atlaslangchain4j-cassandralangchain4j-oraclelangchain4j-mariadblangchain4j-vespalangchain4j-tablestorelangchain4j-coherencelangchain4j-couchbaselangchain4j-infinispan等;
  • 进程内嵌入模型embeddings/langchain4j-embeddings-all-minilm-l6-v2langchain4j-embeddings-bge-small-zh-v15langchain4j-embeddings-e5-small-v2等系列,可在本地直接完成向量化。

每个集成均为独立 Maven 模块,按需引入,互不干扰。

2. 综合工具箱:从底层原语到高层模式

自 2023 年初以来,社区构建了大量 LLM 应用,沉淀出通用抽象、模式与技巧。LangChain4j 将这些沉淀提炼为可落地的代码,形成覆盖面极广的“工具箱”:

  • 底层能力:提示词模板(Prompt Templating)、对话记忆管理(Chat Memory)、函数调用(Function Calling);
  • 高层模式:智能体(Agents)、检索增强生成(RAG,覆盖从数据摄取到检索的完整流水线);
  • 对每个抽象,仓库都提供了接口 + 基于常见技术的多个开箱即用实现。

从 langchain4j-core 的包结构可以直观看到这些抽象在源码层的组织:model(模型)、agent(智能体与工具)、data(文档加载/切分/解析)、rag(检索增强)、store(嵌入存储)、memory(记忆)、web(Web 搜索)、code(代码执行)等;而 langchain4j/src/main/java/dev/langchain4j 则承载了service(AI Services)、chain(链式调用)、classification(文本分类)、memory/chat(对话记忆实现)等高阶封装。

3. 大量示例:快速上手的最佳路径

README 单独列出了 langchain4j-examples 示例仓库(独立仓库,不在当前仓库内),覆盖纯 Java、Quarkus、Spring Boot、Helidon、Micronaut 等多种形态,帮助开发者快速获得灵感并启动项目。当前仓库内的 docs/docs 目录同样沉淀了成套文档:get-started.md(快速开始)、tutorials/(涵盖 AI Services、Agents、RAG、工具调用、响应式流、可观测性、非阻塞等主题)、integrations/(各模型与存储的集成说明)。

快速上手:依赖引入与最低环境要求

仓库内文档 docs/docs/get-started.md 给出了清晰的入门路径:

  • 最低 JDK 版本为 17
  • 每个集成对应一个独立的 Maven 依赖,按需引入。

以 OpenAI 为例,Maven 方式在pom.xml中声明:

<dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-open-ai</artifactId> <version>1.20.0</version> </dependency>

若需要使用高层的AI ServicesAPI,还需引入聚合主模块:

<dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j</artifactId> <version>1.20.0</version> </dependency>

Gradle 方式则对应为:

implementation 'dev.langchain4j:langchain4j-open-ai:1.20.0' implementation 'dev.langchain4j:langchain4j:1.20.0'

使用 BOM 统一版本管理

当引入多个模块时,推荐通过 Bill of Materials(BOM)统一版本。仓库根目录的 pom.xml 中声明了langchain4j-bom模块,get-started 文档给出了其用法:

<dependencyManagement> <dependencies> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-bom</artifactId> <version>1.20.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>

需要说明的是(源自 get-started 文档的注意事项):

  • langchain4j-bom始终包含所有 LangChain4j 模块的最新版本;
  • 由于部分模块仍处于 beta 版本(如当前仓库 pom 中langchain4j.stable.version1.21.0-SNAPSHOTlangchain4j.beta.version1.21.0-beta31-SNAPSHOT),这些模块后续可能存在破坏性变更(breaking changes),生产使用前应关注版本演进。

对于希望尝鲜最新特性的开发者,get-started 文档还提供了 SNAPSHOT 依赖的使用说明(从 Maven Central 的 SNAPSHOT 仓库拉取每日构建版本)。

源码级解析:统一 API 在代码中如何呈现

ChatModel:对话模型的核心契约

统一 API 的底层基石之一是 ChatModel 接口。从源码可见,它以ChatRequest作为统一入参、以ChatResponse作为统一出参,并提供了一系列便捷重载:

  • chat(ChatRequest):核心入口,执行对话请求;
  • chat(String userMessage):字符串消息的便捷版本,内部构造UserMessage并返回文本结果;
  • chat(ChatMessage...)/chat(List<ChatMessage>):多消息(含历史上下文)的便捷版本;
  • chatAsync(...):自 1.20.0 起提供的非阻塞异步版本,返回CompletableFuture

这种“一个接口 + 多个默认实现 + 便捷重载”的设计,正是 README 所强调的“为每个抽象提供接口与多个开箱即用实现”的直接体现——无论底层是 OpenAI、Anthropic 还是本地 Ollama,业务代码面对的都是同一个ChatModel契约。

OpenAiChatModel:厂商实现的典型范式

以 OpenAiChatModel 为例,可以看到厂商适配层的典型结构:通过 builder 模式收集apiKeymodelName(支持字符串与枚举OpenAiChatModelName)等参数,再在构造时统一装配。这意味着更换模型供应商时,只需把OpenAiChatModel.builder().apiKey(...).modelName(...).build()换成对应厂商的构造器,上层调用代码保持不变——这正是“无需重写业务代码即可切换模型”这一承诺的落地方式。

AI Services:把 LLM 调用变成接口方法

README 提到 LangChain4j 提供从底层提示词模板到高层 Agents/RAG 的完整工具箱,而 AI Services 正是其中最具特色的高阶抽象。AiServices 位于聚合模块langchain4j中,其源码(约 1360 行)展示了它如何把“接口 + 注解”变成可运行的 LLM 服务:

  • AiServices.create(Class<T> aiService, ChatModel chatModel):基于接口与模型创建 AI Service 实例;
  • AiServices.create(Class<T> aiService, StreamingChatModel streamingChatModel):流式版本;
  • 同时支持通过builder链式装配ChatMemory(记忆)、ToolProvider/Tool(工具调用)、RetrievalAugmentor(RAG 检索增强)、ContentRetriever(内容检索器)、InputGuardrail/OutputGuardrail(输入输出护栏)、ModerationModel(内容审核)、AiServiceListener(可观测性监听)等能力。

这种设计让开发者定义一个带注解的 Java 接口,即可获得:结构化输出解析、对话记忆自动管理、工具调用自动编排、RAG 上下文自动注入等一系列能力,而无需手写冗长的提示词拼接与调用循环。工具调用方面,service/tool包下的ToolExecutorToolProviderBeforeToolExecutionToolExecutionErrorHandler等类型构成了完整的工具执行与错误处理链路,配合langchain4j-mcp模块还可接入 MCP(Model Context Protocol)生态。

嵌入式模型与向量存储:RAG 的本地闭环

对于需要完全本地化推理的场景,仓库提供了langchain4j-embeddings-all-minilm-l6-v2langchain4j-embeddings-bge-small-zh-v15等进程内嵌入模型模块,以及InMemoryEmbeddingStore(见 langchain4j/src/main/java/dev/langchain4j/store/embedding/inmemory/InMemoryEmbeddingStore.java),可以在不依赖任何外部服务的情况下跑通“文本 → 向量 → 相似度检索”的完整 RAG 闭环,非常适合本地开发与原型验证。

仓库全景:模块化多仓库架构

从根 pom.xml 的<modules>声明可以完整还原这个多模块仓库的组织方式(当前版本为1.21.0-beta31-SNAPSHOT):

分类典型模块
核心langchain4j-core(392 个源码文件)、langchain4jlangchain4j-bomlangchain4j-kotlin(Kotlin 扩展)、langchain4j-test
模型提供商langchain4j-open-ailangchain4j-open-ai-officiallangchain4j-anthropiclangchain4j-google-ai-geminilangchain4j-vertex-ai等 20+
嵌入存储langchain4j-pineconelangchain4j-milvus-v2langchain4j-pgvectorlangchain4j-qdrantlangchain4j-elasticsearch等 30+
文档处理document-loaders/(S3、GitHub、Playwright、Selenium 等加载器)、document-parsers/(PDFBox、POI、Tika、Markdown、YAML)、document-transformers/(jsoup)
Agenticlangchain4j-agenticlangchain4j-agentic-mcplangchain4j-agentic-patternslangchain4j-agentic-a2alangchain4j-skillslangchain4j-mcplangchain4j-mcp-docker
HTTP 客户端langchain4j-http-client+ JDK/Apache/OkHttp 三种实现
可观测性langchain4j-observationlangchain4j-micrometer-metrics
代码执行code-execution-engines/(GraalVM Polyglot、Judge0、Azure ACADS)
实验特性experimental/(SQL、Hibernate、Shell Skills)

另外注意 pom.xml 中的两个 JDK 条件 profile:langchain4j-jlama需要 JDK 21+,langchain4j-gpu-llama3需要 JDK 25,说明部分模块对运行环境有额外要求,引入前需确认自己的 JDK 版本。

企业级框架集成:Java 生态的一等公民

README 明确指出,LangChain4j 与 Quarkus、Spring Boot、Helidon、Micronaut 等企业级 Java 框架提供一等公民(first-class)集成,这是它区别于 Python 生态库的重要特性。仓库内 docs/docs/tutorials 目录对应提供了quarkus-integration.mdspring-boot-integration.mdhelidon-integration.mdmicronaut-integration.mdpayara-micro-integration.md等教程文档,分别说明各框架下的依赖引入与配置方式。

示例项目方面(均在独立的示例仓库中):Quarkus 示例使用quarkus-langchain4j依赖,Spring Boot 示例位于 langchain4j-examples 仓库,Helidon 示例使用io.helidon.integrations.langchain4j依赖,Micronaut 示例使用micronaut-langchain4j依赖。这意味着你可以直接在自己熟悉的框架里以声明式方式使用 LangChain4j 的全部能力。

社区与贡献

README 为使用者提供了完整的社区路径:

  • 文档:仓库内 docs/docs 为 Docusaurus 站点源码,覆盖 get-started、tutorials、integrations 三大板块,另有实验性的文档问答机器人;
  • 获取帮助:通过 Discord 社区与 GitHub Discussions 提问;
  • 请求功能:通过 GitHub Issues 提交功能需求;
  • 贡献指南:详见仓库内的 CONTRIBUTING.md,代码规范方面还提供了 detekt.yml(Kotlin 静态分析)与check-split-packages.sh(包分片检查)等工程化工具。

总结

LangChain4j 的定位清晰且务实:一个为 JVM 生态从零设计的 LLM 集成库,用统一 API 抹平厂商差异,用完整工具箱覆盖从提示词模板到 Agents/RAG 的全栈需求,用一等公民式集成拥抱 Java 企业级框架,并配套大量示例与文档降低上手门槛。README 中那句“核心功能已就绪,你现在就可以开始构建 LLM 应用”并非虚言——从仓库中 130+ 模块、数千个源码与测试文件可以看出,这个项目正处于快速演进之中,适合作为 JVM 侧 LLM 应用的技术选型起点。

【免费下载链接】langchain4jLangChain4j is an idiomatic, open-source Java library for building LLM-powered applications on the JVM. It offers a unified API over popular LLM providers and vector stores, and makes implementing tool calling (including MCP support), agents and RAG easy. It integrates seamlessly with enterprise Java frameworks like Quarkus and Spring Boot.项目地址: https://gitcode.com/GitHub_Trending/la/langchain4j

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询