本文聚焦 Spring AI 2.0 的三大核心升级,通过完整代码展示 Java 开发者如何以熟悉的 Spring 风格构建生产级 AI 应用。
在 1.x 版本中,工具调用逻辑被封装在各个 ChatModel 实现内部,开发者无法介入、观察或扩展。2.0 将工具调用循环提升为 Advisor 链中的一等公民——这意味着工具调用不再是黑盒,而是可组合、可观测、可扩展的标准组件。
定义工具的方式极为简洁——使用 @Tool 注解标注任意方法:
class WeatherTools {
@Tool(description = "获取指定城市的当前天气")
public String getWeather(String city) {
return weatherService.fetch(city);
}
@Tool(description = "预订航班")
public BookingConfirmation bookFlight(
String origin, String destination,
@ToolParam(description = "日期,格式 YYYY-MM-DD") String date) {
return flightService.book(origin, destination, date);
}
}Spring AI 自动生成 JSON Schema 作为工具定义传递给大模型。使用时,通过 ChatClient 的 .tools() 方法注入即可:
String response = ChatClient.create(chatModel)
.prompt("阿姆斯特丹天气如何?如果晴天就订一张从伦敦出发的机票。")
.tools(new WeatherTools())
.call()
.content();ToolCallingAdvisor 作为递归 Advisor,自动管理完整的工具执行生命周期——从提取工具定义、注入上下文,到循环执行工具调用直至模型不再请求工具。官方测试表明,新架构在 OpenAI、Anthropic 和 Gemini 模型上实现了 34%–64% 的 Token 消耗降低。
大模型本质上是“文本进、文本出”的系统。生产环境中,我们需要的是程序可直接处理的类型化对象,而非自由文本。Spring AI 2.0 在原有的 ChatClient.call().entity() 接口基础上,新增了提供商原生结构化输出和自纠错模式校验两大能力。
以下示例让模型生成演员的电影作品列表,直接映射为 Java 类型:
ActorsFilms films = chatClient.prompt()
.user("请为一位随机演员生成电影作品列表")
.call()
.entity(ActorsFilms.class);当模型返回的 JSON 不符合目标 Schema 时,自纠错机制会自动将校验错误回传给模型,要求模型重新生成合规输出,而不需要开发者编写任何额外的解析或重试逻辑。这一特性将原本需要大量样板代码的“JSON 解析 + 异常处理”流程,简化为一行声明式调用。
检索增强生成(RAG)是企业级 AI 的核心场景。Spring AI 2.0 通过统一的 VectorStore 抽象,覆盖了 Milvus、PGVector、Redis、Neo4j、Chroma、MongoDB 等二十余种向量数据库。
一个完整的 RAG 流程包含三个环节:DocumentReader(读取 PDF/Word/HTML 等文档)→ DocumentTransformer(切片与元数据增强)→ VectorStore.add()(向量化写入)。检索时,只需调用 VectorStore.similaritySearch():
@RestController
public class RagController {
private final VectorStore vectorStore;
private final ChatClient chatClient;
@PostMapping("/ask")
public String ask(@RequestBody String question) {
// 1. 向量检索相关文档
List<Document> docs = vectorStore.similaritySearch(
SearchRequest.query(question).withTopK(5)
);
// 2. 构建增强提示
String context = docs.stream()
.map(Document::getContent)
.collect(Collectors.joining("\n"));
// 3. 生成回答
return chatClient.prompt()
.user("基于以下资料回答问题:\n" + context + "\n问题:" + question)
.call()
.content();
}
}Spring AI 2.0 还实现了 MCP(Model Context Protocol)的原生集成,并引入了 @McpTool 注解支持。MCP 作为与 AI 模型交互的标准协议,让工具定义和资源访问具备了跨模型的互操作性。
展望未来,Spring AI 2.1 预计于 2026 年 11 月发布,将引入全新的 Session API,并正式废弃 ChatMemory。Java 在 AI 领域的布局正从“追赶 Python”走向“定义企业级 AI 的新标准”。
Spring AI 2.0 不是对 LangChain 的简单复刻,而是将 Spring 的设计哲学——依赖注入、自动配置、POJO 编程——完整地迁移到了 AI 领域。Tool Calling 的可组合性、结构化输出的自纠错能力、RAG 的统一向量存储抽象,三者共同构成了 Java 开发者构建生产级 AI 应用的坚实基石。62% 的企业数据已经表明:Java 不仅是后端的主力,更是 AI 生产环境的最优解之一。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。