掘金 人工智能 05月06日 15:23
LangChain4j比SpringAI强在哪?一文读懂
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文对比了Java生态中LangChain4j和Spring AI这两个大模型应用开发框架。文章从功能、使用成本和Spring生态支持性三个方面进行了深入分析,旨在帮助开发者在技术选型时做出更明智的决策。总结了各自的优缺点,并提供了相应的建议。

💡 功能对比:LangChain4j在RAG等复杂功能实现上提供了更丰富的功能和更细粒度的模块定义,例如文本加载器、文档解析器等,更适合生产级业务。

💻 使用和学习成本:Spring AI在流式对话和MCP Client等场景下,代码实现更为简洁,学习成本较低。LangChain4j实现相同功能则更为复杂,文档也可能存在缺失或错误,学习成本较高。

🌱 Spring生态支持:Spring AI由Spring官方提供,对Spring生态支持更好,稳定性也更高。LangChain4j支持Spring、Java原生写法和Quarkus框架,但在Spring Boot自动装配和某些大模型支持方面不如Spring AI。

LangChain4j 和 Spring AI 是 Java 生态中实现大模型应用开发的两个最重要的框架,但二者的区别是啥?生产级别又该使用哪种框架?令很多人犯了难,所以本文就来浅聊一下,希望给大家在技术选型时有一个简单的参考。

1.功能对比

LangChain4j 和 Spring AI 的功能是比较类似的,甚至两者可以配合使用,例如使用 Spring AI 实现 MCP 服务器端,再使用 LangChain4j 实现 MCP 客户端调用 Spring AI,二者可以无缝对接。那二者的区别是啥呢?

总体来说,LangChain4j 提供的功能更多,例如实现 RAG 功能时,LangChain4j 提供了三种模式:

    简单模式原生模式高级模式

在后两种模式实现时提供了:

    文本加载器。文档解析器,可以实现多种文本格式的自动解析,例如PDF、DOC、TXT、MD、HTML 等格式的自动解析。文本转换器文本分割器

每个细节和模块的职责都定义的很清楚,所以实现复杂功能和生产级别业务时更推荐使用 LangChain4j

2.使用和学习成本

LangChain4j 的使用和学习成本比 Spring AI 高很多,举个例子,例如 Spring AI 要实现流式对话,只需要一行代码就搞定了:

@RequestMapping(value = "/streamChat", produces = "text/event-stream")public Flux<String> streamChat(@RequestParam(value = "msg") String msg) {    return chatModel.stream(msg);}

而 LangChain4j 实现步骤如下:

    添加 langchain4j-reactor 依赖。设置配置文件,配置 streaming-chat-model api-key 和 model-name。创建 AI Service 并返回 Flux 对象。调用 Ai Service 才能实现流式输出。

具体实现这里就不列举了,大家可以看出来 LangChain4j 的实现复杂度了吧?

类似的场景还有很多,例如 Spring AI 实现 MCP Client 只需要添加依赖,设置配置信息,然后一行 defaultTools 或 tools 设置就可以实现了,如下代码:

ChatClient.builder(chatModel)            .defaultTools(tools.getToolCallbacks())             .build();

但 LangChain4j 的实现就非常复杂了,除了添加依赖之后,你还需要:

    创建传输协议 McpTransport。创建 MCP 客户端 McpClient。创建 Tools(提供者)对象 ToolProvider。构建 AiService。执行 MCP Server 调用。

具体实现代码如下:

@RequestMapping("/chat")public String chat(@RequestParam String question) {    // 1.创建传输协议    McpTransport transport = new HttpMcpTransport.Builder()            .sseUrl("http://localhost:8686/sse")            .logRequests(true) // if you want to see the traffic in the log            .logResponses(true)            .build();    // 2.创建 MCP 客户端    McpClient mcpClient = new DefaultMcpClient.Builder()            .transport(transport)            .build();    // 3.创建 Tools(提供者)对象    ToolProvider toolProvider = McpToolProvider.builder()            .mcpClients(List.of(mcpClient))            .build();    // 4.构建 AiService    ToolsAiService aiService = AiServices.builder(ToolsAiService.class)            .chatLanguageModel(chatModel)            .toolProvider(toolProvider)            .build();    // 5.调用 MCP Server    return aiService.chat(question);}

小结

除了 LangChain4j 的使用复杂之外,LangChain4j 的文档也不全,要么是没有关键实现代码案例、要么是干脆文档写的都是错的,LangChain4j 的坑比较多,最后只能通过看最新的源码才能解决和使用相关功能,所以 LangChain4j 学习和使用成本是非常高的。

3.Spring 生态支持性

Spring AI 是由 Spring 官方提供的,所以它对于整个 Spring 生态的支持是更好的,而且稳定性更好;而 LangChain4j 除了支持 Spring 之外还支持 Java 原生写法,以及 Quarkus 框架,但 LangChain4j 整体对于 Spring 生态的支持就要差一些了,例如它里面的 ImageModel 都没有提供 Spring Boot 自动装配的实现,还有一些大模型例如智普 AI 根本没有提供 Spring Boot 的支持等。

小结

如果是简单功能、开发周期又紧可以使用 Spring AI;如果功能复杂,且定制型要求比较多,可以使用功能和灵活度更高的 LangChain4j。但使用 LangChain4j 这就意味着你需要忍受 LangChain4j 不够简洁的写法,以及学习和使用成本比较高的问题。

本文已收录到我的技术小站 www.javacn.site,其中包含的内容有:Spring AI、LangChain4j、MCP、Function Call、RAG、向量数据库、Prompt、多模态、向量数据库、嵌入模型等内容。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

LangChain4j Spring AI Java 大模型 框架对比
相关文章