自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android圖片處理避坑指南:讓Bitmap不再拖垮你的APP

移動開發(fā) Android
如果是簡單功能、開發(fā)周期又緊可以使用 Spring AI;如果功能復(fù)雜,且定制型要求比較多,可以使用功能和靈活度更高的 LangChain4j。但使用 LangChain4j 這就意味著你需要忍受 LangChain4j 不夠簡潔的寫法,以及學(xué)習(xí)和使用成本比較高的問題。

LangChain4j 和 Spring AI 是 Java 生態(tài)中實現(xiàn)大模型應(yīng)用開發(fā)的兩個最重要的框架,但二者的區(qū)別是啥?生產(chǎn)級別又該使用哪種框架?令很多人犯了難,所以本文就來淺聊一下,希望給大家在技術(shù)選型時有一個簡單的參考。

一、功能對比

LangChain4j 和 Spring AI 的功能是比較類似的,甚至兩者可以配合使用,例如使用 Spring AI 實現(xiàn) MCP 服務(wù)器端,再使用 LangChain4j 實現(xiàn) MCP 客戶端調(diào)用 Spring AI,二者可以無縫對接。那二者的區(qū)別是啥呢?

總體來說,LangChain4j 提供的功能更多,例如實現(xiàn) RAG 功能時,LangChain4j 提供了三種模式:

  1. 簡單模式
  2. 原生模式
  3. 高級模式

在后兩種模式實現(xiàn)時提供了:

  1. 文本加載器。
  2. 文檔解析器,可以實現(xiàn)多種文本格式的自動解析,例如PDF、DOC、TXT、MD、HTML 等格式的自動解析。
  3. 文本轉(zhuǎn)換器
  4. 文本分割器

每個細節(jié)和模塊的職責(zé)都定義的很清楚,所以實現(xiàn)復(fù)雜功能和生產(chǎn)級別業(yè)務(wù)時更推薦使用 LangChain4j。

二、使用和學(xué)習(xí)成本

LangChain4j 的使用和學(xué)習(xí)成本比 Spring AI 高很多,舉個例子,例如 Spring AI 要實現(xiàn)流式對話,只需要一行代碼就搞定了:

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

而 LangChain4j 實現(xiàn)步驟如下:

  1. 添加 langchain4j-reactor 依賴。
  2. 設(shè)置配置文件,配置 streaming-chat-model api-key 和 model-name。
  3. 創(chuàng)建 AI Service 并返回 Flux 對象。
  4. 調(diào)用 Ai Service 才能實現(xiàn)流式輸出。

具體實現(xiàn)這里就不列舉了,大家可以看出來 LangChain4j 的實現(xiàn)復(fù)雜度了吧?

類似的場景還有很多,例如 Spring AI 實現(xiàn) MCP Client 只需要添加依賴,設(shè)置配置信息,然后一行 defaultTools 或 tools 設(shè)置就可以實現(xiàn)了,如下代碼:

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

但 LangChain4j 的實現(xiàn)就非常復(fù)雜了,除了添加依賴之后,你還需要:

  1. 創(chuàng)建傳輸協(xié)議 McpTransport。
  2. 創(chuàng)建 MCP 客戶端 McpClient。
  3. 創(chuàng)建 Tools(提供者)對象 ToolProvider。
  4. 構(gòu)建 AiService。
  5. 執(zhí)行 MCP Server 調(diào)用。

具體實現(xiàn)代碼如下:

@RequestMapping("/chat")
public String chat(@RequestParam String question) {
    // 1.創(chuàng)建傳輸協(xié)議
    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.創(chuàng)建 MCP 客戶端
    McpClient mcpClient = new DefaultMcpClient.Builder()
            .transport(transport)
            .build();
    // 3.創(chuàng)建 Tools(提供者)對象
    ToolProvider toolProvider = McpToolProvider.builder()
            .mcpClients(List.of(mcpClient))
            .build();
    // 4.構(gòu)建 AiService
    ToolsAiService aiService = AiServices.builder(ToolsAiService.class)
            .chatLanguageModel(chatModel)
            .toolProvider(toolProvider)
            .build();
    // 5.調(diào)用 MCP Server
    return aiService.chat(question);
}

小結(jié)

除了 LangChain4j 的使用復(fù)雜之外,LangChain4j 的文檔也不全,要么是沒有關(guān)鍵實現(xiàn)代碼案例、要么是干脆文檔寫的都是錯的,LangChain4j 的坑比較多,最后只能通過看最新的源碼才能解決和使用相關(guān)功能,所以 LangChain4j 學(xué)習(xí)和使用成本是非常高的。

三、Spring 生態(tài)支持性

Spring AI 是由 Spring 官方提供的,所以它對于整個 Spring 生態(tài)的支持是更好的,而且穩(wěn)定性更好;而 LangChain4j 除了支持 Spring 之外還支持 Java 原生寫法,以及 Quarkus 框架。

但 LangChain4j 整體對于 Spring 生態(tài)的支持就要差一些了,例如它里面的 ImageModel 都沒有提供 Spring Boot 自動裝配的實現(xiàn),還有一些大模型例如智普 AI 根本沒有提供 Spring Boot 的支持等。

小結(jié)

如果是簡單功能、開發(fā)周期又緊可以使用 Spring AI;如果功能復(fù)雜,且定制型要求比較多,可以使用功能和靈活度更高的 LangChain4j。但使用 LangChain4j 這就意味著你需要忍受 LangChain4j 不夠簡潔的寫法,以及學(xué)習(xí)和使用成本比較高的問題。


責(zé)任編輯:武曉燕 來源: 沐雨花飛碟
相關(guān)推薦

2020-06-12 11:03:22

Python開發(fā)工具

2020-08-26 07:37:25

Nacos微服務(wù)SpringBoot

2023-11-01 15:32:58

2024-04-24 13:45:00

2024-04-03 12:30:00

C++開發(fā)

2021-02-26 00:46:11

CIO數(shù)據(jù)決策數(shù)字化轉(zhuǎn)型

2025-04-10 08:21:17

2020-12-16 10:00:59

Serverless數(shù)字化云原生

2021-02-22 17:00:31

Service Mes微服務(wù)開發(fā)

2021-05-08 12:30:03

Pythonexe代碼

2023-05-24 10:06:42

多云實踐避坑

2021-05-07 21:53:44

Python 程序pyinstaller

2022-03-04 18:11:16

信服云

2018-01-20 20:46:33

2021-04-28 09:26:25

公有云DTS工具

2019-02-12 15:07:42

屏幕參數(shù)PC

2018-03-26 11:14:13

程序猿bug代碼

2019-04-24 17:45:24

微服務(wù)容器青云

2020-09-13 09:19:10

LinuxPython3.6

2024-03-28 12:51:00

Spring異步多線程
點贊
收藏

51CTO技術(shù)棧公眾號