1. 引言
随着大语言模型(LLM)的快速发展,越来越多的开发者希望在自己的应用中集成 AI 能力。然而,直接调用模型 API 往往需要处理提示词拼接、上下文管理、工具调用、输出解析等一系列繁琐细节。LangChain4j 正是为解决这些问题而诞生的 Java 生态 AI 应用开发框架,它借鉴了 LangChain 的设计理念,并针对 Java 和 Android 开发者进行了深度优化。
2. 什么是 LangChain4j
LangChain4j 是一个开源的 Java 框架,旨在简化大语言模型驱动的应用开发。它提供了一套统一的抽象层,让开发者可以用简洁的代码完成模型调用、提示词管理、记忆存储、文档检索、工具调用等常见任务,从而把精力集中在业务逻辑上。
3. 核心特性
LangChain4j 的核心特性可以概括为以下几个方面:
- 统一模型抽象:支持 OpenAI、Google Gemini、Anthropic Claude、Ollama 本地模型等多种主流 LLM 提供商,切换模型只需修改配置。
- 提示词模板:内置灵活的提示词模板引擎,支持变量插值和条件逻辑,方便复用和动态生成提示词。
- 对话记忆管理:提供内存、数据库等多种持久化方案,自动维护多轮对话的上下文。
- 文档切分与检索:内置文本切分器和向量存储抽象,可快速搭建基于 RAG(检索增强生成)的知识库问答应用。
- AI 服务接口:通过注解定义接口,框架自动完成模型调用、参数绑定和结果映射,代码极其简洁。
- 工具调用:支持让模型调用 Java 方法,实现与外部系统、数据库、API 的交互。
4. 快速上手
下面通过一个最简单的示例,演示如何使用 LangChain4j 调用 OpenAI 模型完成文本生成。首先在项目中引入依赖:
xml
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>0.35.0</version>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
<version>0.35.0</version>
</dependency>
然后编写核心调用代码:
java
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
public class QuickStart {
public static void main(String[] args) {
ChatLanguageModel model = OpenAiChatModel.builder()
.apiKey("your-api-key")
.modelName("gpt-4o-mini")
.build();
String answer = model.generate("用一句话介绍 Java");
System.out.println(answer);
}
}
运行上述代码,即可在控制台看到模型生成的回答。可以看到,LangChain4j 将复杂的模型调用封装成了简单的方法调用,开发者无需关心 HTTP 请求、鉴权和流式解析等底层细节。
5. 构建 RAG 问答应用
RAG 是当前 AI 应用中最热门的模式之一,它通过检索外部知识库来增强模型的回答质量。LangChain4j 提供了完整的 RAG 支持,下面演示一个基于内存向量存储的简单问答流程。
java
import dev.langchain4j.data.document.Document;
import dev.langchain4j.data.document.splitter.DocumentSplitters;
import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import dev.langchain4j.model.embedding.AllMiniLmL6V2EmbeddingModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.rag.content.retriever.EmbeddingStoreContentRetriever;
import dev.langchain4j.service.AiServices;
import dev.langchain4j.store.embedding.EmbeddingStore;
import dev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore;
import java.util.List;
public class RagDemo {
interface Assistant {
String chat(String userMessage);
}
public static void main(String[] args) {
// 1. 准备文档并切分
Document document = Document.from("LangChain4j 是一个 Java 生态的 AI 应用开发框架......");
List<TextSegment> segments = DocumentSplitters.recursive(300, 50).split(document);
// 2. 构建向量存储并写入
EmbeddingStore<TextSegment> store = new InMemoryEmbeddingStore<>();
AllMiniLmL6V2EmbeddingModel embeddingModel = new AllMiniLmL6V2EmbeddingModel();
for (TextSegment segment : segments) {
store.add(embeddingModel.embed(segment.text()).content(), segment);
}
// 3. 组装 AI 服务
Assistant assistant = AiServices.builder(Assistant.class)
.chatLanguageModel(OpenAiChatModel.builder().apiKey("your-api-key").build())
.chatMemory(MessageWindowChatMemory.withMaxMessages(10))
.contentRetriever(EmbeddingStoreContentRetriever.builder()
.embeddingStore(store)
.embeddingModel(embeddingModel)
.build())
.build();
// 4. 提问
String answer = assistant.chat("LangChain4j 有哪些核心特性?");
System.out.println(answer);
}
}
在这个示例中,我们通过 AiServices 定义了一个简单的接口,框架自动完成了文档检索、上下文注入和模型调用的全流程,代码非常简洁。
6. 总结
LangChain4j 为 Java 开发者打开了一扇通往 AI 应用开发的大门。它既保留了 LangChain 的灵活设计,又充分考虑了 Java 生态的工程实践,让开发者能够以较低的学习成本快速构建出功能完整的 LLM 应用。无论是简单的文本生成,还是复杂的 RAG 问答、Agent 工具调用,LangChain4j 都提供了开箱即用的支持。如果你正在使用 Java 技术栈,并希望拥抱大模型时代,LangChain4j 是一个非常值得关注的选择。