<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      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 不夠簡潔的寫法,以及學習和使用成本比較高的問題。

      posted @ 2025-10-21 09:52  帶刺的坐椅  閱讀(214)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久天堂综合亚洲伊人HD妓女| 中文无码热在线视频| 风流老熟女一区二区三区| 免费中文熟妇在线影片| 粉嫩小泬无遮挡久久久久久| 中文无码乱人伦中文视频在线| 亚洲最大成人在线播放| 国产欧美另类久久久精品不卡| 亚洲午夜福利网在线观看| 99精品国产一区二区三| 在线中文字幕国产精品| 毛片在线看免费| 东港市| 国产精品免费AⅤ片在线观看 | 18禁亚洲一区二区三区| 精品国产一区av天美传媒| av深夜免费在线观看| 日本欧美大码aⅴ在线播放| 青青草久热这里只有精品| 欧美乱大交xxxxx疯狂俱乐部| 日韩国产精品区一区二区| 国产99视频精品免费视频36| 高清自拍亚洲精品二区| 国产精品系列在线免费看| 成人国产精品中文字幕| 国产玩具酱一区二区三区| 亚洲精品日韩久久精品| 玖玖在线精品免费视频| 人妻中文字幕一区二区三| 毛片内射久久久一区| 国产精品久久久久久久专区| 高h纯肉无码视频在线观看| 国产精品一区二区三区日韩| 亚洲中文字幕无码中字| 国产不卡精品视频男人的天堂| 人妻在线无码一区二区三区| 亚洲AⅤ天堂AV天堂无码| 国产精品视频免费一区二区| 亚洲日韩久久综合中文字幕| 欧美xxxxhd高清| 亚洲成人www|