Prompts-MCP 686 skills · ai / design / design-pattern / framework / fundamentals / habit / lang / tech-selection /mcp/sse
ai ai/llm-framework/spring-ai-vs-langchain4j.md medium

ai-spring-ai-vs-langchain4j

Java LLM 框架 Spring AI 与 LangChain4j 选型 — 定位差异、各自适用栈、多模型对接与 MCP 支持,按贴合现有栈选。Use when 选 Java LLM 框架 / 评审 Spring AI 或 LangChain4j 选型时。

llm 框架选型框架贴合栈spring ailangchain4jchatclientmcp 支持
paths
  • *.java
  • *.py
  • *.md

Java LLM 框架 · Spring AI vs LangChain4j

两者均 2025-05 GA、均支持 MCP。本条只回答「该选哪个框架」。向量库选型见 ../vector-db/index.md;RAG 工程规范见 ../rag/index.md

对比表

维度 Spring AI LangChain4j
定位 Spring 生态原生 框架无关的 Java 工具箱
最佳栈 Spring Boot Quarkus / 任意 Java / 要最大灵活
集成方式 auto-config / DI / Actuator 开箱 轻量可插拔,供应商覆盖最广
RAG ETL + QuestionAnswerAdvisor DocumentSplitter/EmbeddingStore/ContentRetriever 细粒度
Agent Advisor+Tool,AutoMemoryTools 持久记忆 langchain4j-agentic / a2a
多模型对接 各家 starter,统一 ChatClient 各家 module,覆盖最广
MCP MCP Server/Client Boot Starter MCP Client(Streamable HTTP + stdio)

选型决策

你的现状
已是 Spring Boot 项目 Spring AI(auto-config/DI 顺滑,统一 ChatClient)
Quarkus / 非 Spring / 要最广供应商覆盖 LangChain4j(框架无关、模块化)
要细粒度控制 RAG 各环节 LangChain4j(splitter/store/retriever 可单独替换)
要 Spring 风格 RAG 流水线 + Actuator 可观测 Spring AI

核心规约:按**「贴合现有栈」**选,不是「谁更强」。两者能力高度对齐,错配技术栈带来的胶水成本远大于框架本身差异。

正例:Spring AI 调用(流水线编排风格)

// 业务方法写成编排器:前置校验早返回 / 每步一调用 / 中间变量 final
public AnswerVO ask(AskReq req) {
    // 前置校验
    if (req == null || !StringUtils.hasText(req.getQuestion())) {
        log.warn("ask req or question is blank");
        return null;
    }

    // 步骤1:检索上下文(向量库召回,逻辑下沉 retriever)
    final List<Document> context = retriever.retrieve(req.getQuestion());

    // 步骤2:调用模型,附上下文 advisor
    final String reply = chatClient.prompt()
            .user(req.getQuestion())
            .advisors(new QuestionAnswerAdvisor(vectorStore))
            .call().content();

    // 步骤3:组装返回
    return AnswerConvert.INSTANCE.toVO(reply, context);
}

反例

  • ❌ Spring Boot 项目硬塞 LangChain4j 又手写一套 DI 胶水 → 放弃了 auto-config,徒增维护面。
  • ❌ 以「谁基准跑分高」拍板 → 两者本质都封装同一批模型 API,跑分差异被错配栈的成本淹没。

自检

  • [ ] 选型依据是「贴合现有栈」而非「谁更强」?
  • [ ] Spring Boot 项目优先评估了 Spring AI?非 Spring 优先 LangChain4j?
  • [ ] 确认目标框架支持你需要的模型供应商与 MCP 角色(Server/Client)?
  • [ ] 给的业务方法遵循流水线编排(早返回 / 每步一调用 / final)?

相关