LangChain4j:把 LangChain 的能力带入 Java 世界,一个库搞定 LLM 集成、RAG、Agent
Python 开发者有 LangChain,那 Java 开发者怎么办?
LangChain4j 就是答案。它是 LangChain 的 Java 实现,让 Java / Kotlin 开发者也能用上与大模型交互的完整工具链:模型接入、Prompt 模板、工具调用、记忆管理、RAG 检索、工作流编排——一个库全部搞定。
GitHub: https://github.com/langchain4j/langchain4j
Stars: 5K+
协议: Apache 2.0
一、LangChain4j 是什么?
LangChain4j 的目标很简单:让 Java 开发者不需要学 Python,也能用上 LLM 应用开发的所有主流模式。
它不是简单的 API 包装,而是完整实现了 LangChain 的核心抽象:
LLM → Chat Model → Tool → Agent → Memory → RAG
从简单的问答到复杂的自主 Agent,LangChain4j 都有对应的 API。
二、核心功能
多模型支持
兼容 OpenAI、Anthropic Claude、Mistral、Google Gemini、通义千问、DeepSeek、Ollama(本地模型)等。一个 API 接口,切换模型不需要改业务代码。
// 接入 OpenAI
ChatLanguageModel model = OpenAiChatModel.builder()
.apiKey("your-api-key")
.modelName("gpt-4")
.build();
// 切换到 Claude,一行代码
ChatLanguageModel model = AnthropicChatModel.builder()
.apiKey("your-api-key")
.modelName("claude-3-sonnet")
.build();
AI Services(简化 API)
不想处理底层细节?AI Services 提供声明式的 Service 接口:
public interface MyAssistant {
@SystemMessage("你是一个专业的Java教程助手")
String answer(@UserMessage String question);
}
MyAssistant assistant = AiServices.builder(MyAssistant.class)
.chatLanguageModel(model)
.build();
String answer = assistant.answer("Java为什么要引入Stream API?");
工具调用(Function Calling)
Java 方法自动注册为 Tool,LLM 可以直接调用:
@Tool("查询库存")
int getInventory(@P("productId") String productId) {
return inventoryService.getStock(productId);
}
RAG(检索增强生成)
内置完整的 RAG 流水线:
// 文档分割
DocumentSplitter splitter = new DocumentSplitter(300, 50);
// 向量化并存储
EmbeddingStore<TextSegment> store = new InMemoryEmbeddingStore<>();
EmbeddingModel embeddingModel = new AllMiniLmL6V2EmbeddingModel();
// 检索 → 生成
Retriever<Content> retriever = new EmbeddingStoreRetriever(store, embeddingModel, UserMessage.class);
AiService service = AiServices.builder(MyAssistant.class)
.chatLanguageModel(model)
.retriever(retriever)
.build();
Memory(对话记忆)
内置多种 Memory 实现:TokenWindow(滑动窗口)、MessageWindow(全历史)、Simple(简易)。
Agent
内置 ReAct 风格的 Agent,支持 Tool Calling + Memory + 循环执行:
Agent executor = ReActAgent.builder()
.chatLanguageModel(model)
.tools(myTools)
.chatMemoryProvider(chatId -> MessageWindowChatMemory.forMaxTokens(1000))
.build();
三、快速上手
Maven 依赖
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
<version>1.0.0</version>
</dependency>
一个完整示例
public class QuickStart {
public static void main(String[] args) {
ChatLanguageModel model = OpenAiChatModel.builder()
.apiKey(System.getenv("OPENAI_API_KEY"))
.modelName("gpt-4")
.build();
MyAssistant assistant = AiServices.builder(MyAssistant.class)
.chatLanguageModel(model)
.build();
System.out.println(assistant.answer("什么是Java的CompletableFuture?"));
}
}
四、与 Spring AI 的关系
Spring AI 是 Spring 生态下的 AI 集成方案,LangChain4j 则更独立、更接近 LangChain 本身的设计哲学。LangChain4j 的优势在于:
- API 与 LangChain(Python)高度对应,文档互相参照方便
- 功能更新速度比 Spring AI 更快
- 社区活跃度高,持续迭代
五、总结
LangChain4j 让 Java 开发者终于不用眼巴巴地看着 Python 生态用 LangChain 了。它的 API 设计合理,功能覆盖完整,对于需要在大模型能力上构建 Java 应用的团队,这是一个值得认真研究的选项。
相关链接: