【第三部分:第一个 Agent 应用】11.Spring AI、LangChain4j、LangGraph 到底帮我们封装了什么?

简介: 本文承接“手写最小 Agent”,从框架抽象层级出发,分析 Spring AI、LangChain4j、LangGraph 等主流 Agent Framework 究竟封装了什么。Spring AI 更适合将 AI 能力融入 Spring 应用,LangChain4j 强调 Java Service 化与类型化开发,LangGraph 则擅长状态、分支、循环、检查点和长任务编排。文章同时结合 Qwen-Agent、AgentScope 等国内开源框架,说明 Agent Framework 并没有改变 Agent Loop 的本质,而是在其外围补齐 Memory、RAG、State、Retry、

上一篇,我们没有使用任何 Agent Framework,而是手写了一个最小 Agent,最终把 Agent 的核心压缩成一句话:Model → Action → Observation → Model。那段代码并不复杂,但只要继续往真实项目推进,很快就会遇到新的问题:Messages 越来越长怎么办?Tool 越来越多怎么管理?任务中断如何恢复?RAG 放在哪里?如何做流式输出、人工审批、重试和 Trace?多个 Agent 又该怎样协作?这也是 Agent Framework 出现的原因。

因此这一篇不准备逐个介绍框架 API,而是从上一篇的最小 Agent 出发,看看 Spring AI、LangChain4j、LangGraph,以及 Qwen-Agent、AgentScope 等框架,究竟替我们封装了什么。


一、框架没有改变 Agent Loop,只是在它周围增加了工程能力

上一篇的最小 Agent 大致只有:Messages、Tool Map、LLM Client、Agent Loop、try / catch。进入真实项目以后,它会逐渐演进成:

Messages➜Context / Memory / State;

Tool Map-➜Tool Registry;

LLM Client➜Model Adapter / Model Gateway;

while Loop➜Agent Runtime / Graph;

try / catch ➜Retry / Recovery;

日志 ➜Trace / Observability。

再继续增加:RAG、Checkpoint、Human-in-the-Loop、Streaming、Permission、MCP、Multi-Agent。最终才成为我们今天看到的各种 Agent Framework。所以判断一个框架,不应该只问:“能不能创建 Agent?”而应该继续问:它在 Agent Loop 的哪个层次替我做了什么?

image.gif


二、先看 Spring AI:更像 Spring 应用里的 AI 基础设施

对于 Java / Spring Boot 开发者,Spring AI 通常是比较自然的入口。它并不是简单提供一个:agent.run(...)。然后隐藏所有细节,而是把模型、Tool、RAG、Structured Output、Vector Store 等能力按照 Spring 的方式组织起来。例如上一篇手写的:调用模型➜发现 Tool Call ➜找到 Tool➜

执行 Tool➜Tool Result 写回 Messages➜再次调用模型。在 Spring AI 当前实现中,可以由 ToolCallingAdvisor 管理。官方文档描述的流程正是:

  1. 将 Tool Definition 一起发送给模型;
  2. 模型返回 Tool Call;
  3. ToolCallingManager 查找并执行对应 Tool;
  4. Tool Result 追加到对话历史;
  5. 再次请求模型;
  6. 直到模型不再产生 Tool Call。

也就是说,上一篇我们手写的 Agent Loop,框架已经封装掉了。程序更多只需要定义:

@Tool
public Weather getWeather(String city) {
    return weatherService.query(city);
}

image.gif

然后:

chatClient.prompt()
    .user(userInput)
    .tools(weatherService)
    .call()
    .content();

image.gif

这里最重要的不是 API 少了几行,而是:Tool Schema 生成、Tool Call 匹配、执行结果回填和循环请求,都可以由框架统一管理。Spring AI 同时已经提供 Model、Vector Store、Structured Output、Tool Calling 等统一抽象,因此它非常适合已有 Spring Boot 业务系统逐步增加 AI 能力。


三、Spring AI 更适合什么场景?

如果一个项目本身就是:Java 21+Spring Boot+Redis+PostgreSQL+企业业务 API。那么 Spring AI 最大的优势并不是“Agent 能力最复杂”,而是:AI 能力可以自然进入现有 Spring 应用。例如:

OrderService
DocumentService
KnowledgeService
        ↓
      @Tool
        ↓
    Spring AI
        ↓
       LLM

image.gif

已有业务 Service 很容易变成 Agent 可以使用的 Tool。RAG 也可以通过:Document➜Embedding➜Vector Store➜Retriever➜ChatClient。进入现有系统。因此 Spring AI 更像:Spring 应用里的 AI Application Framework。它特别适合:

  • Java 企业应用;
  • 已有 Spring Boot 系统增加 AI;
  • Tool Calling;
  • RAG;
  • Structured Output;
  • Workflow + Agent 混合应用。

如果要开发复杂的长任务状态机,则还需要继续组合状态管理和编排能力。


四、LangChain4j:把 AI 能力进一步封装成 Java Service

LangChain4j 的思路与 Spring AI 又有些不同。它同时提供低层 API:ChatModel、ChatMessage、EmbeddingStore、Tool。和更高层的:AI Services。官方文档明确说明,低层组件虽然灵活,但开发者需要自己处理大量组合逻辑;AI Services 的目标则是把模型、Prompt、Memory、Tool、RAG 等能力隐藏在一个类似普通 Java Service 的接口后面。例如:

interface Assistant {
    String chat(String message);
}

image.gif

然后:

Assistant assistant =
    AiServices.builder(Assistant.class)
        .chatModel(model)
        .tools(new BusinessTools())
        .build();

image.gif

调用时:

assistant.chat(
    "查询上海天气并计算出差费用"
);

image.gif

看起来已经非常接近普通 Java 方法。但内部实际上仍然是:User Message➜ChatModel➜Tool Call➜执行 Java Method➜Tool Result➜ChatModel➜Final Answer。LangChain4j 的 AI Services 会自动执行通过 @Tool 暴露的方法,再把结果交回模型继续生成。


五、LangChain4j 最大的特点是“Java 类型化”

如果说 Spring AI 更强调:Spring 生态整合。那么 LangChain4j 一个很明显的特点是:尽量把 AI 开发变成普通 Java 开发。例如:

interface RequirementAgent {
    RequirementResult analyze(
        String requirement
    );
}

image.gif

开发者关注的是:输入类型、输出类型、Tool、Memory、RAG。而不是每一次模型请求具体怎样拼 JSON。AI Services 还能组合:Chat Memory、Tools、RAG、Output Parsing。这些正是上一篇最小 Agent 继续扩展以后必然会遇到的能力。因此,对于希望:保持 Java 编程模型、减少 AI SDK 胶水代码的项目,LangChain4j 非常有吸引力。


六、Spring AI 和 LangChain4j 怎么选?

两者在 Java 生态中存在明显重叠,因此经常被放在一起比较。可以先做一个非常粗略的区分:

维度 Spring AI LangChain4j
核心定位 Spring AI 应用基础设施 Java LLM / Agent 开发框架
与 Spring Boot 非常自然 支持 Spring Boot
编程风格 ChatClient / Advisor / Bean AI Services / Java Interface
Tool 强 强
RAG 强 强
Structured Output 强 强
Memory 可组合 原生抽象较清晰
Java 类型化体验 强 很突出
适合 Spring 企业应用 Java AI 应用

因此并不存在简单的:Spring AI 好还是 LangChain4j 好?更实际的问题应该是:你的应用更需要 Spring 生态的一致性,还是希望以 AI Service 为中心组织 Agent 能力?


七、为什么有了这些框架,还需要 LangGraph?

假设现在用户提出:

分析一份需求文档,如果信息不足先提问;信息完整后生成需求条目,再做质量检查,低于 80 分重新修改,高于 80 分提交人工确认。

image.gif

这里开始出现:状态、节点、条件分支、循环、中断和恢复。这就是 LangGraph 更擅长的领域。


八、LangGraph 的核心不是“再封装一次 Agent”,而是状态图

LangGraph 官方目前将自己定义为:用于构建长任务、状态化 Agent 的低层编排框架和 Runtime。它重点解决的是:

  • Durable Execution;
  • State;
  • Persistence;
  • Streaming;
  • Human-in-the-Loop;
  • 长任务恢复。

官方甚至明确说明,如果只是需要简单 Agent,可以优先使用更高层的 LangChain Agent;LangGraph 更适合需要深度定制 Agent 编排的场景。它的核心思路可以理解为:

image.gif 编辑

这里 Agent Loop 已经不再只是一个简单的:while(...)。而是被明确建模成:State Graph。


九、从上一章的 while Loop 到 LangGraph

上一篇:

while 任务未完成:
    model()
    tool()

image.gif

优点是简单。但复杂以后:

if
else
retry
pause
resume
human approval

image.gif

全部写进一个 Loop,很快会失控。LangGraph 相当于把:while / if / else 升级成:State+Node+
Edge+Checkpoint
。因此可以这样理解:简单 Agent 的核心是 Loop,复杂 Agent 的核心往往变成 State + Loop。这也是为什么本系列下一篇还会专门介绍:使用状态机开发一个可控 Agent。这一篇只需要先建立这个认识。


十、三个框架其实处于不同抽象层级

把 Spring AI、LangChain4j 和 LangGraph 放在同一张图里,就更容易理解。

image.gif


十一、国内开源 Agent 框架也在快速演进

除了这些国际上使用较多的框架,国内开源 Agent 生态这两年也发展得非常快。其中比较典型的是 DeepSeek Harness、Qwen-Agent等。其中Qwen-Agent 是通义千问团队开源的 Agent Framework,目前已经支持:Tool Calling、Planning、Memory、RAG、Code Interpreter、MCP。官方项目还提供 Browser Assistant、Code Interpreter 等示例,并且 Qwen-Agent 已作为 Qwen Chat 的后端运行。其 Agent 抽象同样把:Messages+LLM+Tools+Agent Loop。组合到更高层的 Assistant 中。例如:

bot = Assistant(
    llm=llm_cfg,
    function_list=tools
)

image.gif

然后:

bot.run(messages=messages)

image.gif

Qwen-Agent 内部已经封装了 Tool Calling 模板、Tool Calling Parser 等逻辑,因此使用 Qwen 系列模型开发工具型 Agent 时,代码量会明显下降。


十二、AgentScope:从 Agent 开发继续走向多 Agent 和 Runtime

另一个值得关注的国内开源项目是 AgentScope。AgentScope 2.0 在 2026 年已经进一步扩展到:

  • ReAct Agent;
  • Tools;
  • Skills;
  • Memory;
  • Planning;
  • Human-in-the-Loop;
  • RAG;
  • Agent Team;
  • MCP;
  • A2A;
  • Observability。

官方将其定位为面向生产场景的 Agent Framework,并提供多 Agent 编排、工具、记忆、RAG、评估和部署等能力。这实际上又比我们上一篇的最小 Agent 向前走了一大步:Minimal Agent➜Tool Agent➜Stateful Agent➜Agent Team➜Agent Runtime。因此国内 Agent 项目也正在经历类似的演进:从“调用模型”逐渐走向“管理 Agent 的完整生命周期”。


十三、那么今天开发 Agent,应该选哪个框架?

没有一个框架适合所有项目。如果用最简单的方式分类,可以这样选择。

Java / Spring 企业应用

优先考虑:Spring AI

特别适合:已有 Spring Boot+业务 Service+数据库+企业 API+AI 能力


Java 为主,希望 AI 编程模型更加类型化

可以重点考虑:LangChain4j

尤其适合:Java Interface+Tool+Memory+RAG+结构化结果


Python + 复杂 Agent 工作流

可以重点考虑:LangGraph

特别是涉及:State、Checkpoint、循环、条件分支、人工审批、长任务、恢复的系统。


多 Agent 与生产 Runtime

可以继续关注:AgentScope

特别适合希望进一步探索:Agent Team、Memory、Tool、MCP / A2A、Evaluation、Observability、Deployment的场景。


十四、真正重要的不是学多少框架,而是理解它们封装了哪一层

如果没有上一篇手写 Agent 的基础,第一次看到:assistant.chat(...)或者:agent.invoke(...)。很容易产生一种错觉:Agent 是框架创建出来的。但现在我们已经知道:它内部仍然在处理:Messages➜Model➜Tool Call➜Tool Execute➜Tool Result➜Context➜Model。框架只是继续增加:Memory、RAG、State、Workflow、Retry、Streaming、Checkpoint、Tracing、Approval、Multi-Agent。因此学习一个 Agent Framework 时,可以固定问几个问题:Model 在哪里?Messages / State 存在哪里?Tool 如何注册?谁负责 Agent Loop?Tool Result 怎样进入下一轮?任务如何结束?任务失败怎样恢复?执行轨迹怎样记录?只要这些问题能够回答清楚,就基本理解了这个框架真正的设计。


十五、框架不是越重越好

还有一个需要特别强调的问题。一个任务如果只是:用户➜Model➜Tool➜Model。完全没有必要为了“Agent 化”就引入:State Graph+Multi-Agent+Checkpoint+Distributed Runtime。反过来,如果任务包含:几十个步骤、人工确认、长时间运行、复杂状态、失败恢复、多角色协作。继续坚持几十行 while Loop,也会逐渐变成维护灾难。因此选择框架真正应该依据:任务复杂度,而不是框架热度。这仍然符合本系列前面一直强调的原则:能用简单方案解决的问题,不应该为了使用 Agent 而过度设计。


十六、小结

上一篇我们亲手写出了:Model➜Action➜Observation➜Model。这一篇进一步看到:主流 Agent Framework 并没有改变这个核心闭环。它们真正做的是把闭环外面的工程问题逐步封装起来。可以简单概括为:

  1. Spring AI→ 把 AI 能力融入 Spring 应用
  2. LangChain4j→ 把 AI 能力封装成 Java Service
  3. LangGraph→ 把复杂 Agent 建模成可持久运行的 State Graph
  4. Qwen-Agent→ 封装 Qwen 的 Tool / RAG / MCP 等 Agent 能力
  5. AgentScope→ 向多 Agent、Runtime、评估和生产部署扩展

因此:Framework 决定我们怎样开发 Agent,但 Agent Loop 才决定 Agent 怎样运行。理解这一点以后,就不会把框架 API 当成 Agent 本身。我们真正需要掌握的仍然是:Model、Context、Tool、State、Loop以及它们之间的关系。

上一篇回顾:

https://developer.aliyun.com/article/1757224?spm=a2c6h.13148508.setting.16.49264f0eBcBIGq

下一篇将继续向前一步:使用状态机开发一个可控 Agent

因为当任务从:Model → Tool → Model 逐渐变成:

判断
→ 分支
→ 循环
→ 暂停
→ 人工审批
→ 恢复

image.gif

简单的 Agent Loop 就开始显得不够用了。这时真正需要解决的问题,不再只是:Agent 下一步做什么?而是:怎样让 Agent 的每一步都处于一个明确、可恢复、可控制的状态中?这也将是从简单 Agent 继续走向生产级 Agent 的下一道门槛。

相关文章
|
3月前
|
人工智能 Java 程序员
Spring AI 2.0正式GA、LangChain4j 1.19发布:Java程序员做AI,为什么不用转Python?
2026年,Java AI生态全面成熟:Spring AI 2.0定位“AI世界的JDBC”,LangChain4j、AgentScope、Solon AI等框架齐备;Spring官方携手DeepSeek,Jakarta推出Agentic AI规范。Java程序员无需转Python,用原有工程能力即可高效开发、集成与编排AI应用。
|
3月前
|
人工智能 前端开发 Java
【第三部分:第一个 Agent 应用】10. 不使用框架,手写一个最小 Agent
本文通过手写一个最小 Agent,拆解 Agent Loop 的核心机制:模型基于 Messages 判断下一步,必要时通过 Function Calling 选择 Tool,程序执行后将 Tool Result 作为 Observation 写回上下文,再次交给模型继续决策,直到任务完成。文章结合天气查询与计算示例,说明终止条件、异常处理和执行轨迹的重要性,并进一步对照 DeepSeek Harness,展示最小 Loop 如何逐步演进为具备 Session、Tool Registry、权限、恢复和可观测能力的 Agent Runtime。
310 2
|
3月前
|
人工智能 算法 API
【第二部分:大模型应用开发基础】9. RAG 是什么,它与 Agent 有什么关系?——从知识库问答到 Agentic RAG
RAG 通过文档解析、切分、Embedding、混合检索、Rerank 与引用机制,让大模型在回答问题时能够按需获取企业知识,而不是依赖训练数据“记住一切”。文章进一步介绍 RAG 如何从固定的检索增强生成流程演进到 Agentic RAG:由 Agent 判断是否需要检索、如何规划 Query、证据是否充分,并在必要时继续改写和多轮检索。同时梳理 RAG、Memory、Tool 与 Agent 的边界,强调知识库问答系统并不等同于 Agent,RAG 只是 Agent 获取外部知识的一种能力。
415 2
|
3月前
|
人工智能 JSON Java
LangChain4j 入门:ChatModel 第一个 AI 对话实战
LangChain4j 入门必读:Java 生态的大模型框架。从依赖配置到 ChatModel 第一个对话,再讲清 SystemMessage 与多模态输入。
335 0
|
2月前
|
自然语言处理 搜索推荐 关系型数据库
【第三部分:第一个 Agent 应用】12. 使用状态机开发一个可控 Agent
本文围绕“使用状态机开发一个可控 Agent”展开,以需求分析 Agent 为例,介绍 State、Node、Edge、Conditional Edge、Checkpoint、Interrupt、Resume 与 Human-in-the-Loop 等核心机制,并通过 LangGraph 代码说明如何把自由 Agent Loop 收束为可分支、可循环、可暂停、可恢复的业务流程。核心思想是:状态机负责确定性的流程控制,Agent 负责节点内部的理解、推理、RAG 与 Tool 调用,实现“确定性的骨架 + 概率性的智能”。
249 1
|
30天前
|
设计模式 SQL 安全
【第三部分:第一个 Agent 应用】14. 开发一个完整的企业知识助手:从 RAG 到 Agent
本文以企业知识助手为综合实践,整合 RAG、Agentic RAG、Tool Calling、MCP、Memory、State、Structured Output、权限控制、引用溯源与 Trace/Eval 等能力,说明企业知识助手如何从“知识库问答”升级为能够连接业务系统、理解上下文并执行真实任务的 Enterprise Agent。文章重点介绍权限感知检索、Metadata、业务 Tool、长期记忆、人工确认和可观测评估等生产级能力,并结合 BaseMetas EKA 架构说明企业知识与 Agent 如何协同落地。
285 0
|
2月前
|
人工智能 API 语音技术
技术实践|端云协同的百炼语音AI软件开发套件
Qwen-Audio-3.0移动端SDK是覆盖Android、iOS、HarmonyOS的语音AI套件,以C++为核心,提供可自由组合的原子能力(KWS、AEC、VAD、TTS等),通过统一API连接百炼云端ASR/TTS/Realtime等大模型,支持实时识别、合成、对话、翻译等场景。
651 4
|
3月前
|
设计模式 Web App开发 人工智能
【AI】Agent 全栈进阶|系统化学习路线专题
描述 Agent 的概念、核心构成,规划出一套循序渐进的 Agent 开发学习路径,从大模型调用、工具调用、RAG、运行模式、记忆机制再到工程化调试,同时附上多款适合入门钻研的开源参考项目
2462 7
|
2月前
|
SQL 人工智能 测试技术
【AI时代软件项目管理系列】6.AI 参与软件项目,边界和责任怎么定?从“能做”到“可控执行”
AI 进入软件项目后,真正需要解决的不只是“能不能做”,而是“能做到哪一步、什么结果可以生效、最终由谁负责”。项目应围绕数据、工具、执行和输出四类边界进行治理:限制 AI 可访问的信息与工具范围,按风险控制执行权限,并通过自动验证、人工审核和项目基线形成责任闭环。成熟的人机协同不是让 Agent 权限越大越好,而是在明确边界下提升执行效率,同时保证结果可验证、过程可追溯、责任有人承担。
207 2
|
人工智能 监控 Java
构建定时 Agent,基于 Spring AI Alibaba 实现自主运行的人机协同智能 Agent
借助 Spring AI Alibaba 框架,开发者可快速实现定制化自动定时运行的 Agent,构建数据采集、智能分析到人工参与决策的全流程AI业务应用。
2926 108