编程 LangChain4j:把LangChain的能力带入Java世界,一个库搞定LLM集成、RAG、Agent

2026-04-16 19:11:21 +0800 CST views 41

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 应用的团队,这是一个值得认真研究的选项。


相关链接:

复制全文 生成海报 Java LangChain AI LLM RAG Agent 开源 工具调用

推荐文章

CSS 中的 `scrollbar-width` 属性
2024-11-19 01:32:55 +0800 CST
H5端向App端通信(Uniapp 必会)
2025-02-20 10:32:26 +0800 CST
robots.txt 的写法及用法
2024-11-19 01:44:21 +0800 CST
jQuery中向DOM添加元素的多种方法
2024-11-18 23:19:46 +0800 CST
vue打包后如何进行调试错误
2024-11-17 18:20:37 +0800 CST
Dropzone.js实现文件拖放上传功能
2024-11-18 18:28:02 +0800 CST
在 Vue 3 中如何创建和使用插件?
2024-11-18 13:42:12 +0800 CST
CSS 媒体查询
2024-11-18 13:42:46 +0800 CST
Redis函数在PHP中的使用方法
2024-11-19 04:42:21 +0800 CST
Golang在整洁架构中优雅使用事务
2024-11-18 19:26:04 +0800 CST
Python 基于 SSE 实现流式模式
2025-02-16 17:21:01 +0800 CST
Vue中的样式绑定是如何实现的?
2024-11-18 10:52:14 +0800 CST
Go 中的单例模式
2024-11-17 21:23:29 +0800 CST
一个收银台的HTML
2025-01-17 16:15:32 +0800 CST
Claude:审美炸裂的网页生成工具
2024-11-19 09:38:41 +0800 CST
解决 PHP 中的 HTTP 请求超时问题
2024-11-19 09:10:35 +0800 CST
程序员茄子在线接单