开发实践 / Spring AI 实战

Spring AI 2.0,这个系列我想重新写了

Spring AI 系列的学习路线:从模型调用与工具执行开始,逐步理解记忆、RAG、MCP 和业务 Agent。

有段时间没写 Spring AI 了。

去年前后写了 21 篇。开头是 Chat Memory、Advisors 和 RAG,后来又写了 React Agent、Spring AI Alibaba,还有 Nacos 动态 Prompt。

写着写着,这个系列就停了。

最近我又打开了 Spring AI 的文档。官方稳定文档现在已经到 2.0.1,底层基线换成了 Spring Boot 4。Tool Calling、MCP、Agent 这几块,也都有了新写法。

看完一圈,我还是想把这个系列捡起来。

先把写法改一下#

上一轮的一些文章,现在回头看,功能点整理得比较多。代码也放了不少,可读者看完一篇,心里未必会留下一个清楚的结论。

这次先给自己定个规矩:一篇文章,只讲清一个问题。

写 Tool Calling,就拿订单查询来讲。从模型调用,到本地工具执行,再到结果回填,把这条链路一步步跑完。

写 Chat Memory,就围绕一件事展开:一个用户的多轮对话,到底该怎么保存?

写 MCP,先做出一个能真正调通的工具服务,然后再往后讲。

文章里该有的完整代码、调用结果和实际遇到的问题,都会留下来。哪个结果没有执行过,我也会直接写清验证边界。

接下来,先排这六个方向#

1. 先从 Tool Calling 讲起#

第一件事,是把 Spring AI 2.0 的工具调用链跑通。

用户只发了一次请求,为什么模型会调用两次?中间的 ToolCallingAdvisor 到底做了什么?日志放哪里,重试放哪里,权限校验又该放哪里?

先用一个小案例,把这几个问题一起说明白。

2. 工具多了,再看 Tool Search#

Agent 里的工具一多,问题就来了。

每次都把所有工具定义发给模型,上下文会越来越长,调用成本也会跟着涨。

这部分会继续看 ToolSearchToolCallingAdvisor,看看工具怎么按需查找。

3. Chat Memory 放进 Agent 以后#

单看会话记忆,好像不复杂。放到工具调用和多轮 Agent 里,消息类型、上下文长度、持久化,这些问题就都出来了。

后面我会准备一个连续对话案例,一个问题一个问题地拆。

4. RAG 还是从真问题入手#

文档导入、检索、重排、引用来源,这几步都会继续做。

重点会放在两个问题上:检索为什么找不到?明明已经找到了,模型为什么又不用检索结果?

这两类情况,实际做 RAG 时都会碰到。

5. MCP 先做一个能调通的服务#

这一部分,我会用 Spring AI 2.0 的注解式 API 搭一个 MCP Server,再用 Client 去发现工具、调用工具。

等最小链路跑通了,再继续看传输方式、权限、多服务工具重名和线上部署。

6. 企业级 Agent 放在最后#

前面的工具、记忆、RAG 和 MCP 都跑过一遍以后,再把它们串起来。

到这一步,要看的就是幂等、超时、重试、调用上限、人工审批和可观测性。

一个 Agent 能不能长期跑,最后就看这些。

下一篇,先查一个订单#

这篇先把后面要写的东西列出来。

下一篇就从最简单的订单查询开始,把 Spring AI 2.0 Tool Calling 的完整执行链拆开。

用户查一次订单,模型却要调用两次。中间还有工具执行,以及消息回填。

这个系列,就从这条链路重新开始。

公众号同名

微信搜索「雷一言说」

关注公众号,继续看我的文章。

手机阅读时,可以保存二维码后在微信中识别。

雷一言说微信公众号二维码
扫码关注公众号