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

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

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 特效与资源推荐
2024-11-19 00:43:31 +0800 CST
Golang Sync.Once 使用与原理
2024-11-17 03:53:42 +0800 CST
Golang 几种使用 Channel 的错误姿势
2024-11-19 01:42:18 +0800 CST
详解 Nginx 的 `sub_filter` 指令
2024-11-19 02:09:49 +0800 CST
使用Python提取图片中的GPS信息
2024-11-18 13:46:22 +0800 CST
从Go开发者的视角看Rust
2024-11-18 11:49:49 +0800 CST
markdown语法
2024-11-18 18:38:43 +0800 CST
Golang 中你应该知道的 Range 知识
2024-11-19 04:01:21 +0800 CST
网站日志分析脚本
2024-11-19 03:48:35 +0800 CST
Vue3 vue-office 插件实现 Word 预览
2024-11-19 02:19:34 +0800 CST
PHP来做一个短网址(短链接)服务
2024-11-17 22:18:37 +0800 CST
回到上次阅读位置技术实践
2025-04-19 09:47:31 +0800 CST
Python Invoke:强大的自动化任务库
2024-11-18 14:05:40 +0800 CST
随机分数html
2025-01-25 10:56:34 +0800 CST
程序员茄子在线接单