github spring-projects/spring-ai v2.0.0-RC1
Spring AI 2.0.0-RC1

pre-release3 hours ago

⭐ New Features

  • Add turn-boundary snapping to MessageWindowChatMemory eviction #6312
  • Finish to remove default values from models #6311
  • Move advisors to their proper modules #6309
  • Remove SpringBeanToolCallbackResolver and toolNames() API #6301
  • Streamline OpenAiChatModel implementations #6295
  • Remove ToolSpec consumer API from ChatClient #6292
  • Remove Minimax dedicated support in favor of Anthropic one #6290
  • Remove internalToolExecutionEnabled #6289
  • Rename N() to n() in options builders #6285
  • Refine JdbcChatMemoryRepositoryDialect to use default method #6283
  • Replace SLF4J by org.apache.commons.logging.LogFactory #6280
  • Remove internal tool execution from MiniMaxChatModel #6279
  • Remove internal tool execution from BedrockProxyChatModel #6272
  • fix(core): allow tool callbacks and providers directly in ChatClient tools() #6263
  • Remove internal tool execution from MistralAiChatModel #6260
  • Remove internal tool execution from DeepSeekChatModel #6258
  • Remove internal tool execution from OpenAiChatModel #6257
  • Remove internal tool execution from OllamaChatModel #6256
  • Remove duplicate builder overrides in OpenAiChatOptions #6255
  • Refactor tool search by consolidating into a single module #6254
  • Remove internal tool execution from AnthropicChatModel #6252
  • Refactor toOptions method for vendor-specific autoconfiguration properties #6248
  • Make equals parameter nullable #6239
  • Remove unused GoogleGenAiChatOptions.TransportType #6238
  • GH-6211: Avoid duplicate chat memory in tool prompts #6228
  • GH-6206: Update tool callback guidance #6214
  • Update Mistral AI chat models #6210
  • Deprecate and rename ChatClient customizer #6204
  • Refine Spring Boot dependencies #6200
  • Simplify ToolCallAdvisor stream aggregation by removing publish() multicast #6195
  • Add DeepSeek V4 chat model constants #6194
  • Add EntityParamSpec to ChatClient entity() methods for per-call structured output configuration #6165
  • Remove toolNames() API and SpringBeanToolCallbackResolver — use explicit ToolCallback beans instead #6154
  • Retire Pixtral Large model #6149
  • Refactor JSON utilities #6135
  • Use .class reference for autoconf ordering #6119
  • Add Tool Search Tool advisor for on-demand tool discovery #5909
  • Allow accessing "timestamp" field from spring_ai_chat_memory table programatically when using JdbcChatMemoryRepository #5168

🐞 Bug Fixes

  • fix: place memory advisors outside ToolCallingAdvisor by default #6314
  • Rename ToolCallAdvisor to ToolCallingAdvisor with backward-compat shims and bug fixes #6303
  • Fix OpenAiChatModel.stream() to only buffer tool calls. #6288
  • refactor(chat-client): enforce non-null ToolCallAdvisor.Builder and fix advisor chain mutation #6282
  • fix: fix span hierarchy in streaming paths for all remaining chat models #6276
  • fix: bring parent span into ThreadLocals to maintain Observation and span hierarchy parity #6249
  • Guard JSON schema generation #6217
  • Fix merge in openai options #6215
  • deepseek V4 Function calling 400 Bad Request from POST #5963

📔 Documentation

  • Fix "vector strore" typo in RAG diagram #6300
  • Polish reference documentation #6234
  • Improve Mistral AI Chat documentation for reasoning models and ReasoningEffort Javadoc #6191
  • Reintroduce community support documentation for OCI and Azure CosmosDB #6125

🔨 Dependency Upgrades

  • Upgrade to MCP SDK 2.0.0-RC1 #6287

❤️ Contributors

Thank you to all the contributors who worked on this release:

@Baqirrizvidev, @Dream95, @EvanYao826, @ThomasVitale, @YunKuiLu, @chemicL, @dafriz, @ericbottard, @galenzo17, @goutamadwant, @guanxuc, @ilayaperumalg, @juanjuandog, @nicolaskrier, @quaff, @rajadilipkolli, @sdeleuze, @sobychacko, @stohirov, @symphony-enrico, @tzolov, and @wolf8334

Don't miss a new spring-ai release

NewReleases is sending notifications on new releases.