成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

LangChain4j比SpringAI強在哪?一文讀懂

人工智能
LangChain4j 和 Spring AI 的功能是比較類似的,甚至兩者可以配合使用,例如使用 Spring AI 實現 MCP 服務器端,再使用 LangChain4j 實現 MCP 客戶端調用 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 不夠簡潔的寫法,以及學習和使用成本比較高的問題。

責任編輯:姜華 來源: 磊哥和Java
相關推薦

2025-04-22 03:00:00

模型SpringAI

2024-05-20 02:00:00

LangChain人工智能

2025-04-07 08:40:00

開源Llama 4大模型

2025-05-06 08:21:35

2023-12-22 19:59:15

2021-08-04 16:06:45

DataOps智領云

2025-05-07 02:22:00

2022-09-22 09:00:46

CSS單位

2025-04-03 10:56:47

2018-09-28 14:06:25

前端緩存后端

2022-11-06 21:14:02

數據驅動架構數據

2022-10-20 08:01:23

2023-11-27 17:35:48

ComponentWeb外層

2022-12-01 17:23:45

2021-12-29 18:00:19

無損網絡網絡通信網絡

2022-07-26 00:00:03

語言模型人工智能

2022-07-05 06:30:54

云網絡網絡云原生

2023-05-20 17:58:31

低代碼軟件

2024-05-21 12:23:17

2020-12-30 09:05:24

架構微內核系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 青青草这里只有精品 | 一区二区不卡 | 99久久中文字幕三级久久日本 | 成人国产精品久久久 | 黄视频免费在线 | 蜜桃综合在线 | 久久久精品网站 | 天堂一区在线观看 | 日日干日日射 | 国产高清免费视频 | 青青草原精品99久久精品66 | 亚洲欧美一区二区三区1000 | 日韩av在线不卡 | 在线欧美视频 | 国产98色在线 | 日韩 | 黄色中文字幕 | 日韩在线中文 | 欧美偷偷操| 久久亚洲综合 | 日韩欧美国产精品一区二区 | 免费成人在线网站 | 日本高清在线一区 | 先锋资源网 | 国产中文字幕网 | 精品91久久久 | 国产精品久久久久久久久久久久久久 | jav成人av免费播放 | 成人精品| 精品视频在线一区 | 日日想夜夜操 | 亚洲国产精品va在线看黑人 | 天天操操| 亚洲综合一区二区三区 | 国产欧美精品一区二区三区 | 91国自产 | 国产成人精品高清久久 | 永久免费视频 | 天天爱天天操 | 久久久做| 四虎最新视频 | 日本一区二区三区四区 |