LangChain4j 比 SolonAI 強在哪?弱在哪?
LangChain4j 和 Solon AI 是 Java 生態中實現大模型應用開發的重要框架,但二者的區別是啥?生產級別又該使用哪種框架?令很多人犯了難,所以本文就來淺聊一下,希望給大家在技術選型時有一個簡單的參考。
一、功能對比
LangChain4j 和 Solon AI 的功能是比較類似的,甚至兩者可以配合使用,例如使用 Solon AI 實現 MCP 服務器端,再使用 LangChain4j 實現 MCP 客戶端調用 Solon AI,二者可以無縫對接。而且,都可以嵌入到任何第三方框架中使用。那二者的區別是啥呢?
| 接口或體驗 | LangChain4j | Solon AI |
|---|---|---|
| LLM 接口 | 有 | 有 |
| LLM 體驗 | 復雜 | 簡單 |
| RAG 接口 | 有 | 有 |
| RAG 體驗 | 復雜 | 簡單 |
| MCP 接口 | 有 | 有 |
| MCP 體驗 | 復雜 | 簡單 |
總體來說,LangChain4j 提供的功能更多,尤其是 RAG 方面,提供了更豐富的適配。
二、使用和學習成本
LangChain4j 的使用和學習成本比 Solon AI 高很多,舉個例子,例如 Solon AI 要實現流式對話,只需要一行代碼就搞定了:
@Produces("text/event-stream")
@Mapping("/streamChat")
public Flux<String> streamChat(String msg) {
return Flux.from(chatModel.stream(msg).map(resp -> resp.getContent()));
}
而 LangChain4j 實現步驟如下:
- 添加 langchain4j-reactor 依賴。
- 設置配置文件,配置 streaming-chat-model api-key 和 model-name。
- 創建 AI Service 并返回 Flux 對象。
- 調用 Ai Service 才能實現流式輸出。
類似的場景還有很多,例如 Solon AI 實現 MCP Client 只需要添加依賴,然后:
- 一行就構建 mcp 客戶端
- 一行 defaultToolsAdd 或 toolsAdd 設置就可以實現了與 llm 的整合
如下代碼:
McpClientProvider mcpTools = McpClientProvider.builder()
.channel(McpChannel.STREAMABLE)
.apiUrl("http://localhost:8080/mcp")
.build();
ChatModel chatModel = ChatModel.of("http://127.0.0.1:11434/api/chat") //使用完整地址(而不是 api_base)
.provider("ollama")
.model("llama3.2")
.defaultToolsAdd(mcpTools)
.build();
但 LangChain4j 的實現就非常復雜了,除了添加依賴之后,你還需要:
- 創建傳輸協議 McpTransport。
- 創建 MCP 客戶端 McpClient。
- 創建 Tools(提供者)對象 ToolProvider。
- 構建 AiService。
- 執行 MCP Server 調用。
具體實現代碼如下:
@Mapping("/chat")
public String chat(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 學習和使用成本是非常高的。
三、小結
如果是簡單功能、開發周期又緊可以使用 Solon AI;如果功能復雜,且定制型要求比較多,可以使用功能和靈活度更高的 LangChain4j。但使用 LangChain4j 這就意味著你需要忍受 LangChain4j 不夠簡潔的寫法,以及學習和使用成本比較高的問題。

浙公網安備 33010602011771號