| 失效链接处理 |
|
Spring AI 2.0 来了,Java AI智能体开发正式起飞。。。
相关截图:
![]() 主要内容:
一、写在前面:为什么是 Spring AI 2.0
最近两年,Java 生态里关于"如何把大模型搬进自家系统"这件事,一直处于一种半明半暗的状态。Python 那边 LangChain、LlamaIndex 已经卷出了花,而 Java 这边大多数团队还停留在自己写 HTTP 客户端、手动拼 Prompt、一遍遍处理 JSON 的阶段。
Spring AI 的出现就是为了把这件事做得更"Spring 一点"——也就是:约定优于配置、面向接口编程、可观测、可测试、可替换。
到了 2.0 版本,几个关键能力被正式确立下来:
统一的 ChatClient API,所有模型厂商一个写法;
Tool Calling / Function Calling 完整支持,并和 Java 方法签名打通;
Advisors 机制,让 RAG、记忆、日志、限流这些"横切关注点"可以像 Servlet Filter 一样组合;
MCP(Model Context Protocol) 客户端与服务端能力,开始向 Agent 时代靠拢;
Micrometer + OpenTelemetry 全链路可观测;
Spring Boot 3.5+ / Java 17+ 作为基线,全面拥抱新特性。
如果说 1.x 是"试试看",那么 2.0 就是"可以放进生产了"。下面我会带你从最简单的 Hello World,一直走到一个完整的企业知识库问答系统。
二、Spring AI 2.0 是什么 2.1 它要解决什么问题
把一个大模型调用塞进 Spring Boot 项目,理论上一个 RestTemplate 就够用。但真正在做的时候,你会发现需要解决一堆"不那么 AI"的问题:
模型可替换:今天用 OpenAI,明天老板说要切阿里通义,再后天上私有化 Ollama,代码不能跟着改三遍。
Prompt 工程化:模板、变量替换、版本管理、A/B 测试,全靠字符串拼接很快就会失控。
结构化输出:模型返回一段散文,但你的下游系统要 List<Order>,谁来负责解析、校验、重试?
工具调用:模型说"帮我查一下今天的订单",怎么把这句话变成对 OrderService.queryToday() 的真实调用?
检索增强:业务数据是私有的,模型不可能知道,需要从向量库里捞出来再喂给它。
可观测:调用花了多少 Token?平均延迟多少?哪个 Prompt 命中率最高?没有这些数据,调优就是玄学。
Spring AI 2.0 把上面这些问题,一个一个都给了官方答案。
|


苏公网安备 32061202001004号
