On behalf of the Spring AI team and everyone who has contributed, I'm happy to announce that Spring AI 2.1.0-M1 has been released and is now available from Maven Central! Release notes | Upgrade notes | Reference documentation 2.1.0-M1 is the first milestone of the 2.1 line. It builds on everything that shipped in 2.0.1, moves the baseline to Spring Boot 4.2 (this milestone is built against 4.2.0-M2), and introduces three new capabilities: initial support for a structured, ordered model for message content, support for the OpenAI Responses API, and a way to write pre-computed embeddings into a…
Reference documentation and GitHub repository We often need quick decision-making components in our AI applications: to pick the next step in a multi-agent system, to evaluate the inputs and outputs of a complex reasoning task, to route a request, to do input ranking and reordering. Those decisions need proper confidence, need to hold across repeated attempts, and need to be fast, cheap and structured. For example, here is a customer's support ticket, and three things you want to know about it: No prompt template. No JSON schema. No parsing. Three typed questions, three numbers back, in about…
On behalf of the Spring AI team and everyone who has contributed, I'm happy to announce that Spring AI 2.0.1 has been released and is now available from Maven Central! Release notes | Upgrade notes | Reference documentation | Javadoc 2.0.1 is the first maintenance release on top of the 2.0.0 GA foundations. It is a large one: more than 80 issues and pull requests, most of them driven by feedback from teams who moved their applications onto 2.0 in the past weeks. Alongside the fixes, it adds a handful of capabilities that were frequently requested since GA. CVEs fixed in this release CVE-202…
Large language models are text-in, text-out systems — their interface is natural language.
Natural language is a great interface for humans and a poor one for software. The moment downstream code needs to route on a field, persist a value, or branch on a result, the conversation has to become a record. Structured output bridges that gap. The model is steered to produce text conforming to a schema; the application parses it back into a typed object the rest of the codebase can treat like any other domain type. Spring AI has supported structured output since day one through ChatClient.call…
Tool calling — the ability for an AI model to invoke application-defined functions and act on the results — is the essential building block of agentic AI systems.
A model that can discover information, take action, and loop until a goal is reached is an agent. Spring AI 2.0 rearchitects tool calling from the ground up. In 1.x, each chat model implementation contained its own private tool execution loop — functional, but buried. There was no way to hook into it, observe intermediate steps, or compose it with other behaviors. You could call tools; you could not build on top of tool calling. 2.…
On behalf of the team and everyone who has contributed, I'm happy to announce that Spring AI 2.0.0 has been released and is now available from Maven Central! Release notes | Upgrade notes | Reference documentation | Javadoc Improved foundations Since the early days, Spring AI has grown very fast in terms of features, model support, contributions and users. That’s great and exciting, but we felt the need for setting a new baseline in terms of scope, quality and consistency in order to allow evolving the project in a sustainable way. So a few months ago, we took a step back and defined areas…
A New Session API for Spring AI — Structured, Compactable, Multi-Agent-Ready Part 7 of the Spring AI Agentic Patterns series completes the memory picture. After covering Agent Skills, AskUserQuestionTool, TodoWriteTool, Subagent Orchestration, A2A Integration, and AutoMemoryTools for long-term cross-session memory, we now add the complementary short-term layer: Spring AI Session. Storing conversation history as a flat message list works for short exchanges but breaks down as sessions grow — naive truncation silently discards tool-call sequences mid-exchange, leaving the model with orphaned…
File-Based Long-Term Memory for Spring AI Agents Agents are only as useful as what they remember. Spring AI's Chat Memory stores the full conversation and can persist it across restarts, but when the window fills, the oldest messages are evicted. The upcoming Session API will add recursive summarization to soften this, but precise facts are still lost when details get compressed away. AutoMemoryTools and AutoMemoryToolsAdvisor, part of the spring-ai-agent-utils toolkit, give your agents a durable, file-based long-term memory that persists across sessions. The design is inspired by Claude Code…
On behalf of the Spring AI engineering team and everyone who has contributed, I'm happy to announce that Spring AI 2.0.0-M3, 1.1.3, 1.0.4, have been released and are now available from Maven Central. These releases deliver important improvements, stability enhancements, and bug fixes across multiple release streams. ⚠️ Breaking Changes: 2.0.0-M3 includes several breaking changes, including MCP annotation package renames, MCP transport artifact relocations, Jackson 2 → Jackson 3 migration, and removal of conversation history from ToolContext. Review the Upgrade Notes before upgrading. 2.0.0-M…
Instead of one generalist agent doing everything, delegate to specialized agents. This keeps context windows focused—preventing the clutter that degrades performance. Task tool, part of the spring-ai-agent-utils toolkit, is a portable, model-agnostic Spring AI implementation inspired by Claude Code's subagents. It enables hierarchical agent architectures where specialized subagents handle focused tasks in dedicated context windows, returning only essential results to the parent. Beyond Claude's markdown-based format, the architecture is extensible—supporting A2A and other agentic protocols for…