Adds Oracle Cloud Infrastructure (OCI) Generative AI's Cohere chat model support
to expand Spring AI's cloud provider capabilities. This allows developers to use
OCI's managed Cohere models through both dedicated and on-demand serving modes.
The integration provides auto-configuration for simple setup while allowing full
customization of model parameters through OCICohereChatOptions. Teams can now
use OCI's Cohere models alongside other providers in Spring AI applications.
This change complements the existing OCI embedding support, offering a complete
set of GenAI capabilities for Oracle Cloud users.
Signed-off-by: Anders Swanson <anders.swanson@oracle.com>
- Disable project-wide Checkstyle checks to unblock development
- Add documentation for enabling Checkstyle locally
- Fix remaining checkstyle violations in current codebase
Fixes#1669
Introduces support for Amazon Bedrock Converse API through a new BedrockProxyChatModel
implementation. This enables integration with Bedrock's conversation models with features
including:
- Support for sync/async chat completions
- Stream response handling
- Tool/function calling capabilities
- System message support
- Image input support
- Observation and metrics integration
- Configurable model parameters and AWS credentials
Adds core support classes:
- BedrockUsage: Implements Usage interface for token tracking
- ConverseApiUtils: Utility class for handling Bedrock API responses including:
- Tool use event aggregation and processing
- Chat response transformation from stream outputs
- Model options conversion
- Support for metadata aggregation
- URLValidator: Utility for URL validation and normalization with support for:
- Basic and strict URL validation
- URL normalization
- Multimodal input handling
- Enhanced FunctionCallingOptionsBuilder with merge capabilities for both ChatOptions
and FunctionCallingOptions
- Added BEDROCK_CONVERSE to AiProvider enum for metrics tracking
- Extended AWS credentials support with session token capability
- Added configurable session token property to BedrockAwsConnectionProperties
Adds new auto-configuration support:
- BedrockConverseProxyChatAutoConfiguration for automatic setup of the Bedrock Converse chat model
- BedrockConverseProxyChatProperties for configuration including:
- Model selection (defaults to Claude 3 Sonnet)
- Timeout settings (defaults to 5 minutes)
- Temperature and token control
- Top-K and Top-P sampling parameters
- Integration with existing BedrockAwsConnectionConfiguration for AWS credentials
Updates to testing infrastructure:
- Adds comprehensive test suite for Bedrock Converse properties and auto-configuration
- Integration tests for chat completion and streaming scenarios
- Property validation tests for configuration options
- Temporarily disabled other Bedrock tests due to AWS quota limitations
- Added ObjectMapper configuration for proper JSON handling
Added new spring-ai-bedrock-converse-spring-boot-starter module
Updates module configuration in parent POM and BOM to include new bedrock-converse
modules and starters. Adds necessary auto-configuration imports for seamless integration
with Spring Boot applications.
Unrelated changes:
- Disabled several Bedrock model tests (Jurassic2, Llama, Titan) due to AWS quota limitations
- Disabled PaLM2 tests due to API decommissioning by Google
Resolves#809, #802
Add docs and fix configs
- Move timeout configuration from chat properties to connection properties
- Add comprehensive documentation for Bedrock Converse API usage and configuration
- Update tests to reflect configuration changes
Co-authored-by: maxjiang153 <maxjiang153@users.noreply.github.com>
Standardize AWS credential handling in integration tests
- Improve how we manage AWS credentials across our integration test
suite and ensures consistent test configuration. We're replacing individual
environment variable checks with @RequiresAwsCredentials
annotation and standardizing the use of BedrockTestUtils for context creation
in tests
We also align all AWS regions to US_EAST_1 for consistency and add missing
dependency versioning for Oracle Free.
These changes make our AWS tests more easier to maintain.
Key changes:
- Replace @EnabledIfEnvironmentVariable with @RequiresAwsCredentials
- Standardize context creation via BedrockTestUtils
- Set AWS region to US_EAST_1
- Add Oracle Free dependency version in pom.xml
- Implement core vector store module for CosmosDB integration
- Add Spring Boot auto-configuration capabilities
- Integrate batch processing strategy for optimized operations
- Include comprehensive tests for core and auto-config modules
- Add reference docs for the CosmosDB vector store support
Testcontainers 1.20.2 offers `MongoDBAtlasLocalContainer`. Previous
image used during tests was pulling images in every execution. The
new image is cached locally and can be executed offline.
This commit introduces support for Oracle Cloud Infrastructure (OCI)
GenAI embedding models in Spring AI. It includes:
* New OCIEmbeddingModel class for interacting with OCI GenAI API
* Auto-configuration for easy setup and integration
* Properties for configuring OCI connection and embedding options
* Documentation updates explaining usage and configuration
* Integration tests to verify functionality
Signed-off-by: Anders Swanson <anders.swanson@oracle.com>
Currently, `RedisVectorStoreAutoConfiguration` creates its own
configuration to connect with Redis. This commit reuse
`RedisAutoConfiguration` from spring boot project. It's limited
to Jedis.
The spring-ai-spring-boot-autoconfigure module had a few dependencies
that were included in the final JAR instead of being marked as optional.
Also, the PostgreSQL dependency was duplicated.
Signed-off-by: Thomas Vitale <ThomasVitale@users.noreply.github.com>
- add new spring-ai-vertex-ai-embedding project.
- add VertexAiTextEmbeddingModel and VertexAiMultimodalEmbeddingMode with related options configuration classes.
- add ITs
- add auto-configuraiton and boot starters.
- register to BOM.
- add documentation.
- add multimodal embedding documentation
- extend the Embedding metdata so that it can keep references to the source document's data, Id, mediatype
Resolves#1013
Related to #1009
Currently, in order to use an OpenSearch instance provided by AWS,
additional steps are needed. This commit introduces the required
configuration.
Add new starter and update docs
- Adds spring boot auto-configuration support for GemFireVectorStore
- Adds integration test GemFireVectorStoreAutoConfigurationIT
- Includes gemfire-testcontainers in integration tests
- Adds unit test GemFireVectorStorePropertiesTests
- Refactors GemFireVectorStore.java extracting GemFireVectorStoreConfig.java
- Renames spring-ai-gemfire to spring-ai-gemfire-store
- Adds GemFireConnectionDetails
- Adds GemFireVectorStoreProperties with default values
- Remove gemfire-release-repo maven repository
Co-authored-by: Louis Jacome <louis.jacome@broadcom.com>
Co-authored-by: Jason Huyn <jason.huynh@broadcom.com>
- knn instead of script_score, removed initialization
- only using normalized similarities, adjusted unit test
- making l2norm's distances consistent with others
- update dependency version and docs
- upate autoconfigure ITs
- implement OpensSearchVectorStore
- add opensearch auto-configuration and boot starter
- add documentation for OpenSearch VectorStore
- add bom dependecies
- align with to new Spirng AI API
- autoconfigure setup
- add post bean initialization and create method
- add embedding field
- create collection add nested field options
- add typesense tests
- use embedding variable instead of word vec
- check in runtime the number of documents in the collection
- add typesense expression converter
- add filter tests. add update document test and search with threshold test
- distance threshold and add distance key into metadata
- add typesesne boot starter
- add typesense docs
- add client properties in autoconfigure
- add embedding dimension method
- add typesense vector store autoconfiguration tests
- add docs to nav.adoc and vectorsdb.adoc.
- fix module name.
- move the expression converter to the typesense project.
The CassandraVectorStore is for managing and querying vector data in an Apache Cassandra db.
It offers functionalities like adding, deleting, and performing similarity searches on documents.
The store utilizes CQL to index and search vector data. It allows for custom metadata fields in
the documents to be stored alongside the vector and content data.
This class requires a CassandraVectorStoreConfig configuration object for initialization, which
includes settings like connection details, index name, field names, etc. It also requires an
EmbeddingClient to convert documents into embeddings before storing them.
A schema matching the configuration is automatically created if it doesn't exist. Missing columns
and indexes in existing tables will also be automatically created. Disable this with the disallowSchemaCreation.
This class is designed to work with brand new tables that it creates for you, or on top of existing
Cassandra tables. The latter is appropriate when wanting to keep data in place, creating embeddings
next to it, and performing vector similarity searches in-situ.
Instances of this class are not dynamic against server-side schema changes. If you change the schema
server-side you need a new CassandraVectorStore instance.
- Add auto-configure with tests.
- reformat code style
- Change field terminology to column (as appropriate for cassandra and cql)
- Add doc page with an advanced example.
- Add the dependencies to Spring AI BOM
– add to `AutoConfiguration.imports`
- Add @since annotation
- Fix javadoc issue
- Streamline the adoc content and layout
- Implement a HanaCloudVectorStore and tests
- Implement Autoconfiguraiton + properties
- Add boot starter
- Update BOM with vector store and boot dependencies.
- Add antora docuementation
- added junit for HanaCloudVectorStoreProperties.java and documentation
to create a BTP trial account and provision an instance for SAP Hana Cloud db
- updated license, formatting and javadoc
- IT for HanaCloudVectorStoreAutoConfiguration
- IT for HanaCloudVectorStoreAutoConfiguration
Additional
- add @AutoConfiguration(after = { JpaRepositoriesAutoConfiguration.class })
- update the handa docs structure.
- feat: setup watsonx ai api
- feat: add watsonx ai model options
- feat: setup watsonx chat client
- feat: add watsonx records/models
- add watsonx-ai module to pom
- add watsonx-ai module to bom
- feat: add connection properties watsonx
- feat: add WatsonxAiAutoConfiguration with api client
- feat: add starter watsonx.ai
- feat: add generate method in watsonx ai api
- feat: add watsonx ai api streaming generation method
- feat: add watsonx message to prompt converter util
- feat: implement call and stream mehtod
- feat: add watsonx ai runtime hints
- fix: filter null fields
- feat: watsonx options tests
- feat: add test dependencies
- feat: add runtime hints tests
- feat: add watsonx client tests
- fix: apply linter
- feat: add tests for message to prompt converter
- feat: add signature
- fix: change deprecated IamAuthenticator
- fix: do not keep baseUrl in a class variable
- fix: webClient request
- feat: add default base url to autoconfigure
- feat: add watsonx ai integration docs
- fix: model options json
- feat: add watsonx-ai spring boot starter
- feat: enable watsonx api on watsonx chat client
- fix: remove condition
- feat: add watsonx autoconfigure import
- feat: add watsonx module resource aot import
- feat: add pom for watsonx ai module
Additional pre-merge adjustments:
- Rename all WatsonxAIXxx classes to WatsonxAiXxx.
- Rename WatsonxChatClient to WatsonxAiChatClient.
- Move WatsonxAiChatOptions out of the API.
- Implement a Builder for WatsonxAiChatOptions (replace the inline withXxx code).
- Add a WatsonxAiChatOptions field to WatsonxAiChatClient as default options.
Later, it is also set by the auto-configuration properties.
- Implement merging logic for default vs runtime options in WatsonxAiChatClient.
- In Auto-config, add WatsonxAiChatProperties with enabled and options fields.
Options are passed to the client.
- Update the adoc to include the .chat.options properties.
- Add the watsonxai doc to the nav.adoc.
- Fix license headers and javadocs.
- Move dependency versioning to the parent POM.
This commit introduces support for the Anthropic Claude3 Message API
(https://api.anthropic.com), enabling direct interaction with its services.
This is not a Bedrock Anthropic Claude3 implemenation.
Changes include:
- Implementation of a low-level client, AnthropicApi, to interact with
the message API endpoints specified in the Anthropic documentation
(https://docs.anthropic.com/claude/reference/messages_post), including support for streaming.
- Addition of AnthropicApi tests to ensure functionality and reliability.
- Support for multimodal requests within AnthropicApi.
- Adding the spring-ai-anthropic and boot starter into BOM and parent POM modules for streamlined usage.
- Add Anthropic Auto-configuration and Boot Starter for seamless integration into existing projects.
- Implementation of AnthropicChatClient with capabilities for synchronous and streaming communication,
including support for multimodal messages.
- Inclusion of both unit and integration tests to validate functionality across various scenarios.
- Add Antora documentation with comprehensive guidance on using AnthropicApi and AnthropicChatClient.
- Add of Ahead-of-Time (AOT) hints for AnthropicApi.
- update anthropic diagram