Skip to content

Spring AI 1.0.1

Latest
Compare
Choose a tag to compare
@markpollack markpollack released this 08 Aug 19:32
· 297 commits to main since this release

Spring AI 1.0.1 Release Notes

🎯 Highlights

This release includes 24 new features, 50 bug fixes, 45 documentation improvements, 32 other improvements.

📢 Noteworthy

  • Official release of Spring AI version 1.0.1 with consolidated bug fixes and documentation improvements 53ec007
  • Multiple commits were reverted related to tool context validation fixes and OpenAI chat client method invoking function callback integration tests 80ffb4c
  • Temporarily reverted the change that resolved OpenAI ApiKey for every request, indicating potential issues that required investigation 8a2706d

⭐ New Features

  • Enhanced KeywordMetadataEnricher with custom template functionality to provide more flexible metadata enrichment capabilities 2082a59
  • Added validation to check documents for text/media content when adding to vector stores #3687
  • Improved @tool annotation functionality to enhance function calling capabilities 62160d3
  • Added support for streaming tool calls without parameters in the Anthropic chat model 2099278
  • Updated and improved configuration options for Mistral chat model integration c18a241
  • Added capability to selectively rethrow exceptions in the default tool execution exception processor d1baefb
  • Refactored MessageAggregator to include support for tool calls functionality 1805ca0
  • The ChatClient#mutate method now creates copies of advisors and advisorParams instead of sharing references, improving isolation between chat client instances ccfaaf1
  • Added equals, hashCode, deep copy functionality and comprehensive tests to MiniMaxChatOptions for better object handling and comparison dc9ea17
  • Added support for new Mistral AI chat models to expand the available model providers #3523
  • Enhanced OllamaChatModel with retry template integration for improved reliability f89530c
  • Added streaming thinking events support for Anthropic model provider to enhance real-time interaction capabilities 379901b
  • Enhanced OpenAI integration with updated supported voice enumerations for text-to-speech and chat completion audio features #3411
  • Added support for dynamic API key configuration for Anthropic model provider on a per-request basis ae9284c
  • Neo4j vector store now automatically determines default embedding dimensions based on the configured model 96c45c7
  • Added Spring Framework 7.x compatibility to RetryUtils#ResponseErrorHandler to support upcoming Spring Framework versions 5ecfcce
  • Enhanced OpenAI client to resolve API key for every request, improving key rotation and configuration flexibility dd6c0a9
  • Introduced support for Anthropic's latest Claude models including claude-opus-4 and claude-sonnet-4 #3351
  • Extended OpenAI integration to support PDF files as media input a330458
  • Provided MySQL database schema for SPRING_AI_CHAT_MEMORY table to support chat memory functionality 148bf33
  • Improved handling and testing of complex metadata values in Chroma vector store integration aba837a
  • Added metadata support for vector store types to enhance data management capabilities #3325
  • Added support for configurable exception handling when executing tools, providing better error management and recovery options 3068c04
  • Added comprehensive integration tests for Chat Memory functionality with SQL Server support a6858cf

🪲 Bug Fixes

  • Resolved issue where method tool calls would throw errors when methods had the same name #2774
  • Fixed typo in frequencyPenalty property name for Google model builders 2e579b1
  • Corrected spelling of PromptTemplate in structured output API documentation image #3304
  • Resolved null pointer exception in Anthropic API streaming functionality #3755
  • Fixed issue where SystemPromptTemplate.builder() incorrectly returned PromptTemplate builder 2f91adb
  • Corrected parameter sequence in JSON schema generation functionality f20eeea
  • Resolved annotation packaging issues #3716
  • Resolved issue where audio filenames were lost when requesting OpenAI /transcriptions and /translations interfaces c0c7f3a
  • Enhanced schema initialization logic and updated deprecated code for Milvus vector store #3705
  • Added null checks, optimized string joining, and improved JavaDocs #3663
  • Corrected assertion message in SimpleApiKey implementation for better debugging #3656
  • Prevented streaming tool calling responses when internal execution is enabled for Anthropic models 5d8a930
  • Cleaned up unused configuration options from ZhiPu AI model implementation #3669
  • Added support for custom dimensions in ZhiPu AI embedding models #3668
  • Removed incorrect @nullable annotation from VectorStore similaritySearch methods #3613
  • Added validation for invalid page numbers in outline items for getTextBetweenParagraphs method 50e8615
  • Corrected issues with Ollama autoconfiguration that were preventing proper setup #3645
  • Fixed naming inconsistencies throughout the Mistral integration package #3652
  • Resolved issue where streaming tool calls without input arguments would fail in Bedrock integration d1dac6c
  • Fixed hardcoded configuration parameter to allow proper customization of topK values in Bedrock Converse Proxy #3621
  • Prevents incorrect ToolCall merging in DeepSeek model provider when tool calls have empty id and name strings ff5855d
  • Resolves test failure in ChromaVectorStoreAutoConfigurationIT due to updated exception message handling 7200580
  • Resolved exception occurring in OpenAiAudioTranscriptionResponseMetadata.toString method #3575
  • Corrected infinite recursion issue in getMimeType(Path) method b6b069c
  • Improved root exception handling in McpToolCallback to prevent unhandled errors fb1746b
  • Corrected logging behavior when creating ChromaDB collections e0d3703
  • Resolved incorrect outputModalities evaluation when using streaming responses 3f9f34d
  • Resolved issue preventing generation of spring.ai.tools.observations configuration metadata for Spring Boot auto-completion #3539
  • Corrected the parameter order in ClassUtils.isAssignable within the validateToolContextSupport method 61c8044
  • Resolved test failures in Ollama embedding auto-configuration tests 3309869
  • Corrected parsing of similarity options in ElasticsearchVectorStore for proper configuration handling c9ec39e
  • Resolved issue where Bedrock Titan embeddings were not properly returning usage information 0a1d326
  • Corrected logic error in validateToolContextSupport method caused by incorrect parameter order 2ca1be2
  • Improved logic in MethodToolCallbackProvider to correctly check function types fcbdac9
  • Resolved issues in OpenAI chat client function callback integration test bb52db5
  • Resolved configuration issue where the embedding field name was not properly set when configuring ElasticsearchVectorStore #3501
  • Corrected SQL syntax error in the isTableExists method of MariaDBSchemaValidator that was preventing proper table validation 95ea7f2
  • Improved Qdrant vector store to properly handle Long type values in payload by converting them to String format 963b9db
  • Enhanced QdrantObjectFactory to properly handle null metadata values without throwing errors 8053ae3
  • Fixed OpenAiChatOptions to properly support transferring web search options between configurations c790d6c
  • Fixed missing properties in the Spring Boot auto-configuration for ChromaVectorStore 3fe052f
  • Fixed a bug in the augmentSystemMessage method where an extra system message was incorrectly added when the system message was not the first one in the message list 623e705
  • Avoid looping through all the page tree if there is no destination page, improving PDF processing performance #3396
  • Fixed unreachable code in PromptChatMemoryAdvisor to improve code quality and maintainability #3395
  • Added null safety check for duration metadata in Ollama chat model responses to prevent potential null pointer exceptions 1eecd17
  • Corrected CustomerTools example code to reference proper existing methods #3390
  • Prevented double-serialization of already valid JSON strings in JsonParser.toJson method cfa4128
  • Fixed typo in ToolCallback implementation for better code clarity #3352
  • Resolved connection leak issue when using JdbcChatMemoryRepository, improving resource management and stability fb106ab
  • Updated useAutoConfiguredJdbcChatMemoryRepository test to work properly after connection leak fix fd9fe79

📓 Documentation

  • Added comprehensive example demonstrating how to dynamically select and use MCP clients in Spring AI applications #3751
  • Updated reference links to the latest MCP specification documentation #3810
  • Corrected code examples in the streaming responses documentation to ensure accuracy and functionality #3802
  • Improved documentation for ChatClient Advisor functionality 8c88a64
  • Updated MCP documentation to remove outdated DefaultMcpSession references #3760
  • Enhanced Anthropic chat integration documentation #2723
  • Corrected documentation and code typos in chat client module #3013
  • Corrected typo in token configuration documentation #3677
  • Fixed outdated code examples in the documentation #3717
  • Fixed property name from is-auto-id to auto-id in milvus.adoc #3704
  • Cleaned up duplicated dependency instructions in opensearch.adoc #3712
  • Corrected default embedding model reference in ollama-embeddings.adoc #3686
  • Updated README documentation to include Elasticsearch vector store integration #3688
  • Corrected broken link in Content class javadoc documentation #3672
  • Corrected various typos and spelling errors in documentation and code comments #3678
  • Fixed documentation errors in SimpleLoggerAdvisor class #3638
  • Corrected documentation examples and instructions for proper tool usage patterns 406c6f1
  • Improved and updated the tools documentation with better examples and explanations #3624
  • Corrected broken documentation link reference to ChatModel interface #3583
  • Improved documentation for Spring AI advisors functionality a5fa666
  • Enhanced documentation for MCP Server Boot Starter selection process 530ef30
  • Updated OpenAI integration page with improved Vision section documentation fe002ad
  • Improved ZhipuAI chat documentation with corrections and enhancements #3531
  • Corrected documentation examples showing proper usage of tools and defaultTools configuration #3533
  • Repaired broken links to ChatOptions and ChatOptions#builder() in web documentation #3447
  • Corrected code snippets and examples in the openai-chat.adoc documentation file 95e9808
  • Corrected spelling and formatting errors in cloud bindings documentation #3436
  • Updated and improved Hugging Face integration documentation #3445
  • Fixed incorrect ToolDefinition.builder() usage examples in documentation #3431
  • Added documentation changes related to response format updates for Azure OpenAI chat integration #3434
  • Revised and improved documentation for DeepSeek and Minimax chat providers #3408
  • Fixed MIME types and standardized formatting in Bedrock Converse video modalities documentation #3413
  • Removed duplicate NoOpTemplateRenderer mention in ChatClient documentation #3414
  • Added description of embedding-field-name property in Elasticsearch documentation #3399
  • Corrected typo from 'synch' to 'sync' in contribution documentation #3378
  • Fixed advisor documentation to reference the correct dependencies a0c76a0
  • Updated Mistral AI embeddings documentation for better clarity #3362
  • Corrected broken links in documentation pointing to Media.java #3322
  • Updated link to point to the official awesome-spring-ai repository #3328
  • Updated custom API key example to use OpenAiChatModel.builder() pattern #3335
  • Fixed and improved tools-related documentation #3292
  • Improved documentation for the MCP (Model Context Protocol) Server Boot Starter #3279
  • Corrected formatting issues with external links in the effective agents documentation #3275
  • General typo corrections across various documentation files #3263
  • Added proper title to documentation that was missing heading information 4d716d5

🔨 Dependency Upgrades

  • Updated from swagger-annotations to swagger-annotations-jakarta for Jakarta EE compatibility 5a66d49
  • Cleaned up explicit version specification for jackson-dataformat-xml in test dependencies b84d123
  • Updated Spring Boot dependency to version 3.5.0 for latest features and improvements 8b9d93f

⚡ Performance

  • Improved performance by reusing DocumentRowMapper instances to reduce redundant object creation 65f4f8c
  • Improved logging performance by optimizing debug level logging calls in chat memory advisor components #3448

🔩 Build Updates

  • Improved test structure and maintainability for method tool callback provider tests 9068789
  • Enhanced builder pattern implementation for better code organization and usability in Vertex AI Gemini safety settings 1eb5055
  • Applied diamond operator syntax improvements for better code clarity #3458
  • Updated OpenAI audio tests to accommodate changes in OpenAI safety settings 6a19c2e
  • Converted Qdrant vector store integration test to use OpenAI embedding model #3671
  • Migrated AzureOpenAiAudioTranscriptionModelIT to use OkHttpClient for improved testing reliability #3665
  • Updated JdbcChatMemoryRepositoryHsqldbAutoConfigIT to use JUnit 5 #3633
  • Multiple cleanup activities including removing redundant null checks in OpenAI API Builder, cleaning up TextReader assignments, removing useless properties tags, and adding missing license headers #3654
  • Added test coverage for FileDocumentWriter default constructor and various configuration options 3bcdb9d
  • Cleaned up integration test by removing redundant environment variable checks for better test maintainability #3615
  • Improved code quality by replacing direct error output with structured logging throughout the codebase #3600
  • Cleaned up codebase by removing unused messageHistory implementation that was no longer needed #3574
  • Enhanced test coverage with unit test to verify multiple method tool callbacks functionality with tool context 0ce9192
  • Added test coverage for embeddingFieldName configuration in Elasticsearch VectorStore 25662fc
  • Improved module design by making auto-configuration dependencies optional, reducing unnecessary coupling in docker compose integration #3502
  • Enhanced module architecture by making auto-configuration dependencies optional in testcontainers integration #3465
  • Optimized dependencies by using spring-web instead of spring-webflux in the spring-ai-retry module 7ba7727
  • Updated continuous integration workflow to run against valid non-main branches c1a6a62
  • Moved speech1.mp3 audio test file to proper src/test/resources location d03654b
  • Added new GitHub Action workflows for auto-cherry-pick and backport-issue automation 3c900b9
  • Added comprehensive unit tests for OpenAiStreamFunctionCallingHelper to improve code coverage and reliability #3312
  • Updated gitignore to exclude qodana.yaml configuration file 7f93f03
  • Applied checkstyle fixes to improve code consistency and formatting across the project 0c9d0e4
  • Updated project version for next development iteration on 1.0.x branch 98a8dd4

🙏 Contributors

Thanks to all contributors who made this release possible: