├── .editorconfig ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── config.yml │ ├── feature_request.md │ └── miscellaneous.md ├── PULL_REQUEST_TEMPLATE.md ├── dco.yml ├── release-files-spec.json └── workflows │ ├── artifactory-milestone-release.yml │ ├── auto-cherry-pick.yml │ ├── backport-issue.yml │ ├── continuous-inspection.yml │ ├── continuous-integration.yml │ ├── deploy-docs.yml │ ├── documentation-upload.yml │ ├── new-maven-central-release.yml │ ├── pr-check.yml │ └── release-notes-generation.yml ├── .gitignore ├── .mvn ├── extensions.xml └── wrapper │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── CONTRIBUTING.adoc ├── LICENSE.txt ├── README.md ├── advisors └── spring-ai-advisors-vector-store │ ├── pom.xml │ └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── chat │ │ └── client │ │ └── advisor │ │ └── vectorstore │ │ ├── QuestionAnswerAdvisor.java │ │ ├── VectorStoreChatMemoryAdvisor.java │ │ └── package-info.java │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── chat │ └── client │ └── advisor │ └── vectorstore │ ├── QuestionAnswerAdvisorTests.java │ └── VectorStoreChatMemoryAdvisorTests.java ├── auto-configurations ├── common │ └── spring-ai-autoconfigure-retry │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── retry │ │ │ │ └── autoconfigure │ │ │ │ ├── SpringAiRetryAutoConfiguration.java │ │ │ │ └── SpringAiRetryProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── retry │ │ └── autoconfigure │ │ ├── SpringAiRetryAutoConfigurationIT.java │ │ └── SpringAiRetryPropertiesTests.java ├── mcp │ ├── spring-ai-autoconfigure-mcp-client │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── mcp │ │ │ │ │ └── client │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── McpClientAutoConfiguration.java │ │ │ │ │ ├── McpToolCallbackAutoConfiguration.java │ │ │ │ │ ├── NamedClientMcpTransport.java │ │ │ │ │ ├── SseHttpClientTransportAutoConfiguration.java │ │ │ │ │ ├── SseWebFluxTransportAutoConfiguration.java │ │ │ │ │ ├── StdioTransportAutoConfiguration.java │ │ │ │ │ ├── aot │ │ │ │ │ └── McpClientAutoConfigurationRuntimeHints.java │ │ │ │ │ ├── configurer │ │ │ │ │ ├── McpAsyncClientConfigurer.java │ │ │ │ │ └── McpSyncClientConfigurer.java │ │ │ │ │ └── properties │ │ │ │ │ ├── McpClientCommonProperties.java │ │ │ │ │ ├── McpSseClientProperties.java │ │ │ │ │ └── McpStdioClientProperties.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── spring │ │ │ │ ├── aot.factories │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── mcp │ │ │ │ └── client │ │ │ │ └── autoconfigure │ │ │ │ ├── McpClientAutoConfigurationIT.java │ │ │ │ ├── McpClientAutoConfigurationRuntimeHintsTests.java │ │ │ │ ├── McpToolCallbackAutoConfigurationConditionTests.java │ │ │ │ ├── McpToolCallbackAutoConfigurationTests.java │ │ │ │ ├── SseHttpClientTransportAutoConfigurationTests.java │ │ │ │ ├── SseWebFluxTransportAutoConfigurationTests.java │ │ │ │ └── properties │ │ │ │ ├── McpClientCommonPropertiesTests.java │ │ │ │ └── McpSseClientPropertiesTests.java │ │ │ └── resources │ │ │ ├── application-test.properties │ │ │ ├── nested │ │ │ └── nested-config.json │ │ │ └── test-config.json │ └── spring-ai-autoconfigure-mcp-server │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── mcp │ │ │ │ └── server │ │ │ │ └── autoconfigure │ │ │ │ ├── McpServerAutoConfiguration.java │ │ │ │ ├── McpServerProperties.java │ │ │ │ ├── McpServerStdioDisabledCondition.java │ │ │ │ ├── McpWebFluxServerAutoConfiguration.java │ │ │ │ └── McpWebMvcServerAutoConfiguration.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── mcp │ │ └── server │ │ └── autoconfigure │ │ ├── McpServerAutoConfigurationIT.java │ │ ├── McpWebFluxServerAutoConfigurationIT.java │ │ ├── McpWebFluxServerAutoConfigurationTests.java │ │ └── McpWebMvcServerAutoConfigurationIT.java ├── models │ ├── chat │ │ ├── client │ │ │ └── spring-ai-autoconfigure-model-chat-client │ │ │ │ ├── pom.xml │ │ │ │ └── src │ │ │ │ ├── main │ │ │ │ ├── java │ │ │ │ │ └── org │ │ │ │ │ │ └── springframework │ │ │ │ │ │ └── ai │ │ │ │ │ │ └── model │ │ │ │ │ │ └── chat │ │ │ │ │ │ └── client │ │ │ │ │ │ └── autoconfigure │ │ │ │ │ │ ├── ChatClientAutoConfiguration.java │ │ │ │ │ │ ├── ChatClientBuilderConfigurer.java │ │ │ │ │ │ └── ChatClientBuilderProperties.java │ │ │ │ └── resources │ │ │ │ │ └── META-INF │ │ │ │ │ ├── additional-spring-configuration-metadata.json │ │ │ │ │ └── spring │ │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ │ └── test │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── model │ │ │ │ └── chat │ │ │ │ └── client │ │ │ │ └── autoconfigure │ │ │ │ └── ChatClientObservationAutoConfigurationTests.java │ │ ├── memory │ │ │ ├── repository │ │ │ │ ├── spring-ai-autoconfigure-model-chat-memory-repository-cassandra │ │ │ │ │ ├── pom.xml │ │ │ │ │ └── src │ │ │ │ │ │ ├── main │ │ │ │ │ │ ├── java │ │ │ │ │ │ │ └── org │ │ │ │ │ │ │ │ └── springframework │ │ │ │ │ │ │ │ └── ai │ │ │ │ │ │ │ │ └── model │ │ │ │ │ │ │ │ └── chat │ │ │ │ │ │ │ │ └── memory │ │ │ │ │ │ │ │ └── repository │ │ │ │ │ │ │ │ └── cassandra │ │ │ │ │ │ │ │ └── autoconfigure │ │ │ │ │ │ │ │ ├── CassandraChatMemoryRepositoryAutoConfiguration.java │ │ │ │ │ │ │ │ └── CassandraChatMemoryRepositoryProperties.java │ │ │ │ │ │ └── resources │ │ │ │ │ │ │ └── META-INF │ │ │ │ │ │ │ └── spring │ │ │ │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ │ │ │ └── test │ │ │ │ │ │ └── java │ │ │ │ │ │ └── org │ │ │ │ │ │ └── springframework │ │ │ │ │ │ └── ai │ │ │ │ │ │ └── model │ │ │ │ │ │ └── chat │ │ │ │ │ │ └── memory │ │ │ │ │ │ └── repository │ │ │ │ │ │ └── cassandra │ │ │ │ │ │ └── autoconfigure │ │ │ │ │ │ ├── CassandraChatMemoryRepositoryAutoConfigurationIT.java │ │ │ │ │ │ └── CassandraChatMemoryRepositoryPropertiesTest.java │ │ │ │ ├── spring-ai-autoconfigure-model-chat-memory-repository-jdbc │ │ │ │ │ ├── pom.xml │ │ │ │ │ └── src │ │ │ │ │ │ ├── main │ │ │ │ │ │ ├── java │ │ │ │ │ │ │ └── org │ │ │ │ │ │ │ │ └── springframework │ │ │ │ │ │ │ │ └── ai │ │ │ │ │ │ │ │ └── model │ │ │ │ │ │ │ │ └── chat │ │ │ │ │ │ │ │ └── memory │ │ │ │ │ │ │ │ └── repository │ │ │ │ │ │ │ │ └── jdbc │ │ │ │ │ │ │ │ └── autoconfigure │ │ │ │ │ │ │ │ ├── JdbcChatMemoryRepositoryAutoConfiguration.java │ │ │ │ │ │ │ │ ├── JdbcChatMemoryRepositoryProperties.java │ │ │ │ │ │ │ │ └── JdbcChatMemoryRepositorySchemaInitializer.java │ │ │ │ │ │ └── resources │ │ │ │ │ │ │ └── META-INF │ │ │ │ │ │ │ └── spring │ │ │ │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ │ │ │ └── test │ │ │ │ │ │ ├── java │ │ │ │ │ │ └── org │ │ │ │ │ │ │ └── springframework │ │ │ │ │ │ │ └── ai │ │ │ │ │ │ │ └── model │ │ │ │ │ │ │ └── chat │ │ │ │ │ │ │ └── memory │ │ │ │ │ │ │ └── repository │ │ │ │ │ │ │ └── jdbc │ │ │ │ │ │ │ └── autoconfigure │ │ │ │ │ │ │ ├── JdbcChatMemoryRepositoryHsqldbAutoConfigurationIT.java │ │ │ │ │ │ │ ├── JdbcChatMemoryRepositoryPostgresqlAutoConfigurationIT.java │ │ │ │ │ │ │ ├── JdbcChatMemoryRepositoryPropertiesTests.java │ │ │ │ │ │ │ ├── JdbcChatMemoryRepositorySchemaInitializerPostgresqlTests.java │ │ │ │ │ │ │ └── JdbcChatMemoryRepositorySqlServerAutoConfigurationIT.java │ │ │ │ │ │ └── resources │ │ │ │ │ │ └── schema.sql │ │ │ │ └── spring-ai-autoconfigure-model-chat-memory-repository-neo4j │ │ │ │ │ ├── pom.xml │ │ │ │ │ └── src │ │ │ │ │ ├── main │ │ │ │ │ ├── java │ │ │ │ │ │ └── org │ │ │ │ │ │ │ └── springframework │ │ │ │ │ │ │ └── ai │ │ │ │ │ │ │ └── model │ │ │ │ │ │ │ └── chat │ │ │ │ │ │ │ └── memory │ │ │ │ │ │ │ └── repository │ │ │ │ │ │ │ └── neo4j │ │ │ │ │ │ │ └── autoconfigure │ │ │ │ │ │ │ ├── Neo4jChatMemoryRepositoryAutoConfiguration.java │ │ │ │ │ │ │ └── Neo4jChatMemoryRepositoryProperties.java │ │ │ │ │ └── resources │ │ │ │ │ │ └── META-INF │ │ │ │ │ │ └── spring │ │ │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ │ │ └── test │ │ │ │ │ └── java │ │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── model │ │ │ │ │ └── chat │ │ │ │ │ └── memory │ │ │ │ │ └── repository │ │ │ │ │ └── neo4j │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── Neo4JChatMemoryRepositoryPropertiesTest.java │ │ │ │ │ └── Neo4jChatMemoryRepositoryAutoConfigurationIT.java │ │ │ └── spring-ai-autoconfigure-model-chat-memory │ │ │ │ ├── pom.xml │ │ │ │ └── src │ │ │ │ ├── main │ │ │ │ ├── java │ │ │ │ │ └── org │ │ │ │ │ │ └── springframework │ │ │ │ │ │ └── ai │ │ │ │ │ │ └── model │ │ │ │ │ │ └── chat │ │ │ │ │ │ └── memory │ │ │ │ │ │ └── autoconfigure │ │ │ │ │ │ └── ChatMemoryAutoConfiguration.java │ │ │ │ └── resources │ │ │ │ │ └── META-INF │ │ │ │ │ └── spring │ │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ │ └── test │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── model │ │ │ │ └── chat │ │ │ │ └── memory │ │ │ │ └── autoconfigure │ │ │ │ └── ChatMemoryAutoConfigurationTests.java │ │ └── observation │ │ │ └── spring-ai-autoconfigure-model-chat-observation │ │ │ ├── pom.xml │ │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── model │ │ │ │ │ └── chat │ │ │ │ │ └── observation │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── ChatObservationAutoConfiguration.java │ │ │ │ │ ├── ChatObservationProperties.java │ │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── model │ │ │ └── chat │ │ │ └── observation │ │ │ └── autoconfigure │ │ │ └── ChatObservationAutoConfigurationTests.java │ ├── embedding │ │ └── observation │ │ │ └── spring-ai-autoconfigure-model-embedding-observation │ │ │ ├── pom.xml │ │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── model │ │ │ │ │ └── embedding │ │ │ │ │ └── observation │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── EmbeddingObservationAutoConfiguration.java │ │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── model │ │ │ └── embedding │ │ │ └── observation │ │ │ └── autoconfigure │ │ │ └── EmbeddingObservationAutoConfigurationTests.java │ ├── image │ │ └── observation │ │ │ └── spring-ai-autoconfigure-model-image-observation │ │ │ ├── pom.xml │ │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── model │ │ │ │ │ └── image │ │ │ │ │ └── observation │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── ImageObservationAutoConfiguration.java │ │ │ │ │ ├── ImageObservationProperties.java │ │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── model │ │ │ └── image │ │ │ └── observation │ │ │ └── autoconfigure │ │ │ └── ImageObservationAutoConfigurationTests.java │ ├── spring-ai-autoconfigure-model-anthropic │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── model │ │ │ │ │ └── anthropic │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── AnthropicChatAutoConfiguration.java │ │ │ │ │ ├── AnthropicChatProperties.java │ │ │ │ │ └── AnthropicConnectionProperties.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── model │ │ │ └── anthropic │ │ │ └── autoconfigure │ │ │ ├── AnthropicChatAutoConfigurationIT.java │ │ │ ├── AnthropicModelConfigurationTests.java │ │ │ ├── AnthropicPropertiesTests.java │ │ │ └── tool │ │ │ ├── FunctionCallWithFunctionBeanIT.java │ │ │ ├── FunctionCallWithPromptFunctionIT.java │ │ │ └── MockWeatherService.java │ ├── spring-ai-autoconfigure-model-azure-openai │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── model │ │ │ │ │ └── azure │ │ │ │ │ └── openai │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── AzureOpenAIClientBuilderCustomizer.java │ │ │ │ │ ├── AzureOpenAiAudioTranscriptionAutoConfiguration.java │ │ │ │ │ ├── AzureOpenAiAudioTranscriptionProperties.java │ │ │ │ │ ├── AzureOpenAiChatAutoConfiguration.java │ │ │ │ │ ├── AzureOpenAiChatProperties.java │ │ │ │ │ ├── AzureOpenAiClientBuilderConfiguration.java │ │ │ │ │ ├── AzureOpenAiConnectionProperties.java │ │ │ │ │ ├── AzureOpenAiEmbeddingAutoConfiguration.java │ │ │ │ │ ├── AzureOpenAiEmbeddingProperties.java │ │ │ │ │ ├── AzureOpenAiImageAutoConfiguration.java │ │ │ │ │ └── AzureOpenAiImageOptionsProperties.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ ├── additional-spring-configuration-metadata.json │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── model │ │ │ │ └── azure │ │ │ │ └── openai │ │ │ │ └── autoconfigure │ │ │ │ ├── AzureOpenAiAutoConfigurationEntraIT.java │ │ │ │ ├── AzureOpenAiAutoConfigurationIT.java │ │ │ │ ├── AzureOpenAiAutoConfigurationPropertyTests.java │ │ │ │ ├── AzureOpenAiDirectOpenAiAutoConfigurationIT.java │ │ │ │ ├── AzureOpenAiModelConfigurationTests.java │ │ │ │ └── tool │ │ │ │ ├── DeploymentNameUtil.java │ │ │ │ ├── FunctionCallWithFunctionBeanIT.java │ │ │ │ ├── FunctionCallWithFunctionWrapperIT.java │ │ │ │ ├── FunctionCallWithPromptFunctionIT.java │ │ │ │ └── MockWeatherService.java │ │ │ └── resources │ │ │ └── speech │ │ │ └── jfk.flac │ ├── spring-ai-autoconfigure-model-bedrock-ai │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── model │ │ │ │ │ └── bedrock │ │ │ │ │ ├── autoconfigure │ │ │ │ │ ├── BedrockAwsConnectionConfiguration.java │ │ │ │ │ └── BedrockAwsConnectionProperties.java │ │ │ │ │ ├── cohere │ │ │ │ │ └── autoconfigure │ │ │ │ │ │ ├── BedrockCohereEmbeddingAutoConfiguration.java │ │ │ │ │ │ └── BedrockCohereEmbeddingProperties.java │ │ │ │ │ ├── converse │ │ │ │ │ └── autoconfigure │ │ │ │ │ │ ├── BedrockConverseProxyChatAutoConfiguration.java │ │ │ │ │ │ └── BedrockConverseProxyChatProperties.java │ │ │ │ │ └── titan │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── BedrockTitanEmbeddingAutoConfiguration.java │ │ │ │ │ └── BedrockTitanEmbeddingProperties.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── model │ │ │ │ └── bedrock │ │ │ │ ├── autoconfigure │ │ │ │ ├── BedrockAwsConnectionConfigurationIT.java │ │ │ │ ├── BedrockTestUtils.java │ │ │ │ └── RequiresAwsCredentials.java │ │ │ │ ├── cohere │ │ │ │ └── autoconfigure │ │ │ │ │ ├── BedrockCohereEmbeddingAutoConfigurationIT.java │ │ │ │ │ └── BedrockCohereModelConfigurationTests.java │ │ │ │ ├── converse │ │ │ │ └── autoconfigure │ │ │ │ │ ├── BedrockConverseModelConfigurationTests.java │ │ │ │ │ ├── BedrockConverseProxyChatAutoConfigurationIT.java │ │ │ │ │ ├── BedrockConverseProxyChatPropertiesTests.java │ │ │ │ │ └── tool │ │ │ │ │ ├── FunctionCallWithFunctionBeanIT.java │ │ │ │ │ ├── FunctionCallWithPromptFunctionIT.java │ │ │ │ │ └── MockWeatherService.java │ │ │ │ └── titan │ │ │ │ └── autoconfigure │ │ │ │ ├── BedrockTitanEmbeddingAutoConfigurationIT.java │ │ │ │ └── BedrockTitanModelConfigurationTests.java │ │ │ └── resources │ │ │ └── spring_framework.png │ ├── spring-ai-autoconfigure-model-deepseek │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── model │ │ │ │ │ └── deepseek │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── DeepSeekChatAutoConfiguration.java │ │ │ │ │ ├── DeepSeekChatProperties.java │ │ │ │ │ ├── DeepSeekConnectionProperties.java │ │ │ │ │ └── DeepSeekParentProperties.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── model │ │ │ └── deepseek │ │ │ └── autoconfigure │ │ │ ├── DeepSeekAutoConfigurationIT.java │ │ │ ├── DeepSeekPropertiesTests.java │ │ │ └── tool │ │ │ ├── DeepSeekFunctionCallbackIT.java │ │ │ ├── FunctionCallbackInPromptIT.java │ │ │ ├── FunctionCallbackWithPlainFunctionBeanIT.java │ │ │ └── MockWeatherService.java │ ├── spring-ai-autoconfigure-model-huggingface │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── model │ │ │ │ │ └── huggingface │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── HuggingfaceChatAutoConfiguration.java │ │ │ │ │ └── HuggingfaceChatProperties.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── model │ │ │ └── huggingface │ │ │ └── autoconfigure │ │ │ ├── HuggingfaceChatAutoConfigurationIT.java │ │ │ └── HuggingfaceModelConfigurationTests.java │ ├── spring-ai-autoconfigure-model-minimax │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── model │ │ │ │ │ └── minimax │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── MiniMaxChatAutoConfiguration.java │ │ │ │ │ ├── MiniMaxChatProperties.java │ │ │ │ │ ├── MiniMaxConnectionProperties.java │ │ │ │ │ ├── MiniMaxEmbeddingAutoConfiguration.java │ │ │ │ │ ├── MiniMaxEmbeddingProperties.java │ │ │ │ │ └── MiniMaxParentProperties.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── model │ │ │ └── minimax │ │ │ └── autoconfigure │ │ │ ├── FunctionCallbackInPromptIT.java │ │ │ ├── FunctionCallbackWithPlainFunctionBeanIT.java │ │ │ ├── MiniMaxAutoConfigurationIT.java │ │ │ ├── MiniMaxFunctionCallbackIT.java │ │ │ ├── MiniMaxPropertiesTests.java │ │ │ ├── MinimaxModelConfigurationTests.java │ │ │ └── MockWeatherService.java │ ├── spring-ai-autoconfigure-model-mistral-ai │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── model │ │ │ │ │ └── mistralai │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── MistralAiChatAutoConfiguration.java │ │ │ │ │ ├── MistralAiChatProperties.java │ │ │ │ │ ├── MistralAiCommonProperties.java │ │ │ │ │ ├── MistralAiEmbeddingAutoConfiguration.java │ │ │ │ │ ├── MistralAiEmbeddingProperties.java │ │ │ │ │ ├── MistralAiModerationAutoConfiguration.java │ │ │ │ │ ├── MistralAiModerationProperties.java │ │ │ │ │ └── MistralAiParentProperties.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ ├── additional-spring-configuration-metadata.json │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── model │ │ │ └── mistralai │ │ │ └── autoconfigure │ │ │ ├── MistralAiAutoConfigurationIT.java │ │ │ ├── MistralAiPropertiesTests.java │ │ │ ├── MistralModelConfigurationTests.java │ │ │ └── tool │ │ │ ├── PaymentStatusBeanIT.java │ │ │ ├── PaymentStatusBeanOpenAiIT.java │ │ │ ├── PaymentStatusPromptIT.java │ │ │ └── WeatherServicePromptIT.java │ ├── spring-ai-autoconfigure-model-oci-genai │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── model │ │ │ │ │ └── oci │ │ │ │ │ └── genai │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── OCICohereChatModelProperties.java │ │ │ │ │ ├── OCIConnectionProperties.java │ │ │ │ │ ├── OCIEmbeddingModelProperties.java │ │ │ │ │ ├── OCIGenAiChatAutoConfiguration.java │ │ │ │ │ ├── OCIGenAiEmbeddingAutoConfiguration.java │ │ │ │ │ ├── OCIGenAiInferenceClientAutoConfiguration.java │ │ │ │ │ └── ServingMode.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── model │ │ │ └── oci │ │ │ └── genai │ │ │ └── autoconfigure │ │ │ ├── OCIGenAIAutoConfigurationTest.java │ │ │ └── OCIGenAiAutoConfigurationIT.java │ ├── spring-ai-autoconfigure-model-ollama │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── model │ │ │ │ │ └── ollama │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── OllamaApiAutoConfiguration.java │ │ │ │ │ ├── OllamaChatAutoConfiguration.java │ │ │ │ │ ├── OllamaChatProperties.java │ │ │ │ │ ├── OllamaConnectionDetails.java │ │ │ │ │ ├── OllamaConnectionProperties.java │ │ │ │ │ ├── OllamaEmbeddingAutoConfiguration.java │ │ │ │ │ ├── OllamaEmbeddingProperties.java │ │ │ │ │ └── OllamaInitializationProperties.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── model │ │ │ │ └── ollama │ │ │ │ └── autoconfigure │ │ │ │ ├── BaseOllamaIT.java │ │ │ │ ├── OllamaChatAutoConfigurationIT.java │ │ │ │ ├── OllamaChatAutoConfigurationTests.java │ │ │ │ ├── OllamaEmbeddingAutoConfigurationIT.java │ │ │ │ ├── OllamaEmbeddingAutoConfigurationTests.java │ │ │ │ ├── OllamaImage.java │ │ │ │ ├── OllamaModelConfigurationTests.java │ │ │ │ └── tool │ │ │ │ ├── FunctionCallbackInPromptIT.java │ │ │ │ ├── MockWeatherService.java │ │ │ │ ├── OllamaFunctionCallbackIT.java │ │ │ │ └── OllamaFunctionToolBeanIT.java │ │ │ └── kotlin │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── model │ │ │ └── ollama │ │ │ └── autoconfigure │ │ │ └── tool │ │ │ ├── FunctionCallbackContextKotlinIT.kt │ │ │ ├── MockKotlinWeatherService.kt │ │ │ └── ToolCallbackKotlinIT.kt │ ├── spring-ai-autoconfigure-model-openai │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── model │ │ │ │ │ └── openai │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── OpenAIAutoConfigurationUtil.java │ │ │ │ │ ├── OpenAiAudioSpeechAutoConfiguration.java │ │ │ │ │ ├── OpenAiAudioSpeechProperties.java │ │ │ │ │ ├── OpenAiAudioTranscriptionAutoConfiguration.java │ │ │ │ │ ├── OpenAiAudioTranscriptionProperties.java │ │ │ │ │ ├── OpenAiChatAutoConfiguration.java │ │ │ │ │ ├── OpenAiChatProperties.java │ │ │ │ │ ├── OpenAiConnectionProperties.java │ │ │ │ │ ├── OpenAiEmbeddingAutoConfiguration.java │ │ │ │ │ ├── OpenAiEmbeddingProperties.java │ │ │ │ │ ├── OpenAiImageAutoConfiguration.java │ │ │ │ │ ├── OpenAiImageProperties.java │ │ │ │ │ ├── OpenAiModerationAutoConfiguration.java │ │ │ │ │ ├── OpenAiModerationProperties.java │ │ │ │ │ └── OpenAiParentProperties.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ ├── additional-spring-configuration-metadata.json │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── model │ │ │ │ └── openai │ │ │ │ └── autoconfigure │ │ │ │ ├── ChatClientAutoConfigurationIT.java │ │ │ │ ├── OpenAiAutoConfigurationIT.java │ │ │ │ ├── OpenAiModelConfigurationTests.java │ │ │ │ ├── OpenAiPropertiesTests.java │ │ │ │ ├── OpenAiResponseFormatPropertiesTests.java │ │ │ │ └── tool │ │ │ │ ├── FunctionCallbackInPrompt2IT.java │ │ │ │ ├── FunctionCallbackInPromptIT.java │ │ │ │ ├── FunctionCallbackWithPlainFunctionBeanIT.java │ │ │ │ ├── MockWeatherService.java │ │ │ │ ├── OpenAiFunctionCallback2IT.java │ │ │ │ └── OpenAiFunctionCallbackIT.java │ │ │ └── resources │ │ │ └── speech │ │ │ └── jfk.flac │ ├── spring-ai-autoconfigure-model-postgresml-embedding │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── model │ │ │ │ │ └── postgresml │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── PostgresMlEmbeddingAutoConfiguration.java │ │ │ │ │ └── PostgresMlEmbeddingProperties.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── model │ │ │ └── postgresml │ │ │ └── autoconfigure │ │ │ ├── PostgresMlEmbeddingAutoConfigurationIT.java │ │ │ └── PostgresMlEmbeddingPropertiesTests.java │ ├── spring-ai-autoconfigure-model-stability-ai │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── model │ │ │ │ │ └── stabilityai │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── StabilityAiConnectionProperties.java │ │ │ │ │ ├── StabilityAiImageAutoConfiguration.java │ │ │ │ │ ├── StabilityAiImageProperties.java │ │ │ │ │ └── StabilityAiParentProperties.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── model │ │ │ └── stabilityai │ │ │ └── autoconfigure │ │ │ ├── StabilityAiAutoConfigurationIT.java │ │ │ └── StabilityAiImagePropertiesTests.java │ ├── spring-ai-autoconfigure-model-transformers │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── model │ │ │ │ │ └── transformers │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── TransformersEmbeddingModelAutoConfiguration.java │ │ │ │ │ └── TransformersEmbeddingModelProperties.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── model │ │ │ └── transformers │ │ │ └── autoconfigure │ │ │ └── TransformersEmbeddingModelAutoConfigurationIT.java │ ├── spring-ai-autoconfigure-model-vertex-ai │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── model │ │ │ │ │ └── vertexai │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── embedding │ │ │ │ │ ├── VertexAiEmbeddingConnectionAutoConfiguration.java │ │ │ │ │ ├── VertexAiEmbeddingConnectionProperties.java │ │ │ │ │ ├── VertexAiMultiModalEmbeddingAutoConfiguration.java │ │ │ │ │ ├── VertexAiMultimodalEmbeddingProperties.java │ │ │ │ │ ├── VertexAiTextEmbeddingAutoConfiguration.java │ │ │ │ │ └── VertexAiTextEmbeddingProperties.java │ │ │ │ │ └── gemini │ │ │ │ │ ├── VertexAiGeminiChatAutoConfiguration.java │ │ │ │ │ ├── VertexAiGeminiChatProperties.java │ │ │ │ │ └── VertexAiGeminiConnectionProperties.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── model │ │ │ └── vertexai │ │ │ └── autoconfigure │ │ │ ├── embedding │ │ │ └── VertexAiTextEmbeddingModelAutoConfigurationIT.java │ │ │ └── gemini │ │ │ ├── VertexAiGeminiChatAutoConfigurationIT.java │ │ │ ├── VertexAiModelConfigurationTests.java │ │ │ └── tool │ │ │ ├── FunctionCallWithFunctionBeanIT.java │ │ │ ├── FunctionCallWithFunctionWrapperIT.java │ │ │ ├── FunctionCallWithPromptFunctionIT.java │ │ │ └── MockWeatherService.java │ ├── spring-ai-autoconfigure-model-zhipuai │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── springframework │ │ │ │ │ └── ai │ │ │ │ │ └── model │ │ │ │ │ └── zhipuai │ │ │ │ │ └── autoconfigure │ │ │ │ │ ├── ZhiPuAiChatAutoConfiguration.java │ │ │ │ │ ├── ZhiPuAiChatProperties.java │ │ │ │ │ ├── ZhiPuAiConnectionProperties.java │ │ │ │ │ ├── ZhiPuAiEmbeddingAutoConfiguration.java │ │ │ │ │ ├── ZhiPuAiEmbeddingProperties.java │ │ │ │ │ ├── ZhiPuAiImageAutoConfiguration.java │ │ │ │ │ ├── ZhiPuAiImageProperties.java │ │ │ │ │ └── ZhiPuAiParentProperties.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── model │ │ │ └── zhipuai │ │ │ └── autoconfigure │ │ │ ├── ZhiPuAiAutoConfigurationIT.java │ │ │ ├── ZhiPuAiPropertiesTests.java │ │ │ └── tool │ │ │ ├── FunctionCallbackInPromptIT.java │ │ │ ├── FunctionCallbackWithPlainFunctionBeanIT.java │ │ │ ├── MockWeatherService.java │ │ │ └── ZhipuAiFunctionCallbackIT.java │ └── tool │ │ └── spring-ai-autoconfigure-model-tool │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── model │ │ │ │ └── tool │ │ │ │ └── autoconfigure │ │ │ │ ├── ToolCallingAutoConfiguration.java │ │ │ │ └── ToolCallingProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── model │ │ └── tool │ │ └── autoconfigure │ │ └── ToolCallingAutoConfigurationTests.java └── vector-stores │ ├── spring-ai-autoconfigure-vector-store-azure-cosmos-db │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vectorstore │ │ │ │ └── cosmosdb │ │ │ │ └── autoconfigure │ │ │ │ ├── CosmosDBVectorStoreAutoConfiguration.java │ │ │ │ └── CosmosDBVectorStoreProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── cosmosdb │ │ └── autoconfigure │ │ └── CosmosDBVectorStoreAutoConfigurationIT.java │ ├── spring-ai-autoconfigure-vector-store-azure │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vectorstore │ │ │ │ └── azure │ │ │ │ └── autoconfigure │ │ │ │ ├── AzureVectorStoreAutoConfiguration.java │ │ │ │ └── AzureVectorStoreProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── azure │ │ └── autoconfigure │ │ └── AzureVectorStoreAutoConfigurationIT.java │ ├── spring-ai-autoconfigure-vector-store-cassandra │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vectorstore │ │ │ │ └── cassandra │ │ │ │ └── autoconfigure │ │ │ │ ├── CassandraVectorStoreAutoConfiguration.java │ │ │ │ └── CassandraVectorStoreProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── cassandra │ │ └── autoconfigure │ │ ├── CassandraVectorStoreAutoConfigurationIT.java │ │ └── CassandraVectorStorePropertiesTests.java │ ├── spring-ai-autoconfigure-vector-store-chroma │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vectorstore │ │ │ │ └── chroma │ │ │ │ └── autoconfigure │ │ │ │ ├── ChromaApiProperties.java │ │ │ │ ├── ChromaConnectionDetails.java │ │ │ │ ├── ChromaVectorStoreAutoConfiguration.java │ │ │ │ └── ChromaVectorStoreProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── chroma │ │ └── autoconfigure │ │ └── ChromaVectorStoreAutoConfigurationIT.java │ ├── spring-ai-autoconfigure-vector-store-couchbase │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vectorstore │ │ │ │ └── couchbase │ │ │ │ └── autoconfigure │ │ │ │ ├── CouchbaseSearchVectorStoreAutoConfiguration.java │ │ │ │ └── CouchbaseSearchVectorStoreProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── couchbase │ │ └── autoconfigure │ │ ├── CouchbaseContainerMetadata.java │ │ └── CouchbaseSearchVectorStoreAutoConfigurationIT.java │ ├── spring-ai-autoconfigure-vector-store-elasticsearch │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vectorstore │ │ │ │ └── elasticsearch │ │ │ │ └── autoconfigure │ │ │ │ ├── ElasticsearchVectorStoreAutoConfiguration.java │ │ │ │ └── ElasticsearchVectorStoreProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── elasticsearch │ │ └── autoconfigure │ │ └── ElasticsearchVectorStoreAutoConfigurationIT.java │ ├── spring-ai-autoconfigure-vector-store-gemfire │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vectorstore │ │ │ │ └── gemfire │ │ │ │ └── autoconfigure │ │ │ │ ├── GemFireConnectionDetails.java │ │ │ │ ├── GemFireVectorStoreAutoConfiguration.java │ │ │ │ └── GemFireVectorStoreProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── gemfire │ │ └── autoconfigure │ │ ├── GemFireVectorStoreAutoConfigurationIT.java │ │ └── GemFireVectorStorePropertiesTests.java │ ├── spring-ai-autoconfigure-vector-store-mariadb │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vectorstore │ │ │ │ └── mariadb │ │ │ │ └── autoconfigure │ │ │ │ ├── MariaDbStoreAutoConfiguration.java │ │ │ │ └── MariaDbStoreProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── mariadb │ │ └── autoconfigure │ │ ├── MariaDbStoreAutoConfigurationIT.java │ │ └── MariaDbStorePropertiesTests.java │ ├── spring-ai-autoconfigure-vector-store-milvus │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vectorstore │ │ │ │ └── milvus │ │ │ │ └── autoconfigure │ │ │ │ ├── MilvusServiceClientConnectionDetails.java │ │ │ │ ├── MilvusServiceClientProperties.java │ │ │ │ ├── MilvusVectorStoreAutoConfiguration.java │ │ │ │ └── MilvusVectorStoreProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── milvus │ │ └── autoconfigure │ │ └── MilvusVectorStoreAutoConfigurationIT.java │ ├── spring-ai-autoconfigure-vector-store-mongodb-atlas │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vectorstore │ │ │ │ └── mongodb │ │ │ │ └── autoconfigure │ │ │ │ ├── MongoDBAtlasVectorStoreAutoConfiguration.java │ │ │ │ └── MongoDBAtlasVectorStoreProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── mongodb │ │ └── autoconfigure │ │ └── MongoDBAtlasVectorStoreAutoConfigurationIT.java │ ├── spring-ai-autoconfigure-vector-store-neo4j │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vectorstore │ │ │ │ └── neo4j │ │ │ │ └── autoconfigure │ │ │ │ ├── Neo4jVectorStoreAutoConfiguration.java │ │ │ │ └── Neo4jVectorStoreProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── neo4j │ │ └── autoconfigure │ │ └── Neo4jVectorStoreAutoConfigurationIT.java │ ├── spring-ai-autoconfigure-vector-store-observation │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vectorstore │ │ │ │ └── observation │ │ │ │ └── autoconfigure │ │ │ │ ├── VectorStoreObservationAutoConfiguration.java │ │ │ │ └── VectorStoreObservationProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── observation │ │ └── autoconfigure │ │ └── VectorStoreObservationAutoConfigurationTests.java │ ├── spring-ai-autoconfigure-vector-store-opensearch │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vectorstore │ │ │ │ └── opensearch │ │ │ │ └── autoconfigure │ │ │ │ ├── AwsOpenSearchConnectionDetails.java │ │ │ │ ├── OpenSearchConnectionDetails.java │ │ │ │ ├── OpenSearchNonAwsCondition.java │ │ │ │ ├── OpenSearchVectorStoreAutoConfiguration.java │ │ │ │ └── OpenSearchVectorStoreProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── opensearch │ │ └── autoconfigure │ │ ├── AwsOpenSearchVectorStoreAutoConfigurationIT.java │ │ ├── OpenSearchVectorStoreAutoConfigurationIT.java │ │ └── OpenSearchVectorStoreNonAwsFallbackIT.java │ ├── spring-ai-autoconfigure-vector-store-oracle │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vectorstore │ │ │ │ └── oracle │ │ │ │ └── autoconfigure │ │ │ │ ├── OracleVectorStoreAutoConfiguration.java │ │ │ │ └── OracleVectorStoreProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── vectorstore │ │ │ └── oracle │ │ │ └── autoconfigure │ │ │ ├── OracleVectorStoreAutoConfigurationIT.java │ │ │ └── OracleVectorStorePropertiesTests.java │ │ └── resources │ │ └── oracle │ │ └── initialize.sql │ ├── spring-ai-autoconfigure-vector-store-pgvector │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vectorstore │ │ │ │ └── pgvector │ │ │ │ └── autoconfigure │ │ │ │ ├── PgVectorStoreAutoConfiguration.java │ │ │ │ └── PgVectorStoreProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── pgvector │ │ └── autoconfigure │ │ ├── PgVectorStoreAutoConfigurationIT.java │ │ └── PgVectorStorePropertiesTests.java │ ├── spring-ai-autoconfigure-vector-store-pinecone │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vectorstore │ │ │ │ └── pinecone │ │ │ │ └── autoconfigure │ │ │ │ ├── PineconeVectorStoreAutoConfiguration.java │ │ │ │ └── PineconeVectorStoreProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── pinecone │ │ └── autoconfigure │ │ ├── PineconeVectorStoreAutoConfigurationIT.java │ │ └── PineconeVectorStorePropertiesTests.java │ ├── spring-ai-autoconfigure-vector-store-qdrant │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vectorstore │ │ │ │ └── qdrant │ │ │ │ └── autoconfigure │ │ │ │ ├── QdrantConnectionDetails.java │ │ │ │ ├── QdrantVectorStoreAutoConfiguration.java │ │ │ │ └── QdrantVectorStoreProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── qdrant │ │ └── autoconfigure │ │ ├── QdrantVectorStoreAutoConfigurationIT.java │ │ ├── QdrantVectorStoreCloudAutoConfigurationIT.java │ │ └── QdrantVectorStorePropertiesTests.java │ ├── spring-ai-autoconfigure-vector-store-redis │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vectorstore │ │ │ │ └── redis │ │ │ │ └── autoconfigure │ │ │ │ ├── RedisVectorStoreAutoConfiguration.java │ │ │ │ └── RedisVectorStoreProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── redis │ │ └── autoconfigure │ │ ├── RedisVectorStoreAutoConfigurationIT.java │ │ └── RedisVectorStorePropertiesTests.java │ ├── spring-ai-autoconfigure-vector-store-typesense │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vectorstore │ │ │ │ └── typesense │ │ │ │ └── autoconfigure │ │ │ │ ├── TypesenseConnectionDetails.java │ │ │ │ ├── TypesenseServiceClientProperties.java │ │ │ │ ├── TypesenseVectorStoreAutoConfiguration.java │ │ │ │ └── TypesenseVectorStoreProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── typesense │ │ └── autoconfigure │ │ └── TypesenseVectorStoreAutoConfigurationIT.java │ └── spring-ai-autoconfigure-vector-store-weaviate │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── vectorstore │ │ │ └── weaviate │ │ │ └── autoconfigure │ │ │ ├── WeaviateConnectionDetails.java │ │ │ ├── WeaviateVectorStoreAutoConfiguration.java │ │ │ └── WeaviateVectorStoreProperties.java │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── vectorstore │ └── weaviate │ └── autoconfigure │ └── WeaviateVectorStoreAutoConfigurationIT.java ├── document-readers ├── jsoup-reader │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── reader │ │ │ └── jsoup │ │ │ ├── JsoupDocumentReader.java │ │ │ └── config │ │ │ └── JsoupDocumentReaderConfig.java │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── reader │ │ │ └── jsoup │ │ │ └── JsoupDocumentReaderTests.java │ │ └── resources │ │ ├── test-group-by.html │ │ └── test.html ├── markdown-reader │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── reader │ │ │ └── markdown │ │ │ ├── MarkdownDocumentReader.java │ │ │ └── config │ │ │ └── MarkdownDocumentReaderConfig.java │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── reader │ │ │ └── markdown │ │ │ └── MarkdownDocumentReaderTest.java │ │ └── resources │ │ ├── blockquote.md │ │ ├── code.md │ │ ├── horizontal-rules.md │ │ ├── lists.md │ │ ├── only-headers.md │ │ ├── simple.md │ │ └── with-formatting.md ├── pdf-reader │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── reader │ │ │ │ └── pdf │ │ │ │ ├── PagePdfDocumentReader.java │ │ │ │ ├── ParagraphPdfDocumentReader.java │ │ │ │ ├── aot │ │ │ │ └── PdfReaderRuntimeHints.java │ │ │ │ ├── config │ │ │ │ ├── ParagraphManager.java │ │ │ │ └── PdfDocumentReaderConfig.java │ │ │ │ └── layout │ │ │ │ ├── Character.java │ │ │ │ ├── CharacterFactory.java │ │ │ │ ├── ForkPDFLayoutTextStripper.java │ │ │ │ ├── PDFLayoutTextStripperByArea.java │ │ │ │ └── TextLine.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── aot.factories │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── reader │ │ │ └── pdf │ │ │ ├── PagePdfDocumentReaderTests.java │ │ │ ├── ParagraphPdfDocumentReaderTests.java │ │ │ ├── aot │ │ │ └── PdfReaderRuntimeHintsTests.java │ │ │ └── layout │ │ │ └── TextLineTest.java │ │ └── resources │ │ ├── sample1.pdf │ │ └── sample2.pdf └── tika-reader │ ├── pom.xml │ └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── reader │ │ └── tika │ │ └── TikaDocumentReader.java │ └── test │ ├── java │ └── org │ │ └── springframework │ │ └── ai │ │ └── reader │ │ └── tika │ │ └── TikaDocumentReaderTests.java │ └── resources │ ├── sample.ppt │ ├── sample.pptx │ ├── sample2.pdf │ ├── word-sample.doc │ └── word-sample.docx ├── mcp └── common │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── mcp │ │ │ ├── AsyncMcpToolCallback.java │ │ │ ├── AsyncMcpToolCallbackProvider.java │ │ │ ├── McpToolUtils.java │ │ │ ├── SyncMcpToolCallback.java │ │ │ ├── SyncMcpToolCallbackProvider.java │ │ │ ├── aot │ │ │ └── McpHints.java │ │ │ ├── customizer │ │ │ ├── McpAsyncClientCustomizer.java │ │ │ └── McpSyncClientCustomizer.java │ │ │ └── package-info.java │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── aot.factories │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── mcp │ ├── SyncMcpToolCallbackProviderTests.java │ ├── SyncMcpToolCallbackTests.java │ └── ToolUtilsTests.java ├── memory └── repository │ ├── spring-ai-model-chat-memory-repository-cassandra │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── chat │ │ │ └── memory │ │ │ └── repository │ │ │ └── cassandra │ │ │ ├── CassandraChatMemoryRepository.java │ │ │ ├── CassandraChatMemoryRepositoryConfig.java │ │ │ └── SchemaUtil.java │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── chat │ │ └── memory │ │ └── repository │ │ └── cassandra │ │ ├── CassandraChatMemoryRepositoryIT.java │ │ └── CassandraImage.java │ ├── spring-ai-model-chat-memory-repository-jdbc │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── chat │ │ │ │ └── memory │ │ │ │ └── repository │ │ │ │ └── jdbc │ │ │ │ ├── HsqldbChatMemoryRepositoryDialect.java │ │ │ │ ├── JdbcChatMemoryRepository.java │ │ │ │ ├── JdbcChatMemoryRepositoryDialect.java │ │ │ │ ├── MysqlChatMemoryRepositoryDialect.java │ │ │ │ ├── PostgresChatMemoryRepositoryDialect.java │ │ │ │ ├── SqlServerChatMemoryRepositoryDialect.java │ │ │ │ ├── aot │ │ │ │ └── hint │ │ │ │ │ └── JdbcChatMemoryRepositoryRuntimeHints.java │ │ │ │ └── package-info.java │ │ └── resources │ │ │ ├── META-INF │ │ │ └── spring │ │ │ │ └── aot.factories │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── chat │ │ │ └── memory │ │ │ └── repository │ │ │ └── jdbc │ │ │ ├── schema-hsqldb.sql │ │ │ ├── schema-mariadb.sql │ │ │ ├── schema-mysql.sql │ │ │ ├── schema-postgresql.sql │ │ │ └── schema-sqlserver.sql │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── chat │ │ │ └── memory │ │ │ └── repository │ │ │ └── jdbc │ │ │ ├── AbstractJdbcChatMemoryRepositoryIT.java │ │ │ ├── JdbcChatMemoryRepositoryBuilderTests.java │ │ │ ├── JdbcChatMemoryRepositoryMariaDbIT.java │ │ │ ├── JdbcChatMemoryRepositoryMysqlIT.java │ │ │ ├── JdbcChatMemoryRepositoryPostgresqlIT.java │ │ │ ├── JdbcChatMemoryRepositorySqlServerIT.java │ │ │ └── aot │ │ │ └── hint │ │ │ └── JdbcChatMemoryRepositoryRuntimeHintsTest.java │ │ └── resources │ │ └── container-license-acceptance.txt │ └── spring-ai-model-chat-memory-repository-neo4j │ ├── pom.xml │ └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── chat │ │ └── memory │ │ └── repository │ │ └── neo4j │ │ ├── MediaAttributes.java │ │ ├── MessageAttributes.java │ │ ├── Neo4jChatMemoryRepository.java │ │ ├── Neo4jChatMemoryRepositoryConfig.java │ │ ├── ToolCallAttributes.java │ │ └── ToolResponseAttributes.java │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── chat │ └── memory │ └── repository │ └── neo4j │ ├── Neo4JChatMemoryRepositoryConfigIT.java │ └── Neo4jChatMemoryRepositoryIT.java ├── models ├── spring-ai-anthropic │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── anthropic │ │ │ │ ├── AnthropicChatModel.java │ │ │ │ ├── AnthropicChatOptions.java │ │ │ │ ├── aot │ │ │ │ └── AnthropicRuntimeHints.java │ │ │ │ ├── api │ │ │ │ ├── AnthropicApi.java │ │ │ │ └── StreamHelper.java │ │ │ │ └── metadata │ │ │ │ └── AnthropicRateLimit.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── aot.factories │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── anthropic │ │ │ ├── AnthropicChatModelAdditionalHttpHeadersIT.java │ │ │ ├── AnthropicChatModelIT.java │ │ │ ├── AnthropicChatModelObservationIT.java │ │ │ ├── AnthropicChatOptionsTests.java │ │ │ ├── AnthropicTestConfiguration.java │ │ │ ├── ChatCompletionRequestTests.java │ │ │ ├── EventParsingTests.java │ │ │ ├── aot │ │ │ └── AnthropicRuntimeHintsTests.java │ │ │ ├── api │ │ │ ├── AnthropicApiBuilderTests.java │ │ │ ├── AnthropicApiIT.java │ │ │ └── tool │ │ │ │ ├── AnthropicApiLegacyToolIT.java │ │ │ │ ├── AnthropicApiToolIT.java │ │ │ │ ├── MockWeatherService.java │ │ │ │ └── XmlHelper.java │ │ │ └── client │ │ │ ├── AnthropicChatClientIT.java │ │ │ ├── AnthropicChatClientMethodInvokingFunctionCallbackIT.java │ │ │ └── ChatClientToolsWithGenericArgumentTypesIT.java │ │ └── resources │ │ ├── application-logging-test.properties │ │ ├── prompts │ │ └── system-message.st │ │ ├── sample_events.json │ │ ├── spring-ai-reference-overview.pdf │ │ └── test.png ├── spring-ai-azure-openai │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── azure │ │ │ │ └── openai │ │ │ │ ├── AzureOpenAiAudioTranscriptionModel.java │ │ │ │ ├── AzureOpenAiAudioTranscriptionOptions.java │ │ │ │ ├── AzureOpenAiChatModel.java │ │ │ │ ├── AzureOpenAiChatOptions.java │ │ │ │ ├── AzureOpenAiEmbeddingModel.java │ │ │ │ ├── AzureOpenAiEmbeddingOptions.java │ │ │ │ ├── AzureOpenAiImageModel.java │ │ │ │ ├── AzureOpenAiImageOptions.java │ │ │ │ ├── AzureOpenAiResponseFormat.java │ │ │ │ ├── MergeUtils.java │ │ │ │ ├── aot │ │ │ │ └── AzureOpenAiRuntimeHints.java │ │ │ │ └── metadata │ │ │ │ ├── AzureOpenAiAudioTranscriptionResponseMetadata.java │ │ │ │ ├── AzureOpenAiImageGenerationMetadata.java │ │ │ │ └── AzureOpenAiImageResponseMetadata.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── aot.factories │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── azure │ │ │ └── openai │ │ │ ├── AzureChatCompletionsOptionsTests.java │ │ │ ├── AzureEmbeddingsOptionsTests.java │ │ │ ├── AzureOpenAiAudioTranscriptionModelIT.java │ │ │ ├── AzureOpenAiChatClientIT.java │ │ │ ├── AzureOpenAiChatModelIT.java │ │ │ ├── AzureOpenAiChatModelObservationIT.java │ │ │ ├── AzureOpenAiChatOptionsTests.java │ │ │ ├── AzureOpenAiEmbeddingModelIT.java │ │ │ ├── AzureOpenAiEmbeddingModelObservationIT.java │ │ │ ├── MockAiTestConfiguration.java │ │ │ ├── MockAzureOpenAiTestConfiguration.java │ │ │ ├── RequiresAzureCredentials.java │ │ │ ├── aot │ │ │ └── AzureOpenAiRuntimeHintsTests.java │ │ │ ├── function │ │ │ ├── AzureOpenAiChatModelFunctionCallIT.java │ │ │ └── MockWeatherService.java │ │ │ ├── image │ │ │ └── AzureOpenAiImageModelIT.java │ │ │ └── metadata │ │ │ └── AzureOpenAiChatModelMetadataTests.java │ │ └── resources │ │ ├── multimodality │ │ └── multimodal.test.png │ │ ├── prompts │ │ └── system-message.st │ │ └── speech │ │ └── jfk.flac ├── spring-ai-bedrock-converse │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── bedrock │ │ │ └── converse │ │ │ ├── BedrockProxyChatModel.java │ │ │ └── api │ │ │ ├── BedrockMediaFormat.java │ │ │ ├── ConverseApiUtils.java │ │ │ └── URLValidator.java │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── bedrock │ │ │ └── converse │ │ │ ├── BedrockConverseChatClientIT.java │ │ │ ├── BedrockConverseTestConfiguration.java │ │ │ ├── BedrockConverseUsageAggregationTests.java │ │ │ ├── BedrockProxyChatModelIT.java │ │ │ ├── BedrockProxyChatModelObservationIT.java │ │ │ ├── BedrockProxyChatModelTest.java │ │ │ ├── MockWeatherService.java │ │ │ ├── RequiresAwsCredentials.java │ │ │ ├── api │ │ │ └── BedrockMediaFormatTest.java │ │ │ ├── client │ │ │ └── BedrockNovaChatClientIT.java │ │ │ └── experiments │ │ │ ├── BedrockConverseChatModelMain.java │ │ │ └── BedrockConverseChatModelMain3.java │ │ └── resources │ │ ├── prompts │ │ └── system-message.st │ │ ├── spring-ai-reference-overview.pdf │ │ ├── test.png │ │ └── test.video.mp4 ├── spring-ai-bedrock │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── bedrock │ │ │ │ ├── MessageToPromptConverter.java │ │ │ │ ├── aot │ │ │ │ └── BedrockRuntimeHints.java │ │ │ │ ├── api │ │ │ │ └── AbstractBedrockApi.java │ │ │ │ ├── cohere │ │ │ │ ├── BedrockCohereEmbeddingModel.java │ │ │ │ ├── BedrockCohereEmbeddingOptions.java │ │ │ │ └── api │ │ │ │ │ └── CohereEmbeddingBedrockApi.java │ │ │ │ └── titan │ │ │ │ ├── BedrockTitanEmbeddingModel.java │ │ │ │ ├── BedrockTitanEmbeddingOptions.java │ │ │ │ └── api │ │ │ │ └── TitanEmbeddingBedrockApi.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── aot.factories │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── bedrock │ │ │ ├── RequiresAwsCredentials.java │ │ │ ├── aot │ │ │ └── BedrockRuntimeHintsTests.java │ │ │ ├── api │ │ │ └── AbstractBedrockApiTest.java │ │ │ ├── cohere │ │ │ ├── BedrockCohereEmbeddingModelIT.java │ │ │ └── api │ │ │ │ └── CohereEmbeddingBedrockApiIT.java │ │ │ └── titan │ │ │ ├── BedrockTitanEmbeddingModelIT.java │ │ │ └── api │ │ │ └── TitanEmbeddingBedrockApiIT.java │ │ └── resources │ │ ├── prompts │ │ └── system-message.st │ │ ├── spring_framework.png │ │ └── test.png ├── spring-ai-deepseek │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── deepseek │ │ │ │ ├── DeepSeekAssistantMessage.java │ │ │ │ ├── DeepSeekChatModel.java │ │ │ │ ├── DeepSeekChatOptions.java │ │ │ │ ├── aot │ │ │ │ └── DeepSeekRuntimeHints.java │ │ │ │ └── api │ │ │ │ ├── DeepSeekApi.java │ │ │ │ ├── DeepSeekStreamFunctionCallingHelper.java │ │ │ │ ├── ResponseFormat.java │ │ │ │ └── common │ │ │ │ └── DeepSeekConstants.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── aot.factories │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── deepseek │ │ │ ├── DeepSeekChatCompletionRequestTests.java │ │ │ ├── DeepSeekRetryTests.java │ │ │ ├── DeepSeekTestConfiguration.java │ │ │ ├── aot │ │ │ └── DeepSeekRuntimeHintsTests.java │ │ │ ├── api │ │ │ ├── DeepSeekApiIT.java │ │ │ └── MockWeatherService.java │ │ │ └── chat │ │ │ ├── ActorsFilms.java │ │ │ ├── DeepSeekChatModelFunctionCallingIT.java │ │ │ ├── DeepSeekChatModelIT.java │ │ │ └── DeepSeekChatModelObservationIT.java │ │ └── resources │ │ └── prompts │ │ └── system-message.st ├── spring-ai-huggingface │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── huggingface │ │ │ │ └── HuggingfaceChatModel.java │ │ └── resources │ │ │ ├── handlebars │ │ │ └── Java │ │ │ │ └── libraries │ │ │ │ └── resttemplate │ │ │ │ └── auth │ │ │ │ └── HttpBasicAuth.mustache │ │ │ └── openapi.json │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── huggingface │ │ ├── HuggingfaceTestConfiguration.java │ │ └── client │ │ └── ClientIT.java ├── spring-ai-minimax │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── minimax │ │ │ │ ├── MiniMaxChatModel.java │ │ │ │ ├── MiniMaxChatOptions.java │ │ │ │ ├── MiniMaxEmbeddingModel.java │ │ │ │ ├── MiniMaxEmbeddingOptions.java │ │ │ │ ├── aot │ │ │ │ └── MiniMaxRuntimeHints.java │ │ │ │ └── api │ │ │ │ ├── MiniMaxApi.java │ │ │ │ ├── MiniMaxApiConstants.java │ │ │ │ └── MiniMaxStreamFunctionCallingHelper.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── aot.factories │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── minimax │ │ │ ├── ChatCompletionRequestTests.java │ │ │ ├── MiniMaxTestConfiguration.java │ │ │ ├── api │ │ │ ├── MiniMaxApiIT.java │ │ │ ├── MiniMaxApiToolFunctionCallIT.java │ │ │ ├── MiniMaxRetryTests.java │ │ │ └── MockWeatherService.java │ │ │ ├── chat │ │ │ ├── MiniMaxChatModelObservationIT.java │ │ │ └── MiniMaxChatOptionsTests.java │ │ │ └── embedding │ │ │ ├── EmbeddingIT.java │ │ │ └── MiniMaxEmbeddingModelObservationIT.java │ │ └── resources │ │ └── prompts │ │ └── system-message.st ├── spring-ai-mistral-ai │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── mistralai │ │ │ │ ├── MistralAiChatModel.java │ │ │ │ ├── MistralAiChatOptions.java │ │ │ │ ├── MistralAiEmbeddingModel.java │ │ │ │ ├── MistralAiEmbeddingOptions.java │ │ │ │ ├── aot │ │ │ │ └── MistralAiRuntimeHints.java │ │ │ │ ├── api │ │ │ │ ├── MistralAiApi.java │ │ │ │ ├── MistralAiModerationApi.java │ │ │ │ └── MistralAiStreamFunctionCallingHelper.java │ │ │ │ └── moderation │ │ │ │ ├── MistralAiModerationModel.java │ │ │ │ └── MistralAiModerationOptions.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── aot.factories │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── mistralai │ │ │ ├── MistralAiChatClientIT.java │ │ │ ├── MistralAiChatCompletionRequestTest.java │ │ │ ├── MistralAiChatModelIT.java │ │ │ ├── MistralAiChatModelObservationIT.java │ │ │ ├── MistralAiEmbeddingIT.java │ │ │ ├── MistralAiEmbeddingModelObservationIT.java │ │ │ ├── MistralAiModerationModelIT.java │ │ │ ├── MistralAiRetryTests.java │ │ │ ├── MistralAiTestConfiguration.java │ │ │ ├── MockWeatherService.java │ │ │ ├── aot │ │ │ └── MistralAiRuntimeHintsTests.java │ │ │ └── api │ │ │ ├── MistralAiApiIT.java │ │ │ └── tool │ │ │ ├── MistralAiApiToolFunctionCallIT.java │ │ │ ├── MockWeatherService.java │ │ │ └── PaymentStatusFunctionCallingIT.java │ │ └── resources │ │ ├── prompts │ │ ├── acme │ │ │ └── system-qa.st │ │ ├── eval │ │ │ ├── qa-evaluator-accurate-answer.st │ │ │ ├── qa-evaluator-fact-based-answer.st │ │ │ ├── qa-evaluator-not-related-message.st │ │ │ └── user-evaluator-message.st │ │ └── system-message.st │ │ └── test.png ├── spring-ai-oci-genai │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── oci │ │ │ ├── OCIEmbeddingModel.java │ │ │ ├── OCIEmbeddingOptions.java │ │ │ ├── ServingModeHelper.java │ │ │ └── cohere │ │ │ ├── OCICohereChatModel.java │ │ │ └── OCICohereChatOptions.java │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── oci │ │ ├── BaseEmbeddingModelTest.java │ │ ├── BaseOCIGenAITest.java │ │ ├── OCIEmbeddingModelIT.java │ │ └── cohere │ │ ├── OCICohereChatModelIT.java │ │ └── OCICohereChatOptionsTests.java ├── spring-ai-ollama │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── ollama │ │ │ │ ├── OllamaChatModel.java │ │ │ │ ├── OllamaEmbeddingModel.java │ │ │ │ ├── aot │ │ │ │ └── OllamaRuntimeHints.java │ │ │ │ ├── api │ │ │ │ ├── OllamaApi.java │ │ │ │ ├── OllamaApiHelper.java │ │ │ │ ├── OllamaModel.java │ │ │ │ ├── OllamaOptions.java │ │ │ │ └── common │ │ │ │ │ └── OllamaApiConstants.java │ │ │ │ └── management │ │ │ │ ├── ModelManagementOptions.java │ │ │ │ ├── OllamaModelManager.java │ │ │ │ ├── PullModelStrategy.java │ │ │ │ └── package-info.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── aot.factories │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── ollama │ │ │ ├── BaseOllamaIT.java │ │ │ ├── OllamaChatModelFunctionCallingIT.java │ │ │ ├── OllamaChatModelIT.java │ │ │ ├── OllamaChatModelMultimodalIT.java │ │ │ ├── OllamaChatModelObservationIT.java │ │ │ ├── OllamaChatModelTests.java │ │ │ ├── OllamaChatRequestTests.java │ │ │ ├── OllamaEmbeddingModelIT.java │ │ │ ├── OllamaEmbeddingModelObservationIT.java │ │ │ ├── OllamaEmbeddingModelTests.java │ │ │ ├── OllamaEmbeddingRequestTests.java │ │ │ ├── OllamaImage.java │ │ │ ├── aot │ │ │ └── OllamaRuntimeHintsTests.java │ │ │ ├── api │ │ │ ├── OllamaApiIT.java │ │ │ ├── OllamaApiModelsIT.java │ │ │ ├── OllamaDurationFieldsTests.java │ │ │ ├── OllamaModelOptionsTests.java │ │ │ └── tool │ │ │ │ ├── MockWeatherService.java │ │ │ │ └── OllamaApiToolFunctionCallIT.java │ │ │ └── management │ │ │ └── OllamaModelManagerIT.java │ │ └── resources │ │ ├── doc │ │ └── Ollama Chat API.jpg │ │ ├── norway.webp │ │ └── test.png ├── spring-ai-openai │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── openai │ │ │ │ ├── ImageResponseMetadata.java │ │ │ │ ├── OpenAiAudioSpeechModel.java │ │ │ │ ├── OpenAiAudioSpeechOptions.java │ │ │ │ ├── OpenAiAudioTranscriptionModel.java │ │ │ │ ├── OpenAiAudioTranscriptionOptions.java │ │ │ │ ├── OpenAiChatModel.java │ │ │ │ ├── OpenAiChatOptions.java │ │ │ │ ├── OpenAiEmbeddingModel.java │ │ │ │ ├── OpenAiEmbeddingOptions.java │ │ │ │ ├── OpenAiImageModel.java │ │ │ │ ├── OpenAiImageOptions.java │ │ │ │ ├── OpenAiModerationModel.java │ │ │ │ ├── OpenAiModerationOptions.java │ │ │ │ ├── aot │ │ │ │ └── OpenAiRuntimeHints.java │ │ │ │ ├── api │ │ │ │ ├── OpenAiApi.java │ │ │ │ ├── OpenAiAudioApi.java │ │ │ │ ├── OpenAiImageApi.java │ │ │ │ ├── OpenAiModerationApi.java │ │ │ │ ├── OpenAiStreamFunctionCallingHelper.java │ │ │ │ ├── ResponseFormat.java │ │ │ │ └── common │ │ │ │ │ ├── OpenAiApiClientErrorException.java │ │ │ │ │ └── OpenAiApiConstants.java │ │ │ │ ├── audio │ │ │ │ └── speech │ │ │ │ │ ├── Speech.java │ │ │ │ │ ├── SpeechMessage.java │ │ │ │ │ ├── SpeechModel.java │ │ │ │ │ ├── SpeechPrompt.java │ │ │ │ │ ├── SpeechResponse.java │ │ │ │ │ └── StreamingSpeechModel.java │ │ │ │ └── metadata │ │ │ │ ├── OpenAiImageGenerationMetadata.java │ │ │ │ ├── OpenAiModerationGenerationMetadata.java │ │ │ │ ├── OpenAiRateLimit.java │ │ │ │ ├── audio │ │ │ │ ├── OpenAiAudioSpeechMetadata.java │ │ │ │ ├── OpenAiAudioSpeechResponseMetadata.java │ │ │ │ └── OpenAiAudioTranscriptionResponseMetadata.java │ │ │ │ └── support │ │ │ │ ├── OpenAiApiResponseHeaders.java │ │ │ │ └── OpenAiResponseHeaderExtractor.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── aot.factories │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── openai │ │ │ ├── ChatCompletionRequestTests.java │ │ │ ├── OpenAiChatOptionsTests.java │ │ │ ├── OpenAiImageOptionsTests.java │ │ │ ├── OpenAiTestConfiguration.java │ │ │ ├── TranscriptionRequestTests.java │ │ │ ├── acme │ │ │ └── AcmeIT.java │ │ │ ├── aot │ │ │ └── OpenAiRuntimeHintsTests.java │ │ │ ├── api │ │ │ ├── OpenAiApiBuilderTests.java │ │ │ ├── OpenAiApiIT.java │ │ │ ├── OpenAiChatModelMutateTests.java │ │ │ ├── OpenAiStreamFunctionCallingHelperTest.java │ │ │ └── tool │ │ │ │ ├── MockWeatherService.java │ │ │ │ └── OpenAiApiToolFunctionCallIT.java │ │ │ ├── audio │ │ │ ├── api │ │ │ │ ├── OpenAiAudioApiBuilderTests.java │ │ │ │ ├── OpenAiAudioApiIT.java │ │ │ │ └── OpenAiAudioModelNoOpApiKeysIT.java │ │ │ ├── speech │ │ │ │ ├── OpenAiSpeechModelIT.java │ │ │ │ └── OpenAiSpeechModelWithSpeechResponseMetadataTests.java │ │ │ └── transcription │ │ │ │ ├── OpenAiTranscriptionModelIT.java │ │ │ │ ├── OpenAiTranscriptionModelWithTranscriptionResponseMetadataTests.java │ │ │ │ └── TranscriptionModelTests.java │ │ │ ├── chat │ │ │ ├── ActorsFilms.java │ │ │ ├── MessageTypeContentTests.java │ │ │ ├── OpenAiChatModelAdditionalHttpHeadersIT.java │ │ │ ├── OpenAiChatModelFunctionCallingIT.java │ │ │ ├── OpenAiChatModelIT.java │ │ │ ├── OpenAiChatModelNoOpApiKeysIT.java │ │ │ ├── OpenAiChatModelObservationIT.java │ │ │ ├── OpenAiChatModelResponseFormatIT.java │ │ │ ├── OpenAiChatModelTypeReferenceBeanOutputConverterIT.java │ │ │ ├── OpenAiChatModelWithChatResponseMetadataTests.java │ │ │ ├── OpenAiCompatibleChatModelIT.java │ │ │ ├── OpenAiPaymentTransactionIT.java │ │ │ ├── OpenAiRetryTests.java │ │ │ ├── client │ │ │ │ ├── ChatClientToolsWithGenericArgumentTypesIT.java │ │ │ │ ├── OpenAiChatClientIT.java │ │ │ │ ├── OpenAiChatClientMemoryAdvisorReproIT.java │ │ │ │ ├── OpenAiChatClientMethodInvokingFunctionCallbackIT.java │ │ │ │ ├── OpenAiChatClientMultipleFunctionCallsIT.java │ │ │ │ ├── ReReadingAdvisor.java │ │ │ │ └── advisor │ │ │ │ │ ├── AbstractChatMemoryAdvisorIT.java │ │ │ │ │ ├── MessageChatMemoryAdvisorIT.java │ │ │ │ │ └── PromptChatMemoryAdvisorIT.java │ │ │ └── proxy │ │ │ │ ├── DeepSeekWithOpenAiChatModelIT.java │ │ │ │ ├── DockerModelRunnerWithOpenAiChatModelIT.java │ │ │ │ ├── GroqWithOpenAiChatModelIT.java │ │ │ │ ├── MistralWithOpenAiChatModelIT.java │ │ │ │ ├── MultiOpenAiClientIT.java │ │ │ │ ├── NvidiaWithOpenAiChatModelIT.java │ │ │ │ ├── OllamaWithOpenAiChatModelIT.java │ │ │ │ ├── PerplexityWithOpenAiChatModelIT.java │ │ │ │ └── VertexAIGeminiWithOpenAiChatModelIT.java │ │ │ ├── embedding │ │ │ ├── EmbeddingIT.java │ │ │ └── OpenAiEmbeddingModelObservationIT.java │ │ │ ├── image │ │ │ ├── OpenAiImageModelIT.java │ │ │ ├── OpenAiImageModelNoOpApiKeysIT.java │ │ │ ├── OpenAiImageModelObservationIT.java │ │ │ ├── OpenAiImageModelWithImageResponseMetadataTests.java │ │ │ └── api │ │ │ │ └── OpenAiImageApiBuilderTests.java │ │ │ ├── metadata │ │ │ ├── OpenAiUsageTests.java │ │ │ └── support │ │ │ │ └── OpenAiResponseHeaderExtractorTests.java │ │ │ ├── moderation │ │ │ ├── OpenAiModerationModelIT.java │ │ │ ├── OpenAiModerationModelNoOpApiKeysIT.java │ │ │ ├── OpenAiModerationModelTests.java │ │ │ └── api │ │ │ │ └── OpenAiModerationApiBuilderTests.java │ │ │ ├── testutils │ │ │ └── AbstractIT.java │ │ │ ├── transformer │ │ │ └── MetadataTransformerIT.java │ │ │ └── vectorstore │ │ │ └── SimplePersistentVectorStoreIT.java │ │ └── resources │ │ ├── application-logging-test.properties │ │ ├── data │ │ └── acme │ │ │ └── bikes.json │ │ ├── prompts │ │ ├── acme │ │ │ └── system-qa.st │ │ ├── eval │ │ │ ├── qa-evaluator-accurate-answer.st │ │ │ ├── qa-evaluator-fact-based-answer.st │ │ │ ├── qa-evaluator-not-related-message.st │ │ │ └── user-evaluator-message.st │ │ └── system-message.st │ │ ├── speech │ │ ├── jfk.flac │ │ └── speech1.mp3 │ │ ├── test.png │ │ └── text_source.txt ├── spring-ai-postgresml │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── postgresml │ │ │ ├── PostgresMlEmbeddingModel.java │ │ │ └── PostgresMlEmbeddingOptions.java │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── postgresml │ │ ├── PostgresMlEmbeddingModelIT.java │ │ └── PostgresMlEmbeddingOptionsTests.java ├── spring-ai-stability-ai │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── stabilityai │ │ │ ├── StabilityAiImageGenerationMetadata.java │ │ │ ├── StabilityAiImageModel.java │ │ │ ├── StyleEnum.java │ │ │ └── api │ │ │ ├── StabilityAiApi.java │ │ │ └── StabilityAiImageOptions.java │ │ └── test │ │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── stabilityai │ │ ├── StabilityAiApiIT.java │ │ ├── StabilityAiImageModelIT.java │ │ ├── StabilityAiImageOptionsTests.java │ │ └── StabilityAiImageTestConfiguration.java ├── spring-ai-transformers │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── transformers │ │ │ │ ├── ResourceCacheService.java │ │ │ │ └── TransformersEmbeddingModel.java │ │ └── resources │ │ │ └── onnx │ │ │ └── all-MiniLM-L6-v2 │ │ │ ├── model.onnx │ │ │ ├── model.png │ │ │ └── tokenizer.json │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── transformers │ │ │ ├── ResourceCacheServiceTests.java │ │ │ ├── TransformersEmbeddingModelObservationTests.java │ │ │ ├── TransformersEmbeddingModelTests.java │ │ │ └── samples │ │ │ └── ONNXSample.java │ │ └── resources │ │ └── Test.py ├── spring-ai-vertex-ai-embedding │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── vertexai │ │ │ └── embedding │ │ │ ├── VertexAiEmbeddingConnectionDetails.java │ │ │ ├── VertexAiEmbeddingUtils.java │ │ │ ├── multimodal │ │ │ ├── VertexAiMultimodalEmbeddingModel.java │ │ │ ├── VertexAiMultimodalEmbeddingModelName.java │ │ │ └── VertexAiMultimodalEmbeddingOptions.java │ │ │ └── text │ │ │ ├── VertexAiTextEmbeddingModel.java │ │ │ ├── VertexAiTextEmbeddingModelName.java │ │ │ └── VertexAiTextEmbeddingOptions.java │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── vertexai │ │ │ └── embedding │ │ │ ├── multimodal │ │ │ └── VertexAiMultimodalEmbeddingModelIT.java │ │ │ └── text │ │ │ ├── TestVertexAiTextEmbeddingModel.java │ │ │ ├── VertexAiTextEmbeddingModelIT.java │ │ │ ├── VertexAiTextEmbeddingModelObservationIT.java │ │ │ └── VertexAiTextEmbeddingRetryTests.java │ │ └── resources │ │ ├── test.image.png │ │ └── test.video.mp4 ├── spring-ai-vertex-ai-gemini │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── springframework │ │ │ │ └── ai │ │ │ │ └── vertexai │ │ │ │ └── gemini │ │ │ │ ├── MimeTypeDetector.java │ │ │ │ ├── VertexAiGeminiChatModel.java │ │ │ │ ├── VertexAiGeminiChatOptions.java │ │ │ │ ├── aot │ │ │ │ └── VertexAiGeminiRuntimeHints.java │ │ │ │ ├── common │ │ │ │ ├── VertexAiGeminiConstants.java │ │ │ │ └── VertexAiGeminiSafetySetting.java │ │ │ │ └── schema │ │ │ │ ├── JsonSchemaConverter.java │ │ │ │ └── VertexToolCallingManager.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── aot.factories │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── vertexai │ │ │ └── gemini │ │ │ ├── CreateGeminiRequestTests.java │ │ │ ├── TestVertexAiGeminiChatModel.java │ │ │ ├── VertexAiChatModelObservationIT.java │ │ │ ├── VertexAiGeminiChatModelIT.java │ │ │ ├── VertexAiGeminiRetryTests.java │ │ │ ├── aot │ │ │ └── VertexAiGeminiRuntimeHintsTests.java │ │ │ ├── schema │ │ │ └── JsonSchemaConverterTests.java │ │ │ └── tool │ │ │ ├── MockWeatherService.java │ │ │ ├── VertexAiGeminiChatModelToolCallingIT.java │ │ │ ├── VertexAiGeminiPaymentTransactionIT.java │ │ │ ├── VertexAiGeminiPaymentTransactionMethodIT.java │ │ │ └── VertexAiGeminiPaymentTransactionToolsIT.java │ │ └── resources │ │ ├── prompts │ │ └── system-message.st │ │ ├── spring-ai-reference-overview.pdf │ │ └── vertex.test.png └── spring-ai-zhipuai │ ├── README.md │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── zhipuai │ │ │ ├── ZhiPuAiChatModel.java │ │ │ ├── ZhiPuAiChatOptions.java │ │ │ ├── ZhiPuAiEmbeddingModel.java │ │ │ ├── ZhiPuAiEmbeddingOptions.java │ │ │ ├── ZhiPuAiImageModel.java │ │ │ ├── ZhiPuAiImageOptions.java │ │ │ ├── aot │ │ │ └── ZhiPuAiRuntimeHints.java │ │ │ └── api │ │ │ ├── ZhiPuAiApi.java │ │ │ ├── ZhiPuAiImageApi.java │ │ │ ├── ZhiPuAiStreamFunctionCallingHelper.java │ │ │ └── ZhiPuApiConstants.java │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── aot.factories │ └── test │ ├── java │ └── org │ │ └── springframework │ │ └── ai │ │ └── zhipuai │ │ ├── ChatCompletionRequestTests.java │ │ ├── ZhiPuAiTestConfiguration.java │ │ ├── api │ │ ├── MockWeatherService.java │ │ ├── ZhiPuAiApiIT.java │ │ ├── ZhiPuAiApiToolFunctionCallIT.java │ │ └── ZhiPuAiRetryTests.java │ │ ├── chat │ │ ├── ActorsFilms.java │ │ ├── ZhiPuAiChatModelIT.java │ │ └── ZhiPuAiChatModelObservationIT.java │ │ ├── embedding │ │ ├── EmbeddingIT.java │ │ └── ZhiPuAiEmbeddingModelObservationIT.java │ │ └── image │ │ └── ZhiPuAiImageModelIT.java │ └── resources │ ├── prompts │ └── system-message.st │ └── test.png ├── mvnw ├── mvnw.cmd ├── pom.xml ├── settings.xml ├── spring-ai-bom └── pom.xml ├── spring-ai-client-chat ├── pom.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── chat │ │ │ ├── client │ │ │ ├── ChatClient.java │ │ │ ├── ChatClientAttributes.java │ │ │ ├── ChatClientCustomizer.java │ │ │ ├── ChatClientMessageAggregator.java │ │ │ ├── ChatClientRequest.java │ │ │ ├── ChatClientResponse.java │ │ │ ├── DefaultChatClient.java │ │ │ ├── DefaultChatClientBuilder.java │ │ │ ├── DefaultChatClientUtils.java │ │ │ ├── ResponseEntity.java │ │ │ ├── advisor │ │ │ │ ├── AdvisorUtils.java │ │ │ │ ├── ChatModelCallAdvisor.java │ │ │ │ ├── ChatModelStreamAdvisor.java │ │ │ │ ├── DefaultAroundAdvisorChain.java │ │ │ │ ├── LastMaxTokenSizeContentPurger.java │ │ │ │ ├── MessageChatMemoryAdvisor.java │ │ │ │ ├── PromptChatMemoryAdvisor.java │ │ │ │ ├── SafeGuardAdvisor.java │ │ │ │ ├── SimpleLoggerAdvisor.java │ │ │ │ ├── api │ │ │ │ │ ├── Advisor.java │ │ │ │ │ ├── AdvisorChain.java │ │ │ │ │ ├── BaseAdvisor.java │ │ │ │ │ ├── BaseAdvisorChain.java │ │ │ │ │ ├── BaseChatMemoryAdvisor.java │ │ │ │ │ ├── CallAdvisor.java │ │ │ │ │ ├── CallAdvisorChain.java │ │ │ │ │ ├── StreamAdvisor.java │ │ │ │ │ ├── StreamAdvisorChain.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── observation │ │ │ │ │ ├── AdvisorObservationContext.java │ │ │ │ │ ├── AdvisorObservationConvention.java │ │ │ │ │ ├── AdvisorObservationDocumentation.java │ │ │ │ │ ├── DefaultAdvisorObservationConvention.java │ │ │ │ │ └── package-info.java │ │ │ │ └── package-info.java │ │ │ ├── observation │ │ │ │ ├── ChatClientObservationContext.java │ │ │ │ ├── ChatClientObservationConvention.java │ │ │ │ ├── ChatClientObservationDocumentation.java │ │ │ │ ├── ChatClientPromptContentObservationHandler.java │ │ │ │ ├── DefaultChatClientObservationConvention.java │ │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ │ ├── evaluation │ │ │ ├── FactCheckingEvaluator.java │ │ │ └── RelevancyEvaluator.java │ │ │ └── package-info.java │ └── kotlin │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── chat │ │ └── client │ │ └── ChatClientExtensions.kt │ └── test │ ├── java │ └── org │ │ └── springframework │ │ └── ai │ │ ├── TestConfiguration.java │ │ ├── chat │ │ ├── client │ │ │ ├── ChatClientAdvisorTests.java │ │ │ ├── ChatClientRequestTests.java │ │ │ ├── ChatClientResponseEntityTests.java │ │ │ ├── ChatClientResponseTests.java │ │ │ ├── ChatClientTest.java │ │ │ ├── DefaultChatClientBuilderTests.java │ │ │ ├── DefaultChatClientTests.java │ │ │ ├── DefaultChatClientUtilsTests.java │ │ │ ├── advisor │ │ │ │ ├── AdvisorUtilsTests.java │ │ │ │ ├── AdvisorsTests.java │ │ │ │ ├── ChatModelCallAdvisorTests.java │ │ │ │ ├── ChatModelStreamAdvisorTests.java │ │ │ │ ├── DefaultAroundAdvisorChainTests.java │ │ │ │ ├── MessageChatMemoryAdvisorTests.java │ │ │ │ ├── PromptChatMemoryAdvisorTests.java │ │ │ │ ├── SimpleLoggerAdvisorTests.java │ │ │ │ └── observation │ │ │ │ │ ├── AdvisorObservationContextTests.java │ │ │ │ │ └── DefaultAdvisorObservationConventionTests.java │ │ │ └── observation │ │ │ │ ├── ChatClientObservationContextTests.java │ │ │ │ ├── ChatClientPromptContentObservationHandlerTests.java │ │ │ │ └── DefaultChatClientObservationConventionTests.java │ │ └── evaluation │ │ │ └── RelevancyEvaluatorTests.java │ │ ├── metadata │ │ └── PromptMetadataTests.java │ │ └── prompt │ │ ├── PromptTemplateTest.java │ │ └── PromptTests.java │ ├── kotlin │ └── org │ │ └── springframework │ │ └── ai │ │ └── chat │ │ └── client │ │ └── ChatClientExtensionsTests.kt │ └── resources │ ├── application-logging-test.properties │ ├── bikes.json │ ├── logback.xml │ ├── system-prompt.txt │ ├── tabby-cat.png │ ├── text_source.txt │ └── user-prompt.txt ├── spring-ai-commons ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ ├── content │ │ ├── Content.java │ │ ├── Media.java │ │ ├── MediaContent.java │ │ └── package-info.java │ │ ├── document │ │ ├── ContentFormatter.java │ │ ├── DefaultContentFormatter.java │ │ ├── Document.java │ │ ├── DocumentMetadata.java │ │ ├── DocumentReader.java │ │ ├── DocumentTransformer.java │ │ ├── DocumentWriter.java │ │ ├── MetadataMode.java │ │ ├── id │ │ │ ├── IdGenerator.java │ │ │ ├── JdkSha256HexIdGenerator.java │ │ │ └── RandomIdGenerator.java │ │ └── package-info.java │ │ ├── embedding │ │ ├── BatchingStrategy.java │ │ └── TokenCountBatchingStrategy.java │ │ ├── evaluation │ │ ├── EvaluationRequest.java │ │ ├── EvaluationResponse.java │ │ └── Evaluator.java │ │ ├── observation │ │ ├── AiOperationMetadata.java │ │ ├── ObservabilityHelper.java │ │ ├── TracingAwareLoggingObservationHandler.java │ │ ├── conventions │ │ │ ├── AiObservationAttributes.java │ │ │ ├── AiObservationMetricAttributes.java │ │ │ ├── AiObservationMetricNames.java │ │ │ ├── AiOperationType.java │ │ │ ├── AiProvider.java │ │ │ ├── AiTokenType.java │ │ │ ├── SpringAiKind.java │ │ │ ├── VectorStoreObservationAttributes.java │ │ │ ├── VectorStoreProvider.java │ │ │ ├── VectorStoreSimilarityMetric.java │ │ │ └── package-info.java │ │ └── package-info.java │ │ ├── reader │ │ ├── EmptyJsonMetadataGenerator.java │ │ ├── ExtractedTextFormatter.java │ │ ├── JsonMetadataGenerator.java │ │ ├── JsonReader.java │ │ └── TextReader.java │ │ ├── template │ │ ├── NoOpTemplateRenderer.java │ │ ├── TemplateRenderer.java │ │ └── ValidationMode.java │ │ ├── tokenizer │ │ ├── JTokkitTokenCountEstimator.java │ │ └── TokenCountEstimator.java │ │ ├── transformer │ │ ├── ContentFormatTransformer.java │ │ └── splitter │ │ │ ├── TextSplitter.java │ │ │ └── TokenTextSplitter.java │ │ ├── util │ │ ├── JacksonUtils.java │ │ ├── LoggingMarkers.java │ │ ├── ParsingUtils.java │ │ └── ResourceUtils.java │ │ └── writer │ │ └── FileDocumentWriter.java │ └── test │ ├── java │ └── org │ │ └── springframework │ │ └── ai │ │ ├── TestConfiguration.java │ │ ├── document │ │ ├── ContentFormatterTests.java │ │ ├── DocumentBuilderTests.java │ │ ├── DocumentTests.java │ │ ├── TextBlockAssertion.java │ │ └── id │ │ │ ├── IdGeneratorProviderTest.java │ │ │ └── JdkSha256HexIdGeneratorTest.java │ │ ├── embedding │ │ └── TokenCountBatchingStrategyTests.java │ │ ├── observation │ │ ├── AiOperationMetadataTests.java │ │ ├── ObservabilityHelperTests.java │ │ └── TracingAwareLoggingObservationHandlerTests.java │ │ ├── reader │ │ ├── JsonReaderTests.java │ │ └── TextReaderTests.java │ │ ├── template │ │ └── NoOpTemplateRendererTests.java │ │ └── transformer │ │ └── splitter │ │ ├── TextSplitterTests.java │ │ └── TokenTextSplitterTest.java │ ├── kotlin │ └── org │ │ └── springframework │ │ └── ai │ │ └── utils │ │ └── JacksonUtilsKotlinTests.kt │ └── resources │ ├── bikes.json │ ├── events.json │ ├── person.json │ └── text_source.txt ├── spring-ai-docs ├── pom.xml └── src │ ├── assembly │ └── javadocs.xml │ └── main │ ├── antora │ ├── antora-playbook.yml │ ├── antora.yml │ ├── modules │ │ └── ROOT │ │ │ ├── images │ │ │ ├── advisors-api-classes.jpg │ │ │ ├── advisors-flow.jpg │ │ │ ├── advisors-non-stream-vs-stream.jpg │ │ │ ├── anthropic-claude3-class-diagram.jpg │ │ │ ├── anthropic-claude3-events-model.jpg │ │ │ ├── bedrock │ │ │ │ ├── bedrock-anthropic-chat-api.png │ │ │ │ ├── bedrock-cohere-chat-low-level-api.jpg │ │ │ │ ├── bedrock-cohere-embedding-low-level-api.jpg │ │ │ │ ├── bedrock-llama-chat-api.jpg │ │ │ │ ├── bedrock-titan-chat-low-level-api.jpg │ │ │ │ └── bedrock-titan-embedding-low-level-api.jpg │ │ │ ├── chat-options-flow.jpg │ │ │ ├── deepseek_r1_multiround_example.png │ │ │ ├── embeddings-api.jpg │ │ │ ├── etl-class-diagram.jpg │ │ │ ├── etl-pipeline.jpg │ │ │ ├── function-calling-basic-flow.jpg │ │ │ ├── function-calling-tool-context.jpg │ │ │ ├── hanadb │ │ │ │ ├── 0.png │ │ │ │ ├── 1.png │ │ │ │ ├── 10.png │ │ │ │ ├── 11.png │ │ │ │ ├── 13.png │ │ │ │ ├── 14.png │ │ │ │ ├── 15.png │ │ │ │ ├── 16.png │ │ │ │ ├── 17.png │ │ │ │ ├── 18.png │ │ │ │ ├── 19.png │ │ │ │ ├── 2.png │ │ │ │ ├── 20.1.png │ │ │ │ ├── 20.2.png │ │ │ │ ├── 21.png │ │ │ │ ├── 22.png │ │ │ │ ├── 23.png │ │ │ │ ├── 24.png │ │ │ │ ├── 25.png │ │ │ │ ├── 26.png │ │ │ │ ├── 27.png │ │ │ │ ├── 28.png │ │ │ │ ├── 29.png │ │ │ │ ├── 3.png │ │ │ │ ├── 30.png │ │ │ │ ├── 31.png │ │ │ │ ├── 32.png │ │ │ │ ├── 33.png │ │ │ │ ├── 34.1.png │ │ │ │ ├── 34.2.png │ │ │ │ ├── 35.png │ │ │ │ ├── 36.png │ │ │ │ ├── 37.png │ │ │ │ ├── 38.png │ │ │ │ ├── 39.png │ │ │ │ ├── 4.png │ │ │ │ ├── 40.png │ │ │ │ ├── 5.png │ │ │ │ ├── 6.png │ │ │ │ ├── 7.png │ │ │ │ ├── 8.png │ │ │ │ ├── 9.png │ │ │ │ └── wikipedia.png │ │ │ ├── lawofcosines.png │ │ │ ├── mcp │ │ │ │ ├── java-mcp-client-architecture.jpg │ │ │ │ ├── java-mcp-server-architecture.jpg │ │ │ │ ├── java-mcp-uml-classdiagram.svg │ │ │ │ └── mcp-stack.svg │ │ │ ├── mistral-ai-function-calling-flow.jpg │ │ │ ├── model-hierarchy.jpg │ │ │ ├── multimodal.test.png │ │ │ ├── no.svg │ │ │ ├── ollama-chat-completion-api.jpg │ │ │ ├── ollama-chatmodel-function-call.jpg │ │ │ ├── ollama-function-calling-flow.jpg │ │ │ ├── openai-chat-api.jpg │ │ │ ├── openai-chatclient-function-call.jpg │ │ │ ├── openai-function-calling-flow.jpg │ │ │ ├── orbis-sensualium-pictus2.jpg │ │ │ ├── pythagorean-triangle.png │ │ │ ├── spring-ai-chat-api.jpg │ │ │ ├── spring-ai-chat-completions-clients.jpg │ │ │ ├── spring-ai-concepts-model-types.jpg │ │ │ ├── spring-ai-concepts-tokens.png │ │ │ ├── spring-ai-deepseek-integration.jpg │ │ │ ├── spring-ai-dependencies.png │ │ │ ├── spring-ai-document1-api.jpg │ │ │ ├── spring-ai-embeddings.jpg │ │ │ ├── spring-ai-generic-model-api.jpg │ │ │ ├── spring-ai-groq-functions-2.jpg │ │ │ ├── spring-ai-groq-integration.jpg │ │ │ ├── spring-ai-integration-diagram-3.svg │ │ │ ├── spring-ai-mcp-architecture.jpg │ │ │ ├── spring-ai-message-api.jpg │ │ │ ├── spring-ai-nvidia-function-calling.jpg │ │ │ ├── spring-ai-nvidia-llm-api-1.jpg │ │ │ ├── spring-ai-nvidia-registration.jpg │ │ │ ├── spring-ai-ollama-over-openai.jpg │ │ │ ├── spring-ai-perplexity-integration.jpg │ │ │ ├── spring-ai-prompt-stuffing.jpg │ │ │ ├── spring-ai-rag.jpg │ │ │ ├── spring_ai_logo_with_text.svg │ │ │ ├── structured-output-api.jpg │ │ │ ├── structured-output-architecture.jpg │ │ │ ├── structured-output-hierarchy4.jpg │ │ │ ├── test.pdf.png │ │ │ ├── test.video.jpeg │ │ │ ├── tools │ │ │ │ ├── framework-manager.jpg │ │ │ │ ├── framework-manager.png │ │ │ │ ├── return-direct.jpg │ │ │ │ ├── return-direct.png │ │ │ │ ├── tool-calling-01.jpg │ │ │ │ ├── tool-context.jpg │ │ │ │ └── tool-context.png │ │ │ ├── vector_2d_coordinates.png │ │ │ ├── vector_similarity.png │ │ │ ├── vertex-ai-chat-low-level-api.jpg │ │ │ ├── vertex-ai-gemini-native-api.jpg │ │ │ └── yes.svg │ │ │ ├── nav.adoc │ │ │ └── pages │ │ │ ├── api │ │ │ ├── advisors.adoc │ │ │ ├── aimetadata.adoc │ │ │ ├── audio │ │ │ │ ├── speech.adoc │ │ │ │ ├── speech │ │ │ │ │ └── openai-speech.adoc │ │ │ │ ├── transcriptions.adoc │ │ │ │ └── transcriptions │ │ │ │ │ ├── azure-openai-transcriptions.adoc │ │ │ │ │ └── openai-transcriptions.adoc │ │ │ ├── bedrock-chat.adoc │ │ │ ├── bedrock.adoc │ │ │ ├── chat-memory.adoc │ │ │ ├── chat │ │ │ │ ├── anthropic-chat.adoc │ │ │ │ ├── azure-openai-chat.adoc │ │ │ │ ├── bedrock-converse.adoc │ │ │ │ ├── comparison.adoc │ │ │ │ ├── deepseek-chat.adoc │ │ │ │ ├── dmr-chat.adoc │ │ │ │ ├── google-vertexai.adoc │ │ │ │ ├── groq-chat.adoc │ │ │ │ ├── huggingface.adoc │ │ │ │ ├── minimax-chat.adoc │ │ │ │ ├── mistralai-chat.adoc │ │ │ │ ├── moonshot-chat.adoc │ │ │ │ ├── nvidia-chat.adoc │ │ │ │ ├── oci-genai │ │ │ │ │ └── cohere-chat.adoc │ │ │ │ ├── ollama-chat.adoc │ │ │ │ ├── openai-chat.adoc │ │ │ │ ├── perplexity-chat.adoc │ │ │ │ ├── prompt-engineering-patterns.adoc │ │ │ │ ├── qianfan-chat.adoc │ │ │ │ ├── vertexai-gemini-chat.adoc │ │ │ │ └── zhipuai-chat.adoc │ │ │ ├── chatclient.adoc │ │ │ ├── chatmodel.adoc │ │ │ ├── cloud-bindings.adoc │ │ │ ├── docker-compose.adoc │ │ │ ├── effective-agents.adoc │ │ │ ├── embeddings.adoc │ │ │ ├── embeddings │ │ │ │ ├── azure-openai-embeddings.adoc │ │ │ │ ├── bedrock-cohere-embedding.adoc │ │ │ │ ├── bedrock-titan-embedding.adoc │ │ │ │ ├── minimax-embeddings.adoc │ │ │ │ ├── mistralai-embeddings.adoc │ │ │ │ ├── oci-genai-embeddings.adoc │ │ │ │ ├── ollama-embeddings.adoc │ │ │ │ ├── onnx.adoc │ │ │ │ ├── openai-embeddings.adoc │ │ │ │ ├── postgresml-embeddings.adoc │ │ │ │ ├── qianfan-embeddings.adoc │ │ │ │ ├── vertexai-embeddings-multimodal.adoc │ │ │ │ ├── vertexai-embeddings-text.adoc │ │ │ │ └── zhipuai-embeddings.adoc │ │ │ ├── etl-pipeline.adoc │ │ │ ├── generic-model.adoc │ │ │ ├── image │ │ │ │ ├── azure-openai-image.adoc │ │ │ │ ├── openai-image.adoc │ │ │ │ ├── qianfan-image.adoc │ │ │ │ ├── stabilityai-image.adoc │ │ │ │ └── zhipuai-image.adoc │ │ │ ├── imageclient.adoc │ │ │ ├── index.adoc │ │ │ ├── mcp │ │ │ │ ├── mcp-client-boot-starter-docs.adoc │ │ │ │ ├── mcp-helpers.adoc │ │ │ │ ├── mcp-overview.adoc │ │ │ │ └── mcp-server-boot-starter-docs.adoc │ │ │ ├── moderation │ │ │ │ ├── mistral-ai-moderation.adoc │ │ │ │ └── openai-moderation.adoc │ │ │ ├── multimodality.adoc │ │ │ ├── prompt.adoc │ │ │ ├── retrieval-augmented-generation.adoc │ │ │ ├── speech.adoc │ │ │ ├── structured-output-converter.adoc │ │ │ ├── testcontainers.adoc │ │ │ ├── testing.adoc │ │ │ ├── tools-migration.adoc │ │ │ ├── tools.adoc │ │ │ ├── transcriptions.adoc │ │ │ ├── usage-handling.adoc │ │ │ ├── vectordbs.adoc │ │ │ └── vectordbs │ │ │ │ ├── apache-cassandra.adoc │ │ │ │ ├── azure-cosmos-db.adoc │ │ │ │ ├── azure.adoc │ │ │ │ ├── chroma.adoc │ │ │ │ ├── coherence.adoc │ │ │ │ ├── couchbase.adoc │ │ │ │ ├── elasticsearch.adoc │ │ │ │ ├── gemfire.adoc │ │ │ │ ├── hana.adoc │ │ │ │ ├── hanadb-provision-a-trial-account.adoc │ │ │ │ ├── mariadb.adoc │ │ │ │ ├── milvus.adoc │ │ │ │ ├── mongodb.adoc │ │ │ │ ├── neo4j.adoc │ │ │ │ ├── opensearch.adoc │ │ │ │ ├── oracle.adoc │ │ │ │ ├── pgvector.adoc │ │ │ │ ├── pinecone.adoc │ │ │ │ ├── qdrant.adoc │ │ │ │ ├── redis.adoc │ │ │ │ ├── typesense.adoc │ │ │ │ ├── understand-vectordbs.adoc │ │ │ │ └── weaviate.adoc │ │ │ ├── concepts.adoc │ │ │ ├── contribution-guidelines.adoc │ │ │ ├── getting-started.adoc │ │ │ ├── glossary.adoc │ │ │ ├── index.adoc │ │ │ ├── observability │ │ │ └── index.adoc │ │ │ ├── providers │ │ │ └── huggingface │ │ │ │ └── index.adoc │ │ │ └── upgrade-notes.adoc │ └── resources │ │ └── antora-resources │ │ └── antora.yml │ ├── asciidoc │ └── mcp.md │ └── javadoc │ └── overview.html ├── spring-ai-integration-tests ├── pom.xml └── src │ └── test │ ├── java │ └── org │ │ └── springframework │ │ └── ai │ │ └── integration │ │ └── tests │ │ ├── TestApplication.java │ │ ├── TestcontainersConfiguration.java │ │ ├── client │ │ └── advisor │ │ │ ├── QuestionAnswerAdvisorIT.java │ │ │ ├── QuestionAnswerAdvisorStreamIT.java │ │ │ └── RetrievalAugmentationAdvisorIT.java │ │ ├── rag │ │ ├── generation │ │ │ └── augmentation │ │ │ │ └── ContextualQueryAugmenterIT.java │ │ ├── preretrieval │ │ │ └── query │ │ │ │ ├── expansion │ │ │ │ └── MultiQueryExpanderIT.java │ │ │ │ └── transformation │ │ │ │ ├── CompressionQueryTransformerIT.java │ │ │ │ ├── RewriteQueryTransformerIT.java │ │ │ │ └── TranslationQueryTransformerIT.java │ │ └── retrieval │ │ │ └── search │ │ │ └── VectorStoreDocumentRetrieverIT.java │ │ ├── tool │ │ ├── FunctionToolCallbackTests.java │ │ ├── MethodToolCallbackTests.java │ │ ├── ToolCallingManagerTests.java │ │ └── domain │ │ │ ├── Author.java │ │ │ ├── Book.java │ │ │ └── BookService.java │ │ └── vectorstore │ │ └── SimpleVectorStoreIT.java │ └── resources │ ├── application.yml │ └── documents │ └── knowledge-base.md ├── spring-ai-model ├── pom.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ ├── aot │ │ │ ├── AiRuntimeHints.java │ │ │ ├── KnuddelsRuntimeHints.java │ │ │ ├── SpringAiCoreRuntimeHints.java │ │ │ ├── ToolBeanRegistrationAotProcessor.java │ │ │ ├── ToolRuntimeHints.java │ │ │ └── package-info.java │ │ │ ├── audio │ │ │ └── transcription │ │ │ │ ├── AudioTranscription.java │ │ │ │ ├── AudioTranscriptionMetadata.java │ │ │ │ ├── AudioTranscriptionOptions.java │ │ │ │ ├── AudioTranscriptionPrompt.java │ │ │ │ ├── AudioTranscriptionResponse.java │ │ │ │ └── AudioTranscriptionResponseMetadata.java │ │ │ ├── chat │ │ │ ├── memory │ │ │ │ ├── ChatMemory.java │ │ │ │ ├── ChatMemoryRepository.java │ │ │ │ ├── InMemoryChatMemoryRepository.java │ │ │ │ ├── MessageWindowChatMemory.java │ │ │ │ └── package-info.java │ │ │ ├── messages │ │ │ │ ├── AbstractMessage.java │ │ │ │ ├── AssistantMessage.java │ │ │ │ ├── Message.java │ │ │ │ ├── MessageType.java │ │ │ │ ├── MessageUtils.java │ │ │ │ ├── SystemMessage.java │ │ │ │ ├── ToolResponseMessage.java │ │ │ │ ├── UserMessage.java │ │ │ │ └── package-info.java │ │ │ ├── metadata │ │ │ │ ├── ChatGenerationMetadata.java │ │ │ │ ├── ChatResponseMetadata.java │ │ │ │ ├── DefaultChatGenerationMetadata.java │ │ │ │ ├── DefaultChatGenerationMetadataBuilder.java │ │ │ │ ├── DefaultUsage.java │ │ │ │ ├── EmptyRateLimit.java │ │ │ │ ├── EmptyUsage.java │ │ │ │ ├── PromptMetadata.java │ │ │ │ ├── RateLimit.java │ │ │ │ └── Usage.java │ │ │ ├── model │ │ │ │ ├── ChatModel.java │ │ │ │ ├── ChatResponse.java │ │ │ │ ├── Generation.java │ │ │ │ ├── MessageAggregator.java │ │ │ │ ├── StreamingChatModel.java │ │ │ │ └── ToolContext.java │ │ │ ├── observation │ │ │ │ ├── ChatModelCompletionObservationHandler.java │ │ │ │ ├── ChatModelMeterObservationHandler.java │ │ │ │ ├── ChatModelObservationContext.java │ │ │ │ ├── ChatModelObservationConvention.java │ │ │ │ ├── ChatModelObservationDocumentation.java │ │ │ │ ├── ChatModelPromptContentObservationHandler.java │ │ │ │ ├── DefaultChatModelObservationConvention.java │ │ │ │ └── package-info.java │ │ │ └── prompt │ │ │ │ ├── AssistantPromptTemplate.java │ │ │ │ ├── ChatOptions.java │ │ │ │ ├── ChatPromptTemplate.java │ │ │ │ ├── DefaultChatOptions.java │ │ │ │ ├── DefaultChatOptionsBuilder.java │ │ │ │ ├── FunctionPromptTemplate.java │ │ │ │ ├── Prompt.java │ │ │ │ ├── PromptTemplate.java │ │ │ │ ├── PromptTemplateActions.java │ │ │ │ ├── PromptTemplateChatActions.java │ │ │ │ ├── PromptTemplateMessageActions.java │ │ │ │ ├── PromptTemplateStringActions.java │ │ │ │ └── SystemPromptTemplate.java │ │ │ ├── converter │ │ │ ├── AbstractConversionServiceOutputConverter.java │ │ │ ├── AbstractMessageOutputConverter.java │ │ │ ├── BeanOutputConverter.java │ │ │ ├── FormatProvider.java │ │ │ ├── ListOutputConverter.java │ │ │ ├── MapOutputConverter.java │ │ │ ├── README.md │ │ │ └── StructuredOutputConverter.java │ │ │ ├── embedding │ │ │ ├── AbstractEmbeddingModel.java │ │ │ ├── DocumentEmbeddingModel.java │ │ │ ├── DocumentEmbeddingRequest.java │ │ │ ├── Embedding.java │ │ │ ├── EmbeddingModel.java │ │ │ ├── EmbeddingOptions.java │ │ │ ├── EmbeddingOptionsBuilder.java │ │ │ ├── EmbeddingRequest.java │ │ │ ├── EmbeddingResponse.java │ │ │ ├── EmbeddingResponseMetadata.java │ │ │ ├── EmbeddingResultMetadata.java │ │ │ ├── observation │ │ │ │ ├── DefaultEmbeddingModelObservationConvention.java │ │ │ │ ├── EmbeddingModelMeterObservationHandler.java │ │ │ │ ├── EmbeddingModelObservationContext.java │ │ │ │ ├── EmbeddingModelObservationConvention.java │ │ │ │ ├── EmbeddingModelObservationDocumentation.java │ │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ │ ├── image │ │ │ ├── Image.java │ │ │ ├── ImageGeneration.java │ │ │ ├── ImageGenerationMetadata.java │ │ │ ├── ImageMessage.java │ │ │ ├── ImageModel.java │ │ │ ├── ImageOptions.java │ │ │ ├── ImageOptionsBuilder.java │ │ │ ├── ImagePrompt.java │ │ │ ├── ImageResponse.java │ │ │ ├── ImageResponseMetadata.java │ │ │ └── observation │ │ │ │ ├── DefaultImageModelObservationConvention.java │ │ │ │ ├── ImageModelObservationContext.java │ │ │ │ ├── ImageModelObservationConvention.java │ │ │ │ ├── ImageModelObservationDocumentation.java │ │ │ │ ├── ImageModelPromptContentObservationHandler.java │ │ │ │ └── package-info.java │ │ │ ├── model │ │ │ ├── AbstractResponseMetadata.java │ │ │ ├── ApiKey.java │ │ │ ├── ChatModelDescription.java │ │ │ ├── EmbeddingModelDescription.java │ │ │ ├── EmbeddingUtils.java │ │ │ ├── KotlinModule.java │ │ │ ├── Model.java │ │ │ ├── ModelDescription.java │ │ │ ├── ModelOptions.java │ │ │ ├── ModelOptionsUtils.java │ │ │ ├── ModelRequest.java │ │ │ ├── ModelResponse.java │ │ │ ├── ModelResult.java │ │ │ ├── MutableResponseMetadata.java │ │ │ ├── NoopApiKey.java │ │ │ ├── ResponseMetadata.java │ │ │ ├── ResultMetadata.java │ │ │ ├── SimpleApiKey.java │ │ │ ├── SpringAIModelProperties.java │ │ │ ├── SpringAIModels.java │ │ │ ├── StreamingModel.java │ │ │ ├── observation │ │ │ │ ├── ErrorLoggingObservationHandler.java │ │ │ │ ├── ModelObservationContext.java │ │ │ │ ├── ModelUsageMetricsGenerator.java │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ ├── tool │ │ │ │ ├── DefaultToolCallingChatOptions.java │ │ │ │ ├── DefaultToolCallingManager.java │ │ │ │ ├── DefaultToolExecutionEligibilityPredicate.java │ │ │ │ ├── DefaultToolExecutionResult.java │ │ │ │ ├── ToolCallingChatOptions.java │ │ │ │ ├── ToolCallingManager.java │ │ │ │ ├── ToolExecutionEligibilityChecker.java │ │ │ │ ├── ToolExecutionEligibilityPredicate.java │ │ │ │ ├── ToolExecutionResult.java │ │ │ │ └── package-info.java │ │ │ └── transformer │ │ │ │ ├── KeywordMetadataEnricher.java │ │ │ │ └── SummaryMetadataEnricher.java │ │ │ ├── moderation │ │ │ ├── Categories.java │ │ │ ├── CategoryScores.java │ │ │ ├── Generation.java │ │ │ ├── Moderation.java │ │ │ ├── ModerationGenerationMetadata.java │ │ │ ├── ModerationMessage.java │ │ │ ├── ModerationModel.java │ │ │ ├── ModerationOptions.java │ │ │ ├── ModerationOptionsBuilder.java │ │ │ ├── ModerationPrompt.java │ │ │ ├── ModerationResponse.java │ │ │ ├── ModerationResponseMetadata.java │ │ │ └── ModerationResult.java │ │ │ ├── support │ │ │ ├── ToolCallbacks.java │ │ │ └── UsageCalculator.java │ │ │ ├── tool │ │ │ ├── StaticToolCallbackProvider.java │ │ │ ├── ToolCallback.java │ │ │ ├── ToolCallbackProvider.java │ │ │ ├── annotation │ │ │ │ ├── Tool.java │ │ │ │ ├── ToolParam.java │ │ │ │ └── package-info.java │ │ │ ├── definition │ │ │ │ ├── DefaultToolDefinition.java │ │ │ │ ├── ToolDefinition.java │ │ │ │ └── package-info.java │ │ │ ├── execution │ │ │ │ ├── DefaultToolCallResultConverter.java │ │ │ │ ├── DefaultToolExecutionExceptionProcessor.java │ │ │ │ ├── ToolCallResultConverter.java │ │ │ │ ├── ToolExecutionException.java │ │ │ │ ├── ToolExecutionExceptionProcessor.java │ │ │ │ └── package-info.java │ │ │ ├── function │ │ │ │ ├── FunctionToolCallback.java │ │ │ │ └── package-info.java │ │ │ ├── metadata │ │ │ │ ├── DefaultToolMetadata.java │ │ │ │ ├── ToolMetadata.java │ │ │ │ └── package-info.java │ │ │ ├── method │ │ │ │ ├── MethodToolCallback.java │ │ │ │ ├── MethodToolCallbackProvider.java │ │ │ │ └── package-info.java │ │ │ ├── observation │ │ │ │ ├── DefaultToolCallingObservationConvention.java │ │ │ │ ├── ToolCallingContentObservationFilter.java │ │ │ │ ├── ToolCallingObservationContext.java │ │ │ │ ├── ToolCallingObservationConvention.java │ │ │ │ ├── ToolCallingObservationDocumentation.java │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ ├── resolution │ │ │ │ ├── DelegatingToolCallbackResolver.java │ │ │ │ ├── SpringBeanToolCallbackResolver.java │ │ │ │ ├── StaticToolCallbackResolver.java │ │ │ │ ├── ToolCallbackResolver.java │ │ │ │ ├── TypeResolverHelper.java │ │ │ │ └── package-info.java │ │ │ └── support │ │ │ │ ├── ToolDefinitions.java │ │ │ │ ├── ToolUtils.java │ │ │ │ └── package-info.java │ │ │ └── util │ │ │ └── json │ │ │ ├── JsonParser.java │ │ │ ├── package-info.java │ │ │ └── schema │ │ │ ├── JsonSchemaGenerator.java │ │ │ ├── SchemaType.java │ │ │ ├── SpringAiSchemaModule.java │ │ │ └── package-info.java │ └── resources │ │ ├── META-INF │ │ └── spring │ │ │ └── aot.factories │ │ └── embedding │ │ └── embedding-model-dimensions.properties │ └── test │ ├── java │ └── org │ │ └── springframework │ │ └── ai │ │ ├── aot │ │ ├── AiRuntimeHintsTests.java │ │ ├── KnuddelsRuntimeHintsTest.java │ │ ├── SpringAiCoreRuntimeHintsTest.java │ │ ├── ToolBeanRegistrationAotProcessorTests.java │ │ └── ToolRuntimeHintsTests.java │ │ ├── chat │ │ ├── ChatModelTests.java │ │ ├── memory │ │ │ ├── InMemoryChatMemoryRepositoryTests.java │ │ │ └── MessageWindowChatMemoryTests.java │ │ ├── messages │ │ │ ├── MessageUtilsTests.java │ │ │ ├── SystemMessageTests.java │ │ │ └── UserMessageTests.java │ │ ├── metadata │ │ │ └── DefaultUsageTests.java │ │ ├── model │ │ │ ├── ChatResponseTests.java │ │ │ └── GenerationTests.java │ │ ├── observation │ │ │ ├── ChatModelCompletionObservationHandlerTests.java │ │ │ ├── ChatModelMeterObservationHandlerTests.java │ │ │ ├── ChatModelObservationContextTests.java │ │ │ ├── ChatModelPromptContentObservationHandlerTests.java │ │ │ └── DefaultChatModelObservationConventionTests.java │ │ └── prompt │ │ │ ├── ChatOptionsBuilderTests.java │ │ │ ├── PromptTemplateBuilderTests.java │ │ │ ├── PromptTemplateTests.java │ │ │ └── PromptTests.java │ │ ├── converter │ │ ├── BeanOutputConverterTest.java │ │ └── ListOutputConverterTest.java │ │ ├── embedding │ │ ├── AbstractEmbeddingModelTests.java │ │ └── observation │ │ │ ├── DefaultEmbeddingModelObservationConventionTests.java │ │ │ ├── EmbeddingModelMeterObservationHandlerTests.java │ │ │ └── EmbeddingModelObservationContextTests.java │ │ ├── image │ │ └── observation │ │ │ ├── DefaultImageModelObservationConventionTests.java │ │ │ ├── ImageModelObservationContextTests.java │ │ │ └── ImageModelPromptContentObservationHandlerTests.java │ │ ├── metadata │ │ └── UsageTests.java │ │ ├── model │ │ ├── MediaTests.java │ │ ├── ModelOptionsUtilsTests.java │ │ ├── observation │ │ │ ├── ModelObservationContextTests.java │ │ │ └── ModelUsageMetricsGeneratorTests.java │ │ └── tool │ │ │ ├── DefaultToolCallingChatOptionsTests.java │ │ │ ├── DefaultToolCallingManagerIT.java │ │ │ ├── DefaultToolCallingManagerTests.java │ │ │ ├── DefaultToolExecutionEligibilityPredicateTests.java │ │ │ ├── DefaultToolExecutionResultTests.java │ │ │ ├── ToolCallingChatOptionsTests.java │ │ │ ├── ToolExecutionEligibilityPredicateTests.java │ │ │ └── ToolExecutionResultTests.java │ │ ├── tool │ │ ├── execution │ │ │ └── DefaultToolCallResultConverterTests.java │ │ ├── method │ │ │ ├── MethodToolCallbackGenericTypesTest.java │ │ │ └── MethodToolCallbackProviderTests.java │ │ └── observation │ │ │ ├── DefaultToolCallingObservationConventionTests.java │ │ │ ├── ToolCallingContentObservationFilterTests.java │ │ │ └── ToolCallingObservationContextTests.java │ │ └── util │ │ ├── TextBlockAssertion.java │ │ └── json │ │ ├── JsonParserTests.java │ │ └── JsonSchemaGeneratorTests.java │ ├── kotlin │ └── org │ │ └── springframework │ │ └── ai │ │ ├── model │ │ └── ModelOptionsUtilsTests.kt │ │ └── tool │ │ └── resolution │ │ ├── SpringBeanToolCallbackResolverKotlinTests.kt │ │ ├── StandaloneWeatherKotlinFunction.kt │ │ ├── TypeResolverHelperKotlinIT.kt │ │ └── kotlinconfig │ │ └── TypeResolverHelperKotlinConfiguration.kt │ └── resources │ ├── logback.xml │ ├── prompt-system.txt │ └── prompt-user.txt ├── spring-ai-rag ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── rag │ │ ├── Query.java │ │ ├── advisor │ │ ├── RetrievalAugmentationAdvisor.java │ │ └── package-info.java │ │ ├── generation │ │ ├── augmentation │ │ │ ├── ContextualQueryAugmenter.java │ │ │ ├── QueryAugmenter.java │ │ │ └── package-info.java │ │ └── package-info.java │ │ ├── package-info.java │ │ ├── postretrieval │ │ ├── document │ │ │ ├── DocumentPostProcessor.java │ │ │ └── package-info.java │ │ └── package-info.java │ │ ├── preretrieval │ │ ├── package-info.java │ │ └── query │ │ │ ├── expansion │ │ │ ├── MultiQueryExpander.java │ │ │ ├── QueryExpander.java │ │ │ └── package-info.java │ │ │ └── transformation │ │ │ ├── CompressionQueryTransformer.java │ │ │ ├── QueryTransformer.java │ │ │ ├── RewriteQueryTransformer.java │ │ │ ├── TranslationQueryTransformer.java │ │ │ └── package-info.java │ │ ├── retrieval │ │ ├── join │ │ │ ├── ConcatenationDocumentJoiner.java │ │ │ ├── DocumentJoiner.java │ │ │ └── package-info.java │ │ └── search │ │ │ ├── DocumentRetriever.java │ │ │ ├── VectorStoreDocumentRetriever.java │ │ │ └── package-info.java │ │ └── util │ │ └── PromptAssert.java │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ ├── chat │ └── client │ │ └── advisor │ │ └── RetrievalAugmentationAdvisorTests.java │ └── rag │ ├── QueryTests.java │ ├── generation │ └── augmentation │ │ └── ContextualQueryAugmenterTests.java │ ├── preretrieval │ └── query │ │ ├── expansion │ │ └── MultiQueryExpanderTests.java │ │ └── transformation │ │ ├── CompressionQueryTransformerTests.java │ │ ├── RewriteQueryTransformerTests.java │ │ └── TranslationQueryTransformerTests.java │ ├── retrieval │ ├── join │ │ └── ConcatenationDocumentJoinerTests.java │ └── search │ │ └── VectorStoreDocumentRetrieverTests.java │ └── util │ └── PromptAssertTests.java ├── spring-ai-retry ├── pom.xml └── src │ └── main │ └── java │ └── org │ └── springframework │ └── ai │ └── retry │ ├── NonTransientAiException.java │ ├── RetryUtils.java │ └── TransientAiException.java ├── spring-ai-spring-boot-docker-compose ├── pom.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── docker │ │ │ └── compose │ │ │ └── service │ │ │ └── connection │ │ │ ├── chroma │ │ │ ├── ChromaDockerComposeConnectionDetailsFactory.java │ │ │ └── ChromaEnvironment.java │ │ │ ├── mongo │ │ │ └── MongoDbAtlasLocalDockerComposeConnectionDetailsFactory.java │ │ │ ├── ollama │ │ │ └── OllamaDockerComposeConnectionDetailsFactory.java │ │ │ ├── opensearch │ │ │ ├── AwsOpenSearchDockerComposeConnectionDetailsFactory.java │ │ │ ├── AwsOpenSearchEnvironment.java │ │ │ ├── OpenSearchDockerComposeConnectionDetailsFactory.java │ │ │ └── OpenSearchEnvironment.java │ │ │ ├── qdrant │ │ │ ├── QdrantDockerComposeConnectionDetailsFactory.java │ │ │ └── QdrantEnvironment.java │ │ │ ├── typesense │ │ │ ├── TypesenseDockerComposeConnectionDetailsFactory.java │ │ │ └── TypesenseEnvironment.java │ │ │ └── weaviate │ │ │ └── WeaviateDockerComposeConnectionDetailsFactory.java │ └── resources │ │ └── META-INF │ │ └── spring.factories │ └── test │ ├── java │ └── org │ │ └── springframework │ │ ├── ai │ │ └── docker │ │ │ └── compose │ │ │ └── service │ │ │ └── connection │ │ │ ├── chroma │ │ │ ├── ChromaDockerComposeConnectionDetailsFactoryIT.java │ │ │ ├── ChromaEnvironmentTests.java │ │ │ └── ChromaWithTokenDockerComposeConnectionDetailsFactoryIT.java │ │ │ ├── mongo │ │ │ └── MongoDbAtlasLocalDockerComposeConnectionDetailsFactoryIT.java │ │ │ ├── ollama │ │ │ └── OllamaDockerComposeConnectionDetailsFactoryIT.java │ │ │ ├── opensearch │ │ │ ├── AwsOpenSearchDockerComposeConnectionDetailsFactoryIT.java │ │ │ ├── OpenSearchDockerComposeConnectionDetailsFactoryIT.java │ │ │ └── OpenSearchEnvironmentTests.java │ │ │ ├── qdrant │ │ │ └── QdrantDockerComposeConnectionDetailsFactoryIT.java │ │ │ ├── typesense │ │ │ ├── TypesenseDockerComposeConnectionDetailsFactoryIT.java │ │ │ └── TypesenseEnvironmentTests.java │ │ │ └── weaviate │ │ │ └── WeaviateDockerComposeConnectionDetailsFactoryIT.java │ │ └── boot │ │ ├── docker │ │ └── compose │ │ │ └── service │ │ │ └── connection │ │ │ └── test │ │ │ └── AbstractDockerComposeIT.java │ │ └── testsupport │ │ ├── DisabledIfProcessUnavailable.java │ │ ├── DisabledIfProcessUnavailableCondition.java │ │ └── DisabledIfProcessUnavailables.java │ └── resources │ └── org │ └── springframework │ └── ai │ └── docker │ └── compose │ └── service │ └── connection │ ├── chroma │ ├── chroma-compose.yaml │ └── chroma-with-token-compose.yaml │ ├── mongo │ └── mongo-compose.yaml │ ├── ollama │ └── ollama-compose.yaml │ ├── opensearch │ ├── localstack-compose.yaml │ └── opensearch-compose.yaml │ ├── qdrant │ └── qdrant-compose.yaml │ ├── typesense │ └── typesense-compose.yaml │ └── weaviate │ └── weaviate-compose.yaml ├── spring-ai-spring-boot-starters ├── spring-ai-starter-mcp-client-webflux │ └── pom.xml ├── spring-ai-starter-mcp-client │ └── pom.xml ├── spring-ai-starter-mcp-server-webflux │ └── pom.xml ├── spring-ai-starter-mcp-server-webmvc │ └── pom.xml ├── spring-ai-starter-mcp-server │ └── pom.xml ├── spring-ai-starter-model-anthropic │ └── pom.xml ├── spring-ai-starter-model-azure-openai │ └── pom.xml ├── spring-ai-starter-model-bedrock-converse │ └── pom.xml ├── spring-ai-starter-model-bedrock │ └── pom.xml ├── spring-ai-starter-model-chat-memory-repository-cassandra │ └── pom.xml ├── spring-ai-starter-model-chat-memory-repository-jdbc │ └── pom.xml ├── spring-ai-starter-model-chat-memory-repository-neo4j │ └── pom.xml ├── spring-ai-starter-model-chat-memory │ └── pom.xml ├── spring-ai-starter-model-deepseek │ └── pom.xml ├── spring-ai-starter-model-huggingface │ └── pom.xml ├── spring-ai-starter-model-minimax │ └── pom.xml ├── spring-ai-starter-model-mistral-ai │ └── pom.xml ├── spring-ai-starter-model-oci-genai │ └── pom.xml ├── spring-ai-starter-model-ollama │ └── pom.xml ├── spring-ai-starter-model-openai │ └── pom.xml ├── spring-ai-starter-model-postgresml-embedding │ └── pom.xml ├── spring-ai-starter-model-stability-ai │ └── pom.xml ├── spring-ai-starter-model-transformers │ └── pom.xml ├── spring-ai-starter-model-vertex-ai-embedding │ └── pom.xml ├── spring-ai-starter-model-vertex-ai-gemini │ └── pom.xml ├── spring-ai-starter-model-zhipuai │ └── pom.xml ├── spring-ai-starter-vector-store-aws-opensearch │ └── pom.xml ├── spring-ai-starter-vector-store-azure-cosmos-db │ └── pom.xml ├── spring-ai-starter-vector-store-azure │ └── pom.xml ├── spring-ai-starter-vector-store-cassandra │ └── pom.xml ├── spring-ai-starter-vector-store-chroma │ └── pom.xml ├── spring-ai-starter-vector-store-couchbase │ └── pom.xml ├── spring-ai-starter-vector-store-elasticsearch │ └── pom.xml ├── spring-ai-starter-vector-store-gemfire │ └── pom.xml ├── spring-ai-starter-vector-store-mariadb │ └── pom.xml ├── spring-ai-starter-vector-store-milvus │ └── pom.xml ├── spring-ai-starter-vector-store-mongodb-atlas │ └── pom.xml ├── spring-ai-starter-vector-store-neo4j │ └── pom.xml ├── spring-ai-starter-vector-store-opensearch │ └── pom.xml ├── spring-ai-starter-vector-store-oracle │ └── pom.xml ├── spring-ai-starter-vector-store-pgvector │ └── pom.xml ├── spring-ai-starter-vector-store-pinecone │ └── pom.xml ├── spring-ai-starter-vector-store-qdrant │ └── pom.xml ├── spring-ai-starter-vector-store-redis │ └── pom.xml ├── spring-ai-starter-vector-store-typesense │ └── pom.xml └── spring-ai-starter-vector-store-weaviate │ └── pom.xml ├── spring-ai-spring-boot-testcontainers ├── pom.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── testcontainers │ │ │ └── service │ │ │ └── connection │ │ │ ├── chroma │ │ │ └── ChromaContainerConnectionDetailsFactory.java │ │ │ ├── milvus │ │ │ └── MilvusContainerConnectionDetailsFactory.java │ │ │ ├── mongo │ │ │ └── MongoDbAtlasLocalContainerConnectionDetailsFactory.java │ │ │ ├── ollama │ │ │ └── OllamaContainerConnectionDetailsFactory.java │ │ │ ├── opensearch │ │ │ ├── AwsOpenSearchContainerConnectionDetailsFactory.java │ │ │ └── OpenSearchContainerConnectionDetailsFactory.java │ │ │ ├── qdrant │ │ │ └── QdrantContainerConnectionDetailsFactory.java │ │ │ ├── typesense │ │ │ └── TypesenseContainerConnectionDetailsFactory.java │ │ │ └── weaviate │ │ │ └── WeaviateContainerConnectionDetailsFactory.java │ └── resources │ │ └── META-INF │ │ └── spring.factories │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── testcontainers │ └── service │ └── connection │ ├── chroma │ ├── ChromaContainerConnectionDetailsFactoryIT.java │ ├── ChromaImage.java │ ├── ChromaWithToken2ContainerConnectionDetailsFactoryIT.java │ └── ChromaWithTokenContainerConnectionDetailsFactoryIT.java │ ├── milvus │ ├── MilvusContainerConnectionDetailsFactoryIT.java │ └── MilvusImage.java │ ├── mongo │ ├── MongoDbAtlasLocalContainerConnectionDetailsFactoryIT.java │ └── MongoDbImage.java │ ├── ollama │ ├── OllamaContainerConnectionDetailsFactoryIT.java │ └── OllamaImage.java │ ├── opensearch │ ├── AwsOpenSearchContainerConnectionDetailsFactoryIT.java │ ├── OpenSearchContainerConnectionDetailsFactoryIT.java │ └── OpenSearchImage.java │ ├── qdrant │ ├── QdrantContainerConnectionDetailsFactoryIT.java │ ├── QdrantContainerWithApiKeyConnectionDetailsFactoryIT.java │ └── QdrantImage.java │ ├── typesense │ ├── TypesenseContainerConnectionDetailsFactoryIT.java │ └── TypesenseImage.java │ └── weaviate │ ├── WeaviateContainerConnectionDetailsFactoryIT.java │ └── WeaviateImage.java ├── spring-ai-spring-cloud-bindings ├── pom.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── bindings │ │ │ ├── BindingsValidator.java │ │ │ ├── ChromaBindingsPropertiesProcessor.java │ │ │ ├── MistralAiBindingsPropertiesProcessor.java │ │ │ ├── OllamaBindingsPropertiesProcessor.java │ │ │ ├── OpenAiBindingsPropertiesProcessor.java │ │ │ ├── TanzuBindingsPropertiesProcessor.java │ │ │ └── WeaviateBindingsPropertiesProcessor.java │ └── resources │ │ └── META-INF │ │ └── spring.factories │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── bindings │ ├── ChromaBindingsPropertiesProcessorTests.java │ ├── MistralAiBindingsPropertiesProcessorTests.java │ ├── OllamaBindingsPropertiesProcessorTests.java │ ├── OpenAiBindingsPropertiesProcessorTests.java │ ├── TanzuBindingsPropertiesProcessorTests.java │ └── WeaviateBindingsPropertiesProcessorTests.java ├── spring-ai-template-st ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── template │ │ └── st │ │ ├── StTemplateRenderer.java │ │ └── package-info.java │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── template │ └── st │ ├── StTemplateRendererEdgeTests.java │ └── StTemplateRendererTests.java ├── spring-ai-test ├── README.md ├── pom.xml └── src │ └── main │ ├── java │ └── org │ │ └── springframework │ │ └── ai │ │ ├── evaluation │ │ └── BasicEvaluationTest.java │ │ ├── test │ │ ├── CurlyBracketEscaper.java │ │ └── vectorstore │ │ │ ├── BaseVectorStoreTests.java │ │ │ └── ObservationTestUtil.java │ │ └── utils │ │ └── AudioPlayer.java │ └── resources │ ├── prompts │ └── spring │ │ └── test │ │ └── evaluation │ │ ├── qa-evaluator-accurate-answer.st │ │ ├── qa-evaluator-fact-based-answer.st │ │ ├── qa-evaluator-not-related-message.st │ │ └── user-evaluator-message.st │ └── test │ └── data │ ├── great.depression.txt │ ├── spring.ai.txt │ └── time.shelter.txt ├── spring-ai-vector-store ├── pom.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── vectorstore │ │ │ ├── AbstractVectorStoreBuilder.java │ │ │ ├── SearchRequest.java │ │ │ ├── SimpleVectorStore.java │ │ │ ├── SimpleVectorStoreContent.java │ │ │ ├── SpringAIVectorStoreTypes.java │ │ │ ├── VectorStore.java │ │ │ ├── aot │ │ │ └── VectorStoreRuntimeHints.java │ │ │ ├── filter │ │ │ ├── Filter.java │ │ │ ├── FilterExpressionBuilder.java │ │ │ ├── FilterExpressionConverter.java │ │ │ ├── FilterExpressionTextParser.java │ │ │ ├── FilterHelper.java │ │ │ ├── antlr4 │ │ │ │ ├── Filters.interp │ │ │ │ ├── FiltersBaseListener.java │ │ │ │ ├── FiltersBaseVisitor.java │ │ │ │ ├── FiltersLexer.interp │ │ │ │ ├── FiltersLexer.java │ │ │ │ ├── FiltersListener.java │ │ │ │ ├── FiltersParser.java │ │ │ │ └── FiltersVisitor.java │ │ │ └── converter │ │ │ │ ├── AbstractFilterExpressionConverter.java │ │ │ │ ├── PineconeFilterExpressionConverter.java │ │ │ │ ├── PrintFilterExpressionConverter.java │ │ │ │ └── SimpleVectorStoreFilterExpressionConverter.java │ │ │ ├── observation │ │ │ ├── AbstractObservationVectorStore.java │ │ │ ├── DefaultVectorStoreObservationConvention.java │ │ │ ├── VectorStoreObservationContext.java │ │ │ ├── VectorStoreObservationConvention.java │ │ │ ├── VectorStoreObservationDocumentation.java │ │ │ ├── VectorStoreQueryResponseObservationHandler.java │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ └── properties │ │ │ └── CommonVectorStoreProperties.java │ └── resources │ │ ├── META-INF │ │ └── additional-spring-configuration-metadata.json │ │ └── antlr4 │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── filter │ │ └── antlr4 │ │ └── Filters.g4 │ └── test │ ├── java │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ ├── SimpleVectorStoreSimilarityTests.java │ │ ├── SimpleVectorStoreTests.java │ │ ├── SimpleVectorStoreWithFilterTests.java │ │ ├── aot │ │ └── VectorStoreRuntimeHintsTests.java │ │ ├── filter │ │ ├── FilterExpressionBuilderTests.java │ │ ├── FilterExpressionTextParserTests.java │ │ ├── FilterHelperTests.java │ │ ├── SearchRequestTests.java │ │ └── converter │ │ │ ├── PineconeFilterExpressionConverterTests.java │ │ │ └── SimpleVectorStoreFilterExpressionConverterTests.java │ │ └── observation │ │ ├── DefaultVectorStoreObservationConventionTests.java │ │ ├── VectorStoreObservationContextTests.java │ │ └── VectorStoreQueryResponseObservationHandlerTests.java │ └── resources │ └── logback.xml ├── src ├── checkstyle │ ├── checkstyle-header.txt │ ├── checkstyle-suppressions.xml │ └── checkstyle.xml └── prompts │ ├── update-to-m7.txt │ └── update-to-snapshot.txt └── vector-stores ├── spring-ai-azure-cosmos-db-store ├── README.md ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── cosmosdb │ │ ├── CosmosDBFilterExpressionConverter.java │ │ ├── CosmosDBVectorStore.java │ │ └── package-info.java │ └── test │ ├── java │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── cosmosdb │ │ ├── CosmosDBVectorStoreIT.java │ │ ├── CosmosDBVectorStoreWithMetadataPartitionKeyIT.java │ │ └── CosmosDbImage.java │ └── resources │ └── application.properties ├── spring-ai-azure-store ├── README.md ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── azure │ │ ├── AzureAiSearchFilterExpressionConverter.java │ │ ├── AzureVectorStore.java │ │ └── package-info.java │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── vectorstore │ └── azure │ ├── AzureAiSearchFilterExpressionConverterTests.java │ ├── AzureVectorStoreIT.java │ └── AzureVectorStoreObservationIT.java ├── spring-ai-cassandra-store ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── vectorstore │ │ │ └── cassandra │ │ │ ├── CassandraFilterExpressionConverter.java │ │ │ ├── CassandraVectorStore.java │ │ │ ├── SchemaUtil.java │ │ │ └── package-info.java │ └── resources │ │ └── application.conf │ └── test │ ├── java │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── cassandra │ │ ├── CassandraFilterExpressionConverterTests.java │ │ ├── CassandraImage.java │ │ ├── CassandraRichSchemaVectorStoreIT.java │ │ ├── CassandraVectorStoreIT.java │ │ ├── CassandraVectorStoreObservationIT.java │ │ └── WikiVectorStoreExample.java │ └── resources │ ├── application.conf │ ├── test_wiki_full_schema.cql │ ├── test_wiki_partial_0_schema.cql │ ├── test_wiki_partial_1_schema.cql │ ├── test_wiki_partial_2_schema.cql │ ├── test_wiki_partial_3_schema.cql │ └── test_wiki_partial_4_schema.cql ├── spring-ai-chroma-store ├── README.md ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── chroma │ │ └── vectorstore │ │ ├── ChromaApi.java │ │ ├── ChromaFilterExpressionConverter.java │ │ ├── ChromaVectorStore.java │ │ ├── common │ │ └── ChromaApiConstants.java │ │ └── package-info.java │ └── test │ ├── java │ └── org │ │ └── springframework │ │ └── ai │ │ └── chroma │ │ ├── ChromaImage.java │ │ └── vectorstore │ │ ├── BasicAuthChromaWhereIT.java │ │ ├── ChromaApiIT.java │ │ ├── ChromaVectorStoreIT.java │ │ ├── ChromaVectorStoreObservationIT.java │ │ └── TokenSecuredChromaWhereIT.java │ └── resources │ └── server.htpasswd ├── spring-ai-coherence-store ├── README.md ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── coherence │ │ ├── CoherenceFilterExpressionConverter.java │ │ ├── CoherenceVectorStore.java │ │ └── package-info.java │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── vectorstore │ └── coherence │ ├── CoherenceFilterExpressionConverterTests.java │ └── CoherenceVectorStoreIT.java ├── spring-ai-couchbase-store ├── README.md ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ ├── CouchbaseAiSearchFilterExpressionConverter.java │ │ ├── CouchbaseIndexOptimization.java │ │ ├── CouchbaseSearchVectorStore.java │ │ └── CouchbaseSimilarityFunction.java │ └── test │ ├── java │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ ├── CouchbaseSearchVectorStoreIT.java │ │ └── testcontainer │ │ └── CouchbaseContainerMetadata.java │ └── resources │ └── application.properties ├── spring-ai-elasticsearch-store ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── elasticsearch │ │ ├── ElasticsearchAiSearchFilterExpressionConverter.java │ │ ├── ElasticsearchVectorStore.java │ │ ├── ElasticsearchVectorStoreOptions.java │ │ ├── SimilarityFunction.java │ │ └── package-info.java │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── vectorstore │ └── elasticsearch │ ├── ElasticsearchAiSearchFilterExpressionConverterTest.java │ ├── ElasticsearchImage.java │ ├── ElasticsearchVectorStoreIT.java │ └── ElasticsearchVectorStoreObservationIT.java ├── spring-ai-gemfire-store ├── README.md ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── gemfire │ │ ├── GemFireVectorStore.java │ │ └── package-info.java │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── vectorstore │ └── gemfire │ ├── GemFireImage.java │ ├── GemFireVectorStoreIT.java │ └── GemFireVectorStoreObservationIT.java ├── spring-ai-hanadb-store ├── README.md ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── hanadb │ │ ├── HanaCloudVectorStore.java │ │ ├── HanaVectorEntity.java │ │ ├── HanaVectorRepository.java │ │ └── package-info.java │ └── test │ ├── java │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── hanadb │ │ ├── CricketWorldCup.java │ │ ├── CricketWorldCupHanaController.java │ │ ├── CricketWorldCupRepository.java │ │ ├── HanaCloudVectorStoreIT.java │ │ └── HanaVectorStoreObservationIT.java │ └── resources │ ├── Cricket_World_Cup.pdf │ └── application.properties ├── spring-ai-mariadb-store ├── README.md ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── mariadb │ │ ├── MariaDBFilterExpressionConverter.java │ │ ├── MariaDBSchemaValidator.java │ │ ├── MariaDBVectorStore.java │ │ └── package-info.java │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── vectorstore │ └── mariadb │ ├── MariaDBEmbeddingDimensionsTests.java │ ├── MariaDBFilterExpressionConverterTests.java │ ├── MariaDBImage.java │ ├── MariaDBStoreCustomNamesIT.java │ ├── MariaDBStoreIT.java │ ├── MariaDBStoreObservationIT.java │ ├── MariaDBStoreTests.java │ └── MariaDBVectorStoreBuilderTests.java ├── spring-ai-milvus-store ├── README.md ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── milvus │ │ ├── MilvusFilterExpressionConverter.java │ │ ├── MilvusSearchRequest.java │ │ ├── MilvusVectorStore.java │ │ └── package-info.java │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── vectorstore │ └── milvus │ ├── MilvusEmbeddingDimensionsTests.java │ ├── MilvusFilterExpressionConverterTests.java │ ├── MilvusImage.java │ ├── MilvusSearchRequestTest.java │ ├── MilvusVectorStoreCustomFieldNamesIT.java │ ├── MilvusVectorStoreIT.java │ ├── MilvusVectorStoreObservationIT.java │ └── MilvusVectorStoreTest.java ├── spring-ai-mongodb-atlas-store ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── mongodb │ │ └── atlas │ │ ├── MongoDBAtlasFilterExpressionConverter.java │ │ ├── MongoDBAtlasVectorStore.java │ │ ├── VectorSearchAggregation.java │ │ └── package-info.java │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── vectorstore │ └── mongodb │ └── atlas │ ├── MongoDBAtlasFilterConverterTest.java │ ├── MongoDBAtlasVectorStoreIT.java │ ├── MongoDbImage.java │ ├── MongoDbVectorStoreObservationIT.java │ └── VectorSearchAggregationTest.java ├── spring-ai-neo4j-store ├── README.md ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── neo4j │ │ ├── Neo4jVectorStore.java │ │ ├── filter │ │ └── Neo4jVectorFilterExpressionConverter.java │ │ └── package-info.java │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── vectorstore │ └── neo4j │ ├── Neo4jImage.java │ ├── Neo4jVectorStoreIT.java │ ├── Neo4jVectorStoreObservationIT.java │ └── filter │ └── Neo4jVectorFilterExpressionConverterTests.java ├── spring-ai-opensearch-store ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── opensearch │ │ ├── OpenSearchAiSearchFilterExpressionConverter.java │ │ ├── OpenSearchVectorStore.java │ │ └── package-info.java │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── vectorstore │ └── opensearch │ ├── OpenSearchAiSearchFilterExpressionConverterTest.java │ ├── OpenSearchImage.java │ ├── OpenSearchVectorStoreIT.java │ ├── OpenSearchVectorStoreObservationIT.java │ └── OpenSearchVectorStoreWithOllamaIT.java ├── spring-ai-oracle-store ├── README.md ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── oracle │ │ ├── OracleVectorStore.java │ │ ├── SqlJsonPathFilterExpressionConverter.java │ │ └── package-info.java │ └── test │ ├── java │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── oracle │ │ ├── OracleImage.java │ │ ├── OracleVectorStoreIT.java │ │ ├── OracleVectorStoreObservationIT.java │ │ └── SqlJsonPathFilterExpressionConverterTests.java │ └── resources │ └── initialize.sql ├── spring-ai-pgvector-store ├── README.md ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── pgvector │ │ ├── PgVectorFilterExpressionConverter.java │ │ ├── PgVectorSchemaValidator.java │ │ ├── PgVectorStore.java │ │ └── package-info.java │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── vectorstore │ └── pgvector │ ├── PgVectorEmbeddingDimensionsTests.java │ ├── PgVectorFilterExpressionConverterTests.java │ ├── PgVectorImage.java │ ├── PgVectorStoreAutoTruncationIT.java │ ├── PgVectorStoreCustomNamesIT.java │ ├── PgVectorStoreIT.java │ ├── PgVectorStoreObservationIT.java │ ├── PgVectorStoreTests.java │ ├── PgVectorStoreVectorStoreChatMemoryAdvisorIT.java │ └── PgVectorStoreWithChatMemoryAdvisorIT.java ├── spring-ai-pinecone-store ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── springframework │ │ │ └── ai │ │ │ └── vectorstore │ │ │ └── pinecone │ │ │ ├── PineconeVectorStore.java │ │ │ ├── PineconeVectorStoreHints.java │ │ │ └── package-info.java │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── aot.factories │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── vectorstore │ └── pinecone │ ├── PineconeVectorStoreIT.java │ └── PineconeVectorStoreObservationIT.java ├── spring-ai-qdrant-store ├── README.md ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── qdrant │ │ ├── QdrantFilterExpressionConverter.java │ │ ├── QdrantObjectFactory.java │ │ ├── QdrantValueFactory.java │ │ ├── QdrantVectorStore.java │ │ └── package-info.java │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── vectorstore │ └── qdrant │ ├── QdrantImage.java │ ├── QdrantVectorStoreBuilderTests.java │ ├── QdrantVectorStoreIT.java │ └── QdrantVectorStoreObservationIT.java ├── spring-ai-redis-store ├── README.md ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── redis │ │ ├── RedisFilterExpressionConverter.java │ │ ├── RedisVectorStore.java │ │ └── package-info.java │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── vectorstore │ └── redis │ ├── RedisFilterExpressionConverterTests.java │ ├── RedisVectorStoreIT.java │ └── RedisVectorStoreObservationIT.java ├── spring-ai-typesense-store ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── springframework │ │ └── ai │ │ └── vectorstore │ │ └── typesense │ │ ├── TypesenseFilterExpressionConverter.java │ │ ├── TypesenseVectorStore.java │ │ └── package-info.java │ └── test │ └── java │ └── org │ └── springframework │ └── ai │ └── vectorstore │ └── typesense │ ├── TypesenseImage.java │ ├── TypesenseVectorStoreBuilderTests.java │ ├── TypesenseVectorStoreIT.java │ └── TypesenseVectorStoreObservationIT.java └── spring-ai-weaviate-store ├── README.md ├── pom.xml └── src ├── main └── java │ └── org │ └── springframework │ └── ai │ └── vectorstore │ └── weaviate │ ├── WeaviateFilterExpressionConverter.java │ ├── WeaviateVectorStore.java │ └── package-info.java └── test ├── java └── org │ └── springframework │ └── ai │ └── vectorstore │ └── weaviate │ ├── WeaviateFilterExpressionConverterTests.java │ ├── WeaviateImage.java │ ├── WeaviateVectorStoreBuilderTests.java │ ├── WeaviateVectorStoreIT.java │ └── WeaviateVectorStoreObservationIT.java └── resources └── docker-compose.yml /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*.{adoc,bat,groovy,html,java,js,jsp,kt,kts,md,properties,py,rb,sh,sql,svg,txt,xml,xsd}] 4 | charset = utf-8 5 | 6 | [*.{groovy,java,kt,kts,xml,xsd}] 7 | indent_style = tab 8 | indent_size = 4 9 | continuation_indent_size = 8 10 | end_of_line = lf 11 | 12 | insert_final_newline = true 13 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.onnx filter=lfs diff=lfs merge=lfs -text 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Questions and Community Support 4 | url: https://stackoverflow.com/questions/tagged/spring-ai 5 | about: Please ask and answer questions on StackOverflow with the spring-ai tag 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: 'status: waiting-for-triage, type: feature' 6 | assignees: '' 7 | 8 | --- 9 | 10 | Please do a quick search on GitHub issues first, the feature you are about to request might have already been requested. 11 | 12 | **Expected Behavior** 13 | 14 | 15 | 16 | **Current Behavior** 17 | 18 | 19 | 20 | **Context** 21 | 22 | 28 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/miscellaneous.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Miscellaneous 3 | about: Suggest an improvement for this project 4 | title: '' 5 | labels: 'status: waiting-for-triage' 6 | assignees: '' 7 | 8 | --- 9 | 10 | For anything other than bug reports and feature requests (performance, refactoring, etc), 11 | just go ahead and file the issue. Please provide as many details as possible. 12 | 13 | If you have a question or a support request, please open a new discussion on [GitHub Discussions](https://github.com/spring-projects/spring-ai/discussions) 14 | or ask a question on [StackOverflow](https://stackoverflow.com/questions/tagged/spring-ai). 15 | 16 | Please do **not** create issues on the [Issue Tracker](https://github.com/spring-projects/spring-ai/issues) for questions or support requests. 17 | We would like to keep the issue tracker **exclusively** for bug reports and feature requests. 18 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Thank you for taking time to contribute this pull request! 2 | You might have already read the [contributor guide][1], but as a reminder, please make sure to: 3 | 4 | * Sign the [contributor license agreement](https://cla.pivotal.io/sign/spring) 5 | * Rebase your changes on the latest `main` branch and squash your commits 6 | * Add/Update unit tests as needed 7 | * Run a build and make sure all tests pass prior to submission 8 | -------------------------------------------------------------------------------- /.github/dco.yml: -------------------------------------------------------------------------------- 1 | require: 2 | members: false -------------------------------------------------------------------------------- /.github/release-files-spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [ 3 | { 4 | "aql": { 5 | "items.find": { 6 | "$and": [ 7 | { 8 | "@build.name": "${buildname}", 9 | "@build.number": "${buildnumber}", 10 | "path": {"$match": "org*"} 11 | }, 12 | { 13 | "$or": [ 14 | { 15 | "name": {"$match": "*.pom"} 16 | }, 17 | { 18 | "name": {"$match": "*.jar"} 19 | } 20 | ] 21 | } 22 | ] 23 | } 24 | }, 25 | "target": "nexus/" 26 | } 27 | ] 28 | } -------------------------------------------------------------------------------- /.github/workflows/auto-cherry-pick.yml: -------------------------------------------------------------------------------- 1 | name: Auto Cherry-Pick 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | - '*.x' 8 | 9 | jobs: 10 | cherry-pick-commit: 11 | uses: spring-io/spring-github-workflows/.github/workflows/spring-cherry-pick.yml@v5 12 | secrets: 13 | GH_ACTIONS_REPO_TOKEN: ${{ secrets.GH_ACTIONS_REPO_TOKEN }} 14 | -------------------------------------------------------------------------------- /.github/workflows/backport-issue.yml: -------------------------------------------------------------------------------- 1 | name: Backport Issue 2 | 3 | on: 4 | push: 5 | branches: 6 | - '*.x' 7 | 8 | jobs: 9 | backport-issue: 10 | uses: spring-io/spring-github-workflows/.github/workflows/spring-backport-issue.yml@v5 11 | secrets: 12 | GH_ACTIONS_REPO_TOKEN: ${{ secrets.GH_ACTIONS_REPO_TOKEN }} 13 | -------------------------------------------------------------------------------- /.github/workflows/deploy-docs.yml: -------------------------------------------------------------------------------- 1 | name: Deploy Docs 2 | on: 3 | workflow_dispatch: 4 | push: 5 | branches: [main, '[0-9].[0-9].x' ] 6 | tags: ['v[0-9].[0-9].[0-9]', 'v[0-9].[0-9].[0-9]-*'] 7 | permissions: 8 | actions: write 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | if: ${{ github.repository_owner == 'spring-projects' }} 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v4 16 | with: 17 | ref: docs-build 18 | fetch-depth: 1 19 | - name: Dispatch (partial build) 20 | if: github.ref_type == 'branch' 21 | env: 22 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 23 | run: gh workflow run deploy-docs.yml -r $(git rev-parse --abbrev-ref HEAD) -f build-refname=${{ github.ref_name }} 24 | - name: Dispatch (full build) 25 | if: github.ref_type == 'tag' 26 | env: 27 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 28 | run: gh workflow run deploy-docs.yml -r $(git rev-parse --abbrev-ref HEAD) 29 | -------------------------------------------------------------------------------- /.github/workflows/pr-check.yml: -------------------------------------------------------------------------------- 1 | name: PR Check 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | build: 10 | name: Build branch 11 | runs-on: ubuntu-latest 12 | if: ${{ github.repository_owner == 'spring-projects' }} 13 | steps: 14 | - name: Checkout source code 15 | uses: actions/checkout@v4 16 | 17 | - name: Set up JDK 17 18 | uses: actions/setup-java@v4 19 | with: 20 | java-version: '17' 21 | distribution: 'temurin' 22 | cache: 'maven' 23 | 24 | - name: Run tests 25 | run: | 26 | ./mvnw test 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | target 2 | .classpath 3 | .project 4 | .settings 5 | bin 6 | build.log 7 | integration-repo 8 | ivy-cache 9 | spring-build 10 | derby-home 11 | derbydb 12 | derby.log 13 | com.springsource.sts.config.flow.prefs 14 | s3.properties 15 | .idea 16 | *.iml 17 | *.ipr 18 | *.iws 19 | .*.swp 20 | .DS_Store 21 | .springBeans 22 | build 23 | .gradle 24 | out 25 | *~ 26 | 27 | /.gradletasknamecache 28 | **/*.flattened-pom.xml 29 | 30 | vscode 31 | settings.json 32 | 33 | node 34 | node_modules 35 | package-lock.json 36 | package.json 37 | .vscode 38 | .antlr 39 | 40 | shell.log 41 | 42 | .profiler 43 | /spring-ai-spring-boot-autoconfigure/nbproject/ 44 | /vector-stores/spring-ai-cassandra-store/nbproject/ 45 | 46 | **/.claude/settings.local.json 47 | .devcontainer 48 | 49 | qodana.yaml -------------------------------------------------------------------------------- /.mvn/extensions.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | fr.jcgay.maven 21 | maven-profiler 22 | 3.2 23 | 24 | -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2023-2024 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip 17 | wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar 18 | -------------------------------------------------------------------------------- /auto-configurations/common/spring-ai-autoconfigure-retry/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.retry.autoconfigure.SpringAiRetryAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/mcp/spring-ai-autoconfigure-mcp-client/src/main/resources/META-INF/spring/aot.factories: -------------------------------------------------------------------------------- 1 | org.springframework.aot.hint.RuntimeHintsRegistrar=\ 2 | org.springframework.ai.mcp.client.autoconfigure.aot.McpClientAutoConfigurationRuntimeHints 3 | -------------------------------------------------------------------------------- /auto-configurations/mcp/spring-ai-autoconfigure-mcp-client/src/test/resources/application-test.properties: -------------------------------------------------------------------------------- 1 | # Test MCP STDIO client configuration 2 | spring.ai.mcp.client.stdio.enabled=true 3 | spring.ai.mcp.client.stdio.version=test-version 4 | spring.ai.mcp.client.stdio.request-timeout=15s 5 | spring.ai.mcp.client.stdio.root-change-notification=false 6 | 7 | # Test server configuration 8 | spring.ai.mcp.client.stdio.stdio-connections.test-server.command=echo 9 | spring.ai.mcp.client.stdio.stdio-connections.test-server.args[0]=test 10 | spring.ai.mcp.client.stdio.stdio-connections.test-server.env.TEST_ENV=test-value 11 | -------------------------------------------------------------------------------- /auto-configurations/mcp/spring-ai-autoconfigure-mcp-client/src/test/resources/nested/nested-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nested-config", 3 | "description": "Test JSON file in nested subfolder of test resources", 4 | "version": "1.0.0", 5 | "nestedProperties": { 6 | "nestedProperty1": "nestedValue1" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /auto-configurations/mcp/spring-ai-autoconfigure-mcp-client/src/test/resources/test-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "test-config", 3 | "description": "Test JSON file in root test resources folder", 4 | "version": "1.0.0", 5 | "properties": { 6 | "testProperty1": "value1" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /auto-configurations/models/chat/client/spring-ai-autoconfigure-model-chat-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.model.chat.client.autoconfigure.ChatClientAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/models/chat/memory/repository/spring-ai-autoconfigure-model-chat-memory-repository-cassandra/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.model.chat.memory.repository.cassandra.autoconfigure.CassandraChatMemoryRepositoryAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/models/chat/memory/repository/spring-ai-autoconfigure-model-chat-memory-repository-jdbc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2024-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.model.chat.memory.repository.jdbc.autoconfigure.JdbcChatMemoryRepositoryAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/models/chat/memory/repository/spring-ai-autoconfigure-model-chat-memory-repository-jdbc/src/test/resources/schema.sql: -------------------------------------------------------------------------------- 1 | -- Test-specific schema initialization for HSQLDB 2 | CREATE TABLE IF NOT EXISTS SPRING_AI_CHAT_MEMORY ( 3 | conversation_id VARCHAR(36) NOT NULL, 4 | content LONGVARCHAR NOT NULL, 5 | type VARCHAR(10) NOT NULL, 6 | timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL 7 | ); 8 | 9 | CREATE INDEX IF NOT EXISTS SPRING_AI_CHAT_MEMORY_CONVERSATION_ID_TIMESTAMP_IDX ON SPRING_AI_CHAT_MEMORY(conversation_id, timestamp DESC); 10 | 11 | -- Add constraint if it doesn't exist 12 | ALTER TABLE SPRING_AI_CHAT_MEMORY ADD CONSTRAINT TYPE_CHECK CHECK (type IN ('USER', 'ASSISTANT', 'SYSTEM', 'TOOL')); 13 | -------------------------------------------------------------------------------- /auto-configurations/models/chat/memory/repository/spring-ai-autoconfigure-model-chat-memory-repository-neo4j/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.model.chat.memory.repository.neo4j.autoconfigure.Neo4jChatMemoryRepositoryAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/models/chat/memory/spring-ai-autoconfigure-model-chat-memory/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | org.springframework.ai.model.chat.memory.autoconfigure.ChatMemoryAutoConfiguration 2 | -------------------------------------------------------------------------------- /auto-configurations/models/chat/observation/spring-ai-autoconfigure-model-chat-observation/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.model.chat.observation.autoconfigure.ChatObservationAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/models/embedding/observation/spring-ai-autoconfigure-model-embedding-observation/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.model.embedding.observation.autoconfigure.EmbeddingObservationAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/models/image/observation/spring-ai-autoconfigure-model-image-observation/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.model.image.observation.autoconfigure.ImageObservationAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/models/spring-ai-autoconfigure-model-anthropic/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.model.anthropic.autoconfigure.AnthropicChatAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/models/spring-ai-autoconfigure-model-azure-openai/src/main/resources/META-INF/additional-spring-configuration-metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "groups": [ 3 | { 4 | "name": "spring.ai.azure.openai.chat.options.enhancements", 5 | "type": "com.azure.ai.openai.models.AzureChatEnhancementConfiguration", 6 | "sourceType": "org.springframework.ai.azure.openai.AzureOpenAiChatOptions", 7 | "sourceMethod": "getEnhancements()" 8 | } 9 | ], 10 | "properties": [ 11 | { 12 | "name": "spring.ai.azure.openai.chat.options.enhancements.grounding", 13 | "type": "com.azure.ai.openai.models.AzureChatGroundingEnhancementConfiguration", 14 | "sourceType": "com.azure.ai.openai.models.AzureChatEnhancementConfiguration" 15 | }, 16 | { 17 | "name": "spring.ai.azure.openai.chat.options.enhancements.ocr", 18 | "type": "com.azure.ai.openai.models.AzureChatOCREnhancementConfiguration", 19 | "sourceType": "com.azure.ai.openai.models.AzureChatEnhancementConfiguration" 20 | } 21 | ], 22 | "hints": [] 23 | } 24 | -------------------------------------------------------------------------------- /auto-configurations/models/spring-ai-autoconfigure-model-azure-openai/src/test/resources/speech/jfk.flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/auto-configurations/models/spring-ai-autoconfigure-model-azure-openai/src/test/resources/speech/jfk.flac -------------------------------------------------------------------------------- /auto-configurations/models/spring-ai-autoconfigure-model-bedrock-ai/src/test/resources/spring_framework.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/auto-configurations/models/spring-ai-autoconfigure-model-bedrock-ai/src/test/resources/spring_framework.png -------------------------------------------------------------------------------- /auto-configurations/models/spring-ai-autoconfigure-model-deepseek/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.model.deepseek.autoconfigure.DeepSeekChatAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/models/spring-ai-autoconfigure-model-huggingface/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.model.huggingface.autoconfigure.HuggingfaceChatAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/models/spring-ai-autoconfigure-model-minimax/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.model.minimax.autoconfigure.MiniMaxChatAutoConfiguration 17 | org.springframework.ai.model.minimax.autoconfigure.MiniMaxEmbeddingAutoConfiguration 18 | -------------------------------------------------------------------------------- /auto-configurations/models/spring-ai-autoconfigure-model-mistral-ai/src/main/resources/META-INF/additional-spring-configuration-metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "groups": [ 3 | { 4 | "name": "spring.ai.mistralai.chat.options.tool-choice", 5 | "type": "org.springframework.ai.mistralai.api.MistralAiApi$ChatCompletionRequest$ToolChoice", 6 | "sourceType": "org.springframework.ai.mistralai.MistralAiChatOptions" 7 | } 8 | ], 9 | "properties": [], 10 | "hints": [] 11 | } 12 | -------------------------------------------------------------------------------- /auto-configurations/models/spring-ai-autoconfigure-model-oci-genai/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.model.oci.genai.autoconfigure.OCIGenAiChatAutoConfiguration 17 | org.springframework.ai.model.oci.genai.autoconfigure.OCIGenAiEmbeddingAutoConfiguration 18 | -------------------------------------------------------------------------------- /auto-configurations/models/spring-ai-autoconfigure-model-ollama/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.model.ollama.autoconfigure.OllamaChatAutoConfiguration 17 | org.springframework.ai.model.ollama.autoconfigure.OllamaEmbeddingAutoConfiguration 18 | -------------------------------------------------------------------------------- /auto-configurations/models/spring-ai-autoconfigure-model-openai/src/main/resources/META-INF/additional-spring-configuration-metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "groups": [ 3 | { 4 | "name": "spring.ai.openai.chat.output-audio", 5 | "type": "org.springframework.ai.openai.api.OpenAiApi$ChatCompletionRequest$AudioParameters", 6 | "sourceType": "org.springframework.ai.openai.OpenAiChatOptions" 7 | } 8 | ], 9 | "properties": [ 10 | { 11 | "name": "spring.ai.openai.chat.output-audio.voice", 12 | "type": "org.springframework.ai.openai.api.OpenAiApi$ChatCompletionRequest$AudioParameters$Voice", 13 | "sourceType": "org.springframework.ai.openai.api.OpenAiApi$ChatCompletionRequest$AudioParameters" 14 | }, 15 | { 16 | "name": "spring.ai.openai.chat.output-audio.format", 17 | "type": "org.springframework.ai.openai.api.OpenAiApi$ChatCompletionRequest$AudioParameters$AudioResponseFormat", 18 | "sourceType": "org.springframework.ai.openai.api.OpenAiApi$ChatCompletionRequest$AudioParameters" 19 | } 20 | ], 21 | "hints": [] 22 | } 23 | -------------------------------------------------------------------------------- /auto-configurations/models/spring-ai-autoconfigure-model-openai/src/test/resources/speech/jfk.flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/auto-configurations/models/spring-ai-autoconfigure-model-openai/src/test/resources/speech/jfk.flac -------------------------------------------------------------------------------- /auto-configurations/models/spring-ai-autoconfigure-model-postgresml-embedding/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.model.postgresml.autoconfigure.PostgresMlEmbeddingAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/models/spring-ai-autoconfigure-model-stability-ai/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.model.stabilityai.autoconfigure.StabilityAiImageAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/models/spring-ai-autoconfigure-model-transformers/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.model.transformers.autoconfigure.TransformersEmbeddingModelAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/models/tool/spring-ai-autoconfigure-model-tool/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.model.tool.autoconfigure.ToolCallingAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-azure-cosmos-db/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.cosmosdb.autoconfigure.CosmosDBVectorStoreAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-azure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.azure.autoconfigure.AzureVectorStoreAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-cassandra/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.cassandra.autoconfigure.CassandraVectorStoreAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-chroma/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.chroma.autoconfigure.ChromaVectorStoreAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-couchbase/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.couchbase.autoconfigure.CouchbaseSearchVectorStoreAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-elasticsearch/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.elasticsearch.autoconfigure.ElasticsearchVectorStoreAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-gemfire/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.gemfire.autoconfigure.GemFireVectorStoreAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-mariadb/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.mariadb.autoconfigure.MariaDbStoreAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-milvus/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.milvus.autoconfigure.MilvusVectorStoreAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-mongodb-atlas/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.mongodb.autoconfigure.MongoDBAtlasVectorStoreAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-neo4j/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.neo4j.autoconfigure.Neo4jVectorStoreAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-observation/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.observation.autoconfigure.VectorStoreObservationAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-opensearch/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.opensearch.autoconfigure.OpenSearchVectorStoreAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-oracle/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.oracle.autoconfigure.OracleVectorStoreAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-pgvector/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.pgvector.autoconfigure.PgVectorStoreAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-pinecone/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.pinecone.autoconfigure.PineconeVectorStoreAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-qdrant/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.qdrant.autoconfigure.QdrantVectorStoreAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.redis.autoconfigure.RedisVectorStoreAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-typesense/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.typesense.autoconfigure.TypesenseVectorStoreAutoConfiguration 17 | -------------------------------------------------------------------------------- /auto-configurations/vector-stores/spring-ai-autoconfigure-vector-store-weaviate/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025-2025 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | org.springframework.ai.vectorstore.weaviate.autoconfigure.WeaviateVectorStoreAutoConfiguration 17 | -------------------------------------------------------------------------------- /document-readers/jsoup-reader/src/test/resources/test-group-by.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Group By Element Test 5 | 6 | 7 |
8 |

Section 1 content

9 |
10 |
11 |

Section 2 content

12 |
13 | 14 | -------------------------------------------------------------------------------- /document-readers/jsoup-reader/src/test/resources/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Test HTML 5 | 6 | 7 | 8 | 9 | 10 | 11 |

This is a test HTML document.

12 |

Some paragraph text.

13 | Spring 14 | 15 | -------------------------------------------------------------------------------- /document-readers/markdown-reader/src/test/resources/blockquote.md: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur diam eros, laoreet sit amet cursus vitae, varius sed 2 | nisi. Cras sit amet quam quis velit commodo porta consectetur id nisi. Phasellus tincidunt pulvinar augue. 3 | 4 | > Proin vel laoreet leo, sed luctus augue. Sed et ligula commodo, commodo lacus at, consequat turpis. Maecenas eget 5 | > sapien odio. Maecenas urna lectus, pellentesque in accumsan aliquam, congue eu libero. Ut rhoncus nec justo a 6 | > porttitor. Pellentesque auctor pharetra eros, viverra sodales lorem aliquet id. Curabitur semper nisi vel sem interdum 7 | > suscipit. 8 | 9 | -------------------------------------------------------------------------------- /document-readers/markdown-reader/src/test/resources/code.md: -------------------------------------------------------------------------------- 1 | This is a Java sample application: 2 | 3 | ```java 4 | package com.example.demo; 5 | 6 | import org.springframework.boot.SpringApplication; 7 | import org.springframework.boot.autoconfigure.SpringBootApplication; 8 | 9 | @SpringBootApplication 10 | public class DemoApplication { 11 | public static void main(String[] args) { 12 | SpringApplication.run(DemoApplication.class, args); 13 | } 14 | } 15 | ``` 16 | 17 | Markdown also provides the possibility to `use inline code formatting throughout` the entire sentence. 18 | 19 | --- 20 | 21 | Another possibility is to set block code without specific highlighting: 22 | 23 | ``` 24 | ./mvnw spring-javaformat:apply 25 | ``` 26 | -------------------------------------------------------------------------------- /document-readers/markdown-reader/src/test/resources/lists.md: -------------------------------------------------------------------------------- 1 | ## Ordered list 2 | 3 | 1. Lorem ipsum dolor sit *amet*, consectetur adipiscing elit. **Curabitur** diam eros, laoreet sit _amet_ cursus vitae, 4 | varius sed nisi. 5 | 2. Cras sit amet quam quis velit commodo porta consectetur id nisi. Phasellus tincidunt pulvinar augue. 6 | 3. Proin vel laoreet leo, sed luctus augue. Sed et ligula commodo, commodo lacus at, consequat turpis. Maecenas eget 7 | sapien odio. 8 | 1. Pellentesque auctor pharetra eros, viverra sodales lorem aliquet id. Curabitur semper nisi vel sem interdum 9 | suscipit. 10 | 2. Maecenas urna lectus, pellentesque in accumsan aliquam, congue eu libero. Ut rhoncus nec justo a porttitor. 11 | 12 | ## Unordered list 13 | 14 | * Aenean eu leo eu nibh tristique posuere quis quis massa. 15 | * Aenean imperdiet libero dui, nec malesuada dui maximus vel. Vestibulum sed dui condimentum, cursus libero in, dapibus 16 | tortor. 17 | * Etiam facilisis enim in egestas dictum. 18 | -------------------------------------------------------------------------------- /document-readers/markdown-reader/src/test/resources/only-headers.md: -------------------------------------------------------------------------------- 1 | # Header 1a 2 | 3 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur diam eros, laoreet sit amet cursus vitae, varius sed 4 | nisi. Cras sit amet quam quis velit commodo porta consectetur id nisi. Phasellus tincidunt pulvinar augue. 5 | 6 | # Header 1b 7 | 8 | Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Etiam lobortis risus libero, sed 9 | sollicitudin risus cursus in. Morbi enim metus, ornare vel lacinia eget, venenatis vel nibh. 10 | 11 | ## Header 2b 12 | 13 | Proin vel laoreet leo, sed luctus augue. Sed et ligula commodo, commodo lacus at, consequat turpis. Maecenas eget sapien 14 | odio. Maecenas urna lectus, pellentesque in accumsan aliquam, congue eu libero. 15 | 16 | # Header 1c 17 | 18 | ## Header 2c 19 | 20 | Ut rhoncus nec justo a porttitor. Pellentesque auctor pharetra eros, viverra sodales lorem aliquet id. Curabitur semper nisi vel sem interdum suscipit. 21 | -------------------------------------------------------------------------------- /document-readers/markdown-reader/src/test/resources/simple.md: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tincidunt velit non bibendum gravida. Cras accumsan 2 | tincidunt ornare. Donec hendrerit consequat tellus blandit accumsan. Aenean aliquam metus at arcu elementum dignissim. 3 | 4 | Nullam nisi dui, egestas nec sem nec, interdum lobortis enim. Pellentesque odio orci, faucibus eu luctus nec, venenatis et magna. Vestibulum nec eros non felis fermentum posuere eget ac risus. 5 | 6 | Aenean eu leo eu nibh tristique posuere quis quis massa.\ 7 | Nullam lacinia luctus sem ut vehicula. 8 | 9 | -------------------------------------------------------------------------------- /document-readers/markdown-reader/src/test/resources/with-formatting.md: -------------------------------------------------------------------------------- 1 | # This is a fancy header name 2 | 3 | Lorem ipsum dolor sit amet, **consectetur adipiscing elit**. Donec tincidunt velit non bibendum gravida. Cras accumsan 4 | tincidunt ornare. Donec hendrerit consequat tellus *blandit* accumsan. Aenean aliquam metus at ***arcu elementum*** 5 | dignissim. 6 | 7 | ### Header 3 8 | 9 | Aenean eu leo eu nibh tristique _posuere quis quis massa_. 10 | -------------------------------------------------------------------------------- /document-readers/pdf-reader/src/main/resources/META-INF/spring/aot.factories: -------------------------------------------------------------------------------- 1 | org.springframework.aot.hint.RuntimeHintsRegistrar=\ 2 | org.springframework.ai.reader.pdf.aot.PdfReaderRuntimeHints -------------------------------------------------------------------------------- /document-readers/pdf-reader/src/test/resources/sample1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/document-readers/pdf-reader/src/test/resources/sample1.pdf -------------------------------------------------------------------------------- /document-readers/pdf-reader/src/test/resources/sample2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/document-readers/pdf-reader/src/test/resources/sample2.pdf -------------------------------------------------------------------------------- /document-readers/tika-reader/src/test/resources/sample.ppt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/document-readers/tika-reader/src/test/resources/sample.ppt -------------------------------------------------------------------------------- /document-readers/tika-reader/src/test/resources/sample.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/document-readers/tika-reader/src/test/resources/sample.pptx -------------------------------------------------------------------------------- /document-readers/tika-reader/src/test/resources/sample2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/document-readers/tika-reader/src/test/resources/sample2.pdf -------------------------------------------------------------------------------- /document-readers/tika-reader/src/test/resources/word-sample.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/document-readers/tika-reader/src/test/resources/word-sample.doc -------------------------------------------------------------------------------- /document-readers/tika-reader/src/test/resources/word-sample.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/document-readers/tika-reader/src/test/resources/word-sample.docx -------------------------------------------------------------------------------- /mcp/common/src/main/resources/META-INF/spring/aot.factories: -------------------------------------------------------------------------------- 1 | org.springframework.aot.hint.RuntimeHintsRegistrar=\ 2 | org.springframework.ai.mcp.aot.McpHints -------------------------------------------------------------------------------- /memory/repository/spring-ai-model-chat-memory-repository-jdbc/README.md: -------------------------------------------------------------------------------- 1 | [Chat Memory Documentation](https://docs.spring.io/spring-ai/reference/api/chatmemory.html) 2 | -------------------------------------------------------------------------------- /memory/repository/spring-ai-model-chat-memory-repository-jdbc/src/main/java/org/springframework/ai/chat/memory/repository/jdbc/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.chat.memory.repository.jdbc; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /memory/repository/spring-ai-model-chat-memory-repository-jdbc/src/main/resources/META-INF/spring/aot.factories: -------------------------------------------------------------------------------- 1 | org.springframework.aot.hint.RuntimeHintsRegistrar=\ 2 | org.springframework.ai.chat.memory.repository.jdbc.aot.hint.JdbcChatMemoryRepositoryRuntimeHints 3 | -------------------------------------------------------------------------------- /memory/repository/spring-ai-model-chat-memory-repository-jdbc/src/main/resources/org/springframework/ai/chat/memory/repository/jdbc/schema-hsqldb.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE SPRING_AI_CHAT_MEMORY ( 2 | conversation_id VARCHAR(36) NOT NULL, 3 | content LONGVARCHAR NOT NULL, 4 | type VARCHAR(10) NOT NULL, 5 | timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL 6 | ); 7 | 8 | CREATE INDEX SPRING_AI_CHAT_MEMORY_CONVERSATION_ID_TIMESTAMP_IDX ON SPRING_AI_CHAT_MEMORY(conversation_id, timestamp DESC); 9 | 10 | ALTER TABLE SPRING_AI_CHAT_MEMORY ADD CONSTRAINT TYPE_CHECK CHECK (type IN ('USER', 'ASSISTANT', 'SYSTEM', 'TOOL')); 11 | -------------------------------------------------------------------------------- /memory/repository/spring-ai-model-chat-memory-repository-jdbc/src/main/resources/org/springframework/ai/chat/memory/repository/jdbc/schema-mariadb.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS SPRING_AI_CHAT_MEMORY ( 2 | conversation_id VARCHAR(36) NOT NULL, 3 | content TEXT NOT NULL, 4 | type VARCHAR(10) NOT NULL, 5 | `timestamp` TIMESTAMP NOT NULL, 6 | CONSTRAINT TYPE_CHECK CHECK (type IN ('USER', 'ASSISTANT', 'SYSTEM', 'TOOL')) 7 | ); 8 | 9 | CREATE INDEX IF NOT EXISTS SPRING_AI_CHAT_MEMORY_CONVERSATION_ID_TIMESTAMP_IDX 10 | ON SPRING_AI_CHAT_MEMORY(conversation_id, `timestamp`); -------------------------------------------------------------------------------- /memory/repository/spring-ai-model-chat-memory-repository-jdbc/src/main/resources/org/springframework/ai/chat/memory/repository/jdbc/schema-mysql.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS SPRING_AI_CHAT_MEMORY ( 2 | `conversation_id` VARCHAR(36) NOT NULL, 3 | `content` TEXT NOT NULL, 4 | `type` ENUM('USER', 'ASSISTANT', 'SYSTEM', 'TOOL') NOT NULL, 5 | `timestamp` TIMESTAMP NOT NULL, 6 | 7 | INDEX `SPRING_AI_CHAT_MEMORY_CONVERSATION_ID_TIMESTAMP_IDX` (`conversation_id`, `timestamp`) 8 | ); 9 | -------------------------------------------------------------------------------- /memory/repository/spring-ai-model-chat-memory-repository-jdbc/src/main/resources/org/springframework/ai/chat/memory/repository/jdbc/schema-postgresql.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS SPRING_AI_CHAT_MEMORY ( 2 | conversation_id VARCHAR(36) NOT NULL, 3 | content TEXT NOT NULL, 4 | type VARCHAR(10) NOT NULL CHECK (type IN ('USER', 'ASSISTANT', 'SYSTEM', 'TOOL')), 5 | "timestamp" TIMESTAMP NOT NULL 6 | ); 7 | 8 | CREATE INDEX IF NOT EXISTS SPRING_AI_CHAT_MEMORY_CONVERSATION_ID_TIMESTAMP_IDX 9 | ON SPRING_AI_CHAT_MEMORY(conversation_id, "timestamp"); -------------------------------------------------------------------------------- /memory/repository/spring-ai-model-chat-memory-repository-jdbc/src/main/resources/org/springframework/ai/chat/memory/repository/jdbc/schema-sqlserver.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE SPRING_AI_CHAT_MEMORY ( 2 | conversation_id VARCHAR(36) NOT NULL, 3 | content NVARCHAR(MAX) NOT NULL, 4 | type VARCHAR(10) NOT NULL, 5 | [timestamp] DATETIME2 NOT NULL DEFAULT SYSDATETIME(), 6 | CONSTRAINT TYPE_CHECK CHECK (type IN ('USER', 'ASSISTANT', 'SYSTEM', 'TOOL')) 7 | ); 8 | 9 | CREATE INDEX SPRING_AI_CHAT_MEMORY_CONVERSATION_ID_TIMESTAMP_IDX ON SPRING_AI_CHAT_MEMORY(conversation_id, [timestamp] DESC); 10 | -------------------------------------------------------------------------------- /memory/repository/spring-ai-model-chat-memory-repository-jdbc/src/test/resources/container-license-acceptance.txt: -------------------------------------------------------------------------------- 1 | mcr.microsoft.com/mssql/server:2022-latest -------------------------------------------------------------------------------- /models/spring-ai-anthropic/README.md: -------------------------------------------------------------------------------- 1 | [Anthropic 3 Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/anthropic-chat.html) 2 | 3 | -------------------------------------------------------------------------------- /models/spring-ai-anthropic/src/main/resources/META-INF/spring/aot.factories: -------------------------------------------------------------------------------- 1 | org.springframework.aot.hint.RuntimeHintsRegistrar=\ 2 | org.springframework.ai.anthropic.aot.AnthropicRuntimeHints -------------------------------------------------------------------------------- /models/spring-ai-anthropic/src/test/resources/application-logging-test.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2023-2024 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | logging.level.org.springframework.ai.chat.client.advisor=DEBUG 18 | -------------------------------------------------------------------------------- /models/spring-ai-anthropic/src/test/resources/prompts/system-message.st: -------------------------------------------------------------------------------- 1 | You are a helpful AI assistant. Your name is {name}. 2 | You are an AI assistant that helps people find information. 3 | Your name is {name} 4 | You should reply to the user's request with your name and also in the style of a {voice}. -------------------------------------------------------------------------------- /models/spring-ai-anthropic/src/test/resources/spring-ai-reference-overview.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-anthropic/src/test/resources/spring-ai-reference-overview.pdf -------------------------------------------------------------------------------- /models/spring-ai-anthropic/src/test/resources/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-anthropic/src/test/resources/test.png -------------------------------------------------------------------------------- /models/spring-ai-azure-openai/README.md: -------------------------------------------------------------------------------- 1 | [Azure OpenAI Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/azure-openai-chat.html) 2 | 3 | [Azure OpenAI Embedding Documentation](https://docs.spring.io/spring-ai/reference/api/embeddings/azure-openai-embeddings.html) 4 | -------------------------------------------------------------------------------- /models/spring-ai-azure-openai/src/main/resources/META-INF/spring/aot.factories: -------------------------------------------------------------------------------- 1 | org.springframework.aot.hint.RuntimeHintsRegistrar=\ 2 | org.springframework.ai.azure.openai.aot.AzureOpenAiRuntimeHints -------------------------------------------------------------------------------- /models/spring-ai-azure-openai/src/test/resources/multimodality/multimodal.test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-azure-openai/src/test/resources/multimodality/multimodal.test.png -------------------------------------------------------------------------------- /models/spring-ai-azure-openai/src/test/resources/prompts/system-message.st: -------------------------------------------------------------------------------- 1 | You are a helpful AI assistant. Your name is {name}. 2 | You are an AI assistant that helps people find information. 3 | Your name is {name} 4 | You should reply to the user's request with your name and also in the style of a {voice}. -------------------------------------------------------------------------------- /models/spring-ai-azure-openai/src/test/resources/speech/jfk.flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-azure-openai/src/test/resources/speech/jfk.flac -------------------------------------------------------------------------------- /models/spring-ai-bedrock-converse/src/test/resources/prompts/system-message.st: -------------------------------------------------------------------------------- 1 | You are a helpful AI assistant. Your name is {name}. 2 | You are an AI assistant that helps people find information. 3 | Your name is {name} 4 | You should reply to the user's request with your name and also in the style of a {voice}. -------------------------------------------------------------------------------- /models/spring-ai-bedrock-converse/src/test/resources/spring-ai-reference-overview.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-bedrock-converse/src/test/resources/spring-ai-reference-overview.pdf -------------------------------------------------------------------------------- /models/spring-ai-bedrock-converse/src/test/resources/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-bedrock-converse/src/test/resources/test.png -------------------------------------------------------------------------------- /models/spring-ai-bedrock-converse/src/test/resources/test.video.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-bedrock-converse/src/test/resources/test.video.mp4 -------------------------------------------------------------------------------- /models/spring-ai-bedrock/src/main/resources/META-INF/spring/aot.factories: -------------------------------------------------------------------------------- 1 | org.springframework.aot.hint.RuntimeHintsRegistrar=\ 2 | org.springframework.ai.bedrock.aot.BedrockRuntimeHints -------------------------------------------------------------------------------- /models/spring-ai-bedrock/src/test/resources/prompts/system-message.st: -------------------------------------------------------------------------------- 1 | You are a helpful AI assistant. Your name is {name}. 2 | You are an AI assistant that helps people find information. 3 | Your name is {name} 4 | You should reply to the user's request with your name and also in the style of a {voice}. -------------------------------------------------------------------------------- /models/spring-ai-bedrock/src/test/resources/spring_framework.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-bedrock/src/test/resources/spring_framework.png -------------------------------------------------------------------------------- /models/spring-ai-bedrock/src/test/resources/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-bedrock/src/test/resources/test.png -------------------------------------------------------------------------------- /models/spring-ai-deepseek/README.md: -------------------------------------------------------------------------------- 1 | [DeepSeek Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/deepseek-chat.html) -------------------------------------------------------------------------------- /models/spring-ai-deepseek/src/main/resources/META-INF/spring/aot.factories: -------------------------------------------------------------------------------- 1 | org.springframework.aot.hint.RuntimeHintsRegistrar=\ 2 | org.springframework.ai.deepseek.aot.DeepSeekRuntimeHints -------------------------------------------------------------------------------- /models/spring-ai-deepseek/src/test/resources/prompts/system-message.st: -------------------------------------------------------------------------------- 1 | "You are a helpful AI assistant. Your name is {name}. 2 | You are an AI assistant that helps people find information. 3 | Your name is {name} 4 | You should reply to the user's request with your name and also in the style of a {voice}. -------------------------------------------------------------------------------- /models/spring-ai-huggingface/README.md: -------------------------------------------------------------------------------- 1 | [Hugging Face Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/huggingface.html) 2 | 3 | -------------------------------------------------------------------------------- /models/spring-ai-minimax/README.md: -------------------------------------------------------------------------------- 1 | [MiniMax Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/minimax-chat.html) 2 | 3 | [MiniMax Embedding Documentation](https://docs.spring.io/spring-ai/reference/api/embeddings/minimax-embeddings.html) -------------------------------------------------------------------------------- /models/spring-ai-minimax/src/main/resources/META-INF/spring/aot.factories: -------------------------------------------------------------------------------- 1 | org.springframework.aot.hint.RuntimeHintsRegistrar=\ 2 | org.springframework.ai.minimax.aot.MiniMaxRuntimeHints -------------------------------------------------------------------------------- /models/spring-ai-minimax/src/test/resources/prompts/system-message.st: -------------------------------------------------------------------------------- 1 | You are an AI assistant that helps people find information. 2 | Your name is {name}. 3 | You should reply to the user's request with your name and also in the style of a {voice}. -------------------------------------------------------------------------------- /models/spring-ai-mistral-ai/README.md: -------------------------------------------------------------------------------- 1 | [Mistral AI Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/mistralai-chat.html) 2 | 3 | [Mistral AI Embedding Documentation](https://docs.spring.io/spring-ai/reference/api/embeddings/mistralai-embeddings.html) -------------------------------------------------------------------------------- /models/spring-ai-mistral-ai/src/main/resources/META-INF/spring/aot.factories: -------------------------------------------------------------------------------- 1 | org.springframework.aot.hint.RuntimeHintsRegistrar=\ 2 | org.springframework.ai.mistralai.aot.MistralAiRuntimeHints -------------------------------------------------------------------------------- /models/spring-ai-mistral-ai/src/test/resources/prompts/acme/system-qa.st: -------------------------------------------------------------------------------- 1 | You're assisting with questions about products in a bicycle catalog. 2 | Use the information from the DOCUMENTS section to provide accurate answers. 3 | The answer involves referring to the price or the dimension of the bicycle, include the bicycle name in the response. 4 | If unsure, simply state that you don't know. 5 | 6 | DOCUMENTS: 7 | {documents} -------------------------------------------------------------------------------- /models/spring-ai-mistral-ai/src/test/resources/prompts/eval/qa-evaluator-accurate-answer.st: -------------------------------------------------------------------------------- 1 | You are an AI assistant who helps users to evaluate if the answers to questions are accurate. 2 | You will be provided with a QUESTION and an ANSWER. 3 | Your goal is to evaluate the QUESTION and ANSWER and reply with a YES or NO answer. -------------------------------------------------------------------------------- /models/spring-ai-mistral-ai/src/test/resources/prompts/eval/qa-evaluator-fact-based-answer.st: -------------------------------------------------------------------------------- 1 | You are an AI evaluator. Your task is to verify if the provided ANSWER is a direct and accurate response to the given QUESTION. If the ANSWER is correct and directly answers the QUESTION, reply with "YES". If the ANSWER is not a direct response or is inaccurate, reply with "NO". 2 | 3 | For example: 4 | 5 | If the QUESTION is "What is the capital of France?" and the ANSWER is "Paris.", you should respond with "YES". 6 | If the QUESTION is "What is the capital of France?" and the ANSWER is "France is in Europe.", respond with "NO". 7 | Now, evaluate the following: 8 | -------------------------------------------------------------------------------- /models/spring-ai-mistral-ai/src/test/resources/prompts/eval/qa-evaluator-not-related-message.st: -------------------------------------------------------------------------------- 1 | You are an AI assistant who helps users to evaluate if the answers to questions are accurate. 2 | You will be provided with a QUESTION and an ANSWER. 3 | A previous evaluation has determined that QUESTION and ANSWER are not related. 4 | Give an explanation as to why they are not related. -------------------------------------------------------------------------------- /models/spring-ai-mistral-ai/src/test/resources/prompts/eval/user-evaluator-message.st: -------------------------------------------------------------------------------- 1 | The question and answer to evaluate are: 2 | 3 | QUESTION: ```{question}``` 4 | 5 | ANSWER: ```{answer}``` 6 | 7 | -------------------------------------------------------------------------------- /models/spring-ai-mistral-ai/src/test/resources/prompts/system-message.st: -------------------------------------------------------------------------------- 1 | You are an AI assistant that helps people find information. 2 | Your name is {name}. 3 | You should reply to the user's request with your name and also in the style of a {voice}. -------------------------------------------------------------------------------- /models/spring-ai-mistral-ai/src/test/resources/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-mistral-ai/src/test/resources/test.png -------------------------------------------------------------------------------- /models/spring-ai-oci-genai/README.md: -------------------------------------------------------------------------------- 1 | [Oracle Cloud Infrastructure GenAI Documentation](https://docs.oracle.com/en-us/iaas/Content/generative-ai/overview.htm) 2 | -------------------------------------------------------------------------------- /models/spring-ai-ollama/README.md: -------------------------------------------------------------------------------- 1 | [Ollama Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/ollama-chat.html) 2 | 3 | [Ollama Embedding Documentation](https://docs.spring.io/spring-ai/reference/api/embeddings/ollama-embeddings.html) 4 | -------------------------------------------------------------------------------- /models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/management/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Management support for Ollama. 19 | */ 20 | @NonNullApi 21 | @NonNullFields 22 | package org.springframework.ai.ollama.management; 23 | 24 | import org.springframework.lang.NonNullApi; 25 | import org.springframework.lang.NonNullFields; 26 | -------------------------------------------------------------------------------- /models/spring-ai-ollama/src/main/resources/META-INF/spring/aot.factories: -------------------------------------------------------------------------------- 1 | org.springframework.aot.hint.RuntimeHintsRegistrar=\ 2 | org.springframework.ai.ollama.aot.OllamaRuntimeHints -------------------------------------------------------------------------------- /models/spring-ai-ollama/src/test/resources/doc/Ollama Chat API.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-ollama/src/test/resources/doc/Ollama Chat API.jpg -------------------------------------------------------------------------------- /models/spring-ai-ollama/src/test/resources/norway.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-ollama/src/test/resources/norway.webp -------------------------------------------------------------------------------- /models/spring-ai-ollama/src/test/resources/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-ollama/src/test/resources/test.png -------------------------------------------------------------------------------- /models/spring-ai-openai/README.md: -------------------------------------------------------------------------------- 1 | [OpenAI Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/openai-chat.html) 2 | 3 | [OpenAI Embedding Documentation](https://docs.spring.io/spring-ai/reference/api/embeddings/openai-embeddings.html) 4 | 5 | [OpenAI Image Generation](https://docs.spring.io/spring-ai/reference/api/image/openai-image.html) 6 | 7 | [OpenAI Transcription Generation](https://docs.spring.io/spring-ai/reference/api/audio/transcriptions/openai-transcriptions.html) 8 | 9 | [OpenAI Text-to-Speech (TTS)](https://docs.spring.io/spring-ai/reference/api/audio/speech/openai-speech.html) -------------------------------------------------------------------------------- /models/spring-ai-openai/src/main/java/org/springframework/ai/openai/ImageResponseMetadata.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package org.springframework.ai.openai; 18 | 19 | public interface ImageResponseMetadata { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /models/spring-ai-openai/src/main/resources/META-INF/spring/aot.factories: -------------------------------------------------------------------------------- 1 | org.springframework.aot.hint.RuntimeHintsRegistrar=\ 2 | org.springframework.ai.openai.aot.OpenAiRuntimeHints -------------------------------------------------------------------------------- /models/spring-ai-openai/src/test/resources/application-logging-test.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2023-2024 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | logging.level.org.springframework.ai.chat.client.advisor=DEBUG 18 | -------------------------------------------------------------------------------- /models/spring-ai-openai/src/test/resources/prompts/acme/system-qa.st: -------------------------------------------------------------------------------- 1 | You're assisting with questions about products in a bicycle catalog. 2 | Use the information from the DOCUMENTS section to provide accurate answers. 3 | The answer involves referring to the price or the dimension of the bicycle, include the bicycle name in the response. 4 | If unsure, simply state that you don't know. 5 | 6 | DOCUMENTS: 7 | {documents} -------------------------------------------------------------------------------- /models/spring-ai-openai/src/test/resources/prompts/eval/qa-evaluator-accurate-answer.st: -------------------------------------------------------------------------------- 1 | You are an AI assistant who helps users to evaluate if the answers to questions are accurate. 2 | You will be provided with a QUESTION and an ANSWER. 3 | Your goal is to evaluate the QUESTION and ANSWER and reply with a YES or NO answer. -------------------------------------------------------------------------------- /models/spring-ai-openai/src/test/resources/prompts/eval/qa-evaluator-fact-based-answer.st: -------------------------------------------------------------------------------- 1 | You are an AI evaluator. Your task is to verify if the provided ANSWER is a direct and accurate response to the given QUESTION. If the ANSWER is correct and directly answers the QUESTION, reply with "YES". If the ANSWER is not a direct response or is inaccurate, reply with "NO". 2 | 3 | For example: 4 | 5 | If the QUESTION is "What is the capital of France?" and the ANSWER is "Paris.", you should respond with "YES". 6 | If the QUESTION is "What is the capital of France?" and the ANSWER is "France is in Europe.", respond with "NO". 7 | Now, evaluate the following: 8 | -------------------------------------------------------------------------------- /models/spring-ai-openai/src/test/resources/prompts/eval/qa-evaluator-not-related-message.st: -------------------------------------------------------------------------------- 1 | You are an AI assistant who helps users to evaluate if the answers to questions are accurate. 2 | You will be provided with a QUESTION and an ANSWER. 3 | A previous evaluation has determined that QUESTION and ANSWER are not related. 4 | Give an explanation as to why they are not related. -------------------------------------------------------------------------------- /models/spring-ai-openai/src/test/resources/prompts/eval/user-evaluator-message.st: -------------------------------------------------------------------------------- 1 | The question and answer to evaluate are: 2 | 3 | QUESTION: ```{question}``` 4 | 5 | ANSWER: ```{answer}``` 6 | 7 | -------------------------------------------------------------------------------- /models/spring-ai-openai/src/test/resources/prompts/system-message.st: -------------------------------------------------------------------------------- 1 | You are a helpful AI assistant. Your name is {name}. 2 | You are an AI assistant that helps people find information. 3 | Your name is {name} 4 | You should reply to the user's request with your name and also in the style of a {voice}. -------------------------------------------------------------------------------- /models/spring-ai-openai/src/test/resources/speech/jfk.flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-openai/src/test/resources/speech/jfk.flac -------------------------------------------------------------------------------- /models/spring-ai-openai/src/test/resources/speech/speech1.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-openai/src/test/resources/speech/speech1.mp3 -------------------------------------------------------------------------------- /models/spring-ai-openai/src/test/resources/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-openai/src/test/resources/test.png -------------------------------------------------------------------------------- /models/spring-ai-postgresml/README.md: -------------------------------------------------------------------------------- 1 | [PostgresML Embedding Documentation](https://docs.spring.io/spring-ai/reference/api/embeddings/postgresml-embeddings.html) 2 | -------------------------------------------------------------------------------- /models/spring-ai-stability-ai/README.md: -------------------------------------------------------------------------------- 1 | [Stability AI Image Generation](https://docs.spring.io/spring-ai/reference/api/image/stabilityai-image.html) 2 | -------------------------------------------------------------------------------- /models/spring-ai-transformers/README.md: -------------------------------------------------------------------------------- 1 | [Transformers Embedding Documentation](https://docs.spring.io/spring-ai/reference/api/embeddings/onnx.html) 2 | -------------------------------------------------------------------------------- /models/spring-ai-transformers/src/main/resources/onnx/all-MiniLM-L6-v2/model.onnx: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e3dde332c13808c718680e7bf74a574e7e5d06f55bd6e1527e51509dcb8206f3 3 | size 90387630 4 | -------------------------------------------------------------------------------- /models/spring-ai-transformers/src/main/resources/onnx/all-MiniLM-L6-v2/model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-transformers/src/main/resources/onnx/all-MiniLM-L6-v2/model.png -------------------------------------------------------------------------------- /models/spring-ai-vertex-ai-embedding/src/test/resources/test.image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-vertex-ai-embedding/src/test/resources/test.image.png -------------------------------------------------------------------------------- /models/spring-ai-vertex-ai-embedding/src/test/resources/test.video.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-vertex-ai-embedding/src/test/resources/test.video.mp4 -------------------------------------------------------------------------------- /models/spring-ai-vertex-ai-gemini/README.md: -------------------------------------------------------------------------------- 1 | [VertexAI Gemini Chat](https://docs.spring.io/spring-ai/reference/api/chat/vertexai-gemini-chat.html) 2 | -------------------------------------------------------------------------------- /models/spring-ai-vertex-ai-gemini/src/main/resources/META-INF/spring/aot.factories: -------------------------------------------------------------------------------- 1 | org.springframework.aot.hint.RuntimeHintsRegistrar=\ 2 | org.springframework.ai.vertexai.gemini.aot.VertexAiGeminiRuntimeHints -------------------------------------------------------------------------------- /models/spring-ai-vertex-ai-gemini/src/test/resources/prompts/system-message.st: -------------------------------------------------------------------------------- 1 | You are a helpful AI assistant. Your name is {name}. 2 | You are an AI assistant that helps people find information. 3 | Your name is {name} 4 | You should reply to the user's request with your name and also in the style of a {voice}. -------------------------------------------------------------------------------- /models/spring-ai-vertex-ai-gemini/src/test/resources/spring-ai-reference-overview.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-vertex-ai-gemini/src/test/resources/spring-ai-reference-overview.pdf -------------------------------------------------------------------------------- /models/spring-ai-vertex-ai-gemini/src/test/resources/vertex.test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-vertex-ai-gemini/src/test/resources/vertex.test.png -------------------------------------------------------------------------------- /models/spring-ai-zhipuai/README.md: -------------------------------------------------------------------------------- 1 | [ZhiPu AI Chat Documentation](https://docs.spring.io/spring-ai/reference/api/chat/zhipuai-chat.html) 2 | 3 | [ZhiPu AI Embedding Documentation](https://docs.spring.io/spring-ai/reference/api/embeddings/zhipuai-embeddings.html) 4 | 5 | [ZhiPu AI Image Documentation](https://docs.spring.io/spring-ai/reference/api/image/zhipuai-image.html) -------------------------------------------------------------------------------- /models/spring-ai-zhipuai/src/main/resources/META-INF/spring/aot.factories: -------------------------------------------------------------------------------- 1 | org.springframework.aot.hint.RuntimeHintsRegistrar=\ 2 | org.springframework.ai.zhipuai.aot.ZhiPuAiRuntimeHints -------------------------------------------------------------------------------- /models/spring-ai-zhipuai/src/test/resources/prompts/system-message.st: -------------------------------------------------------------------------------- 1 | You are an AI assistant that helps people find information. 2 | Your name is {name}. 3 | You should reply to the user's request with your name and also in the style of a {voice}. -------------------------------------------------------------------------------- /models/spring-ai-zhipuai/src/test/resources/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/models/spring-ai-zhipuai/src/test/resources/test.png -------------------------------------------------------------------------------- /spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Provides classes for advising chat clients. 19 | */ 20 | @NonNullApi 21 | @NonNullFields 22 | package org.springframework.ai.chat.client.advisor; 23 | 24 | import org.springframework.lang.NonNullApi; 25 | import org.springframework.lang.NonNullFields; 26 | -------------------------------------------------------------------------------- /spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Chat client. 19 | */ 20 | @NonNullApi 21 | @NonNullFields 22 | package org.springframework.ai.chat.client; 23 | 24 | import org.springframework.lang.NonNullApi; 25 | import org.springframework.lang.NonNullFields; 26 | -------------------------------------------------------------------------------- /spring-ai-client-chat/src/test/java/org/springframework/ai/TestConfiguration.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package org.springframework.ai; 18 | 19 | import org.springframework.boot.SpringBootConfiguration; 20 | 21 | @SpringBootConfiguration 22 | public class TestConfiguration { 23 | 24 | } 25 | -------------------------------------------------------------------------------- /spring-ai-client-chat/src/test/resources/application-logging-test.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2023-2024 the original author or authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # https://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | logging.level.org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor=DEBUG 17 | logging.level.ch.qos.logback=ERROR 18 | -------------------------------------------------------------------------------- /spring-ai-client-chat/src/test/resources/system-prompt.txt: -------------------------------------------------------------------------------- 1 | instructions -------------------------------------------------------------------------------- /spring-ai-client-chat/src/test/resources/tabby-cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-client-chat/src/test/resources/tabby-cat.png -------------------------------------------------------------------------------- /spring-ai-client-chat/src/test/resources/user-prompt.txt: -------------------------------------------------------------------------------- 1 | my question -------------------------------------------------------------------------------- /spring-ai-commons/src/main/java/org/springframework/ai/content/MediaContent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package org.springframework.ai.content; 18 | 19 | import java.util.List; 20 | 21 | public interface MediaContent extends Content { 22 | 23 | /** 24 | * Get the media associated with the content. 25 | */ 26 | List getMedia(); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /spring-ai-commons/src/main/java/org/springframework/ai/content/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Core observation abstractions. 19 | */ 20 | package org.springframework.ai.content; 21 | -------------------------------------------------------------------------------- /spring-ai-commons/src/main/java/org/springframework/ai/document/DocumentReader.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package org.springframework.ai.document; 18 | 19 | import java.util.List; 20 | import java.util.function.Supplier; 21 | 22 | public interface DocumentReader extends Supplier> { 23 | 24 | default List read() { 25 | return get(); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /spring-ai-commons/src/main/java/org/springframework/ai/document/MetadataMode.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package org.springframework.ai.document; 18 | 19 | public enum MetadataMode { 20 | 21 | ALL, EMBED, INFERENCE, NONE 22 | 23 | } 24 | -------------------------------------------------------------------------------- /spring-ai-commons/src/main/java/org/springframework/ai/document/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.document; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-commons/src/main/java/org/springframework/ai/observation/conventions/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Conventions for observation-based AI. 19 | */ 20 | @NonNullApi 21 | @NonNullFields 22 | package org.springframework.ai.observation.conventions; 23 | 24 | import org.springframework.lang.NonNullApi; 25 | import org.springframework.lang.NonNullFields; 26 | -------------------------------------------------------------------------------- /spring-ai-commons/src/main/java/org/springframework/ai/observation/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Core observation abstractions. 19 | */ 20 | package org.springframework.ai.observation; 21 | -------------------------------------------------------------------------------- /spring-ai-commons/src/test/java/org/springframework/ai/TestConfiguration.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package org.springframework.ai; 18 | 19 | import org.springframework.boot.SpringBootConfiguration; 20 | 21 | @SpringBootConfiguration 22 | public class TestConfiguration { 23 | 24 | } 25 | -------------------------------------------------------------------------------- /spring-ai-commons/src/test/resources/events.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "sessions": [ 4 | { 5 | "description": "Session one" 6 | }, 7 | { 8 | "description": "Session two" 9 | }, 10 | { 11 | "description": "Session three" 12 | } 13 | ] 14 | } 15 | ] -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/antora.yml: -------------------------------------------------------------------------------- 1 | name: ai 2 | version: true 3 | title: Spring AI 4 | nav: 5 | - modules/ROOT/nav.adoc 6 | ext: 7 | collector: 8 | - run: 9 | command: mvnw process-resources 10 | local: true 11 | scan: 12 | dir: spring-ai-docs/target/classes/antora-resources 13 | -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/advisors-api-classes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/advisors-api-classes.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/advisors-flow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/advisors-flow.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/advisors-non-stream-vs-stream.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/advisors-non-stream-vs-stream.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/anthropic-claude3-class-diagram.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/anthropic-claude3-class-diagram.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/anthropic-claude3-events-model.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/anthropic-claude3-events-model.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/bedrock/bedrock-anthropic-chat-api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/bedrock/bedrock-anthropic-chat-api.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/bedrock/bedrock-cohere-chat-low-level-api.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/bedrock/bedrock-cohere-chat-low-level-api.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/bedrock/bedrock-cohere-embedding-low-level-api.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/bedrock/bedrock-cohere-embedding-low-level-api.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/bedrock/bedrock-llama-chat-api.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/bedrock/bedrock-llama-chat-api.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/bedrock/bedrock-titan-chat-low-level-api.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/bedrock/bedrock-titan-chat-low-level-api.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/bedrock/bedrock-titan-embedding-low-level-api.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/bedrock/bedrock-titan-embedding-low-level-api.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/chat-options-flow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/chat-options-flow.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/deepseek_r1_multiround_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/deepseek_r1_multiround_example.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/embeddings-api.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/embeddings-api.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/etl-class-diagram.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/etl-class-diagram.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/etl-pipeline.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/etl-pipeline.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/function-calling-basic-flow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/function-calling-basic-flow.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/function-calling-tool-context.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/function-calling-tool-context.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/0.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/1.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/10.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/11.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/13.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/14.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/15.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/16.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/17.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/18.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/19.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/2.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/20.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/20.1.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/20.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/20.2.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/21.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/22.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/23.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/24.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/25.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/26.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/27.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/28.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/29.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/3.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/30.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/31.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/32.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/33.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/34.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/34.1.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/34.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/34.2.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/35.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/36.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/37.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/38.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/39.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/4.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/40.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/5.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/6.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/7.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/8.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/9.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/wikipedia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/hanadb/wikipedia.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/lawofcosines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/lawofcosines.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/mcp/java-mcp-client-architecture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/mcp/java-mcp-client-architecture.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/mcp/java-mcp-server-architecture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/mcp/java-mcp-server-architecture.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/mistral-ai-function-calling-flow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/mistral-ai-function-calling-flow.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/model-hierarchy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/model-hierarchy.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/multimodal.test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/multimodal.test.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/ollama-chat-completion-api.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/ollama-chat-completion-api.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/ollama-chatmodel-function-call.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/ollama-chatmodel-function-call.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/ollama-function-calling-flow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/ollama-function-calling-flow.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/openai-chat-api.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/openai-chat-api.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/openai-chatclient-function-call.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/openai-chatclient-function-call.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/openai-function-calling-flow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/openai-function-calling-flow.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/orbis-sensualium-pictus2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/orbis-sensualium-pictus2.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/pythagorean-triangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/pythagorean-triangle.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-chat-api.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-chat-api.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-chat-completions-clients.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-chat-completions-clients.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-concepts-model-types.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-concepts-model-types.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-concepts-tokens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-concepts-tokens.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-deepseek-integration.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-deepseek-integration.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-dependencies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-dependencies.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-document1-api.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-document1-api.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-embeddings.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-embeddings.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-generic-model-api.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-generic-model-api.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-groq-functions-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-groq-functions-2.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-groq-integration.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-groq-integration.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-architecture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-mcp-architecture.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-message-api.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-message-api.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-nvidia-function-calling.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-nvidia-function-calling.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-nvidia-llm-api-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-nvidia-llm-api-1.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-nvidia-registration.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-nvidia-registration.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-ollama-over-openai.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-ollama-over-openai.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-perplexity-integration.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-perplexity-integration.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-prompt-stuffing.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-prompt-stuffing.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-rag.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-rag.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/structured-output-api.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/structured-output-api.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/structured-output-architecture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/structured-output-architecture.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/structured-output-hierarchy4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/structured-output-hierarchy4.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/test.pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/test.pdf.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/test.video.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/test.video.jpeg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/tools/framework-manager.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/tools/framework-manager.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/tools/framework-manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/tools/framework-manager.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/tools/return-direct.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/tools/return-direct.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/tools/return-direct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/tools/return-direct.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/tools/tool-calling-01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/tools/tool-calling-01.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/tools/tool-context.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/tools/tool-context.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/tools/tool-context.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/tools/tool-context.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/vector_2d_coordinates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/vector_2d_coordinates.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/vector_similarity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/vector_similarity.png -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/vertex-ai-chat-low-level-api.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/vertex-ai-chat-low-level-api.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/images/vertex-ai-gemini-native-api.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/spring-ai-docs/src/main/antora/modules/ROOT/images/vertex-ai-gemini-native-api.jpg -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/pages/api/audio/speech.adoc: -------------------------------------------------------------------------------- 1 | [[Speech]] 2 | = Text-To-Speech (TTS) API 3 | 4 | Spring AI provides support for OpenAI's Speech API. 5 | When additional providers for Speech are implemented, a common `SpeechModel` and `StreamingSpeechModel` interface will be extracted. -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/pages/api/audio/transcriptions.adoc: -------------------------------------------------------------------------------- 1 | [[Transcription]] 2 | = Transcription API 3 | 4 | Spring AI provides support for OpenAI's Transcription API. 5 | When additional providers for Transcription are implemented, a common `AudioTranscriptionModel` interface will be extracted. -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/pages/api/bedrock-chat.adoc: -------------------------------------------------------------------------------- 1 | include::bedrock.adoc[] -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/google-vertexai.adoc: -------------------------------------------------------------------------------- 1 | 2 | = Google VertexAI API 3 | 4 | link:https://cloud.google.com/vertex-ai/docs/reference[VertexAI API] provides high-quality custom machine learning models with minimal machine learning expertise and effort. 5 | 6 | Spring AI provides integration with VertexAI API through the following client(s): 7 | 8 | * xref:api/chat/vertexai-gemini-chat.adoc[] -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/moonshot-chat.adoc: -------------------------------------------------------------------------------- 1 | = Moonshot AI Chat 2 | 3 | This functionality has been moved to the Spring AI Community repository. 4 | 5 | Please visit https://github.com/spring-ai-community/moonshot for the latest version. -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chat/qianfan-chat.adoc: -------------------------------------------------------------------------------- 1 | = QianFan Chat 2 | 3 | This functionality has been moved to the Spring AI Community repository. 4 | 5 | Please visit https://github.com/spring-ai-community/qianfan for the latest version. 6 | -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/qianfan-embeddings.adoc: -------------------------------------------------------------------------------- 1 | = QianFan Embeddings 2 | 3 | This functionality has been moved to the Spring AI Community repository. 4 | 5 | Please visit https://github.com/spring-ai-community/qianfan for the latest version. 6 | -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/pages/api/image/qianfan-image.adoc: -------------------------------------------------------------------------------- 1 | = QianFan Image 2 | 3 | This functionality has been moved to the Spring AI Community repository. 4 | 5 | Please visit https://github.com/spring-ai-community/qianfan for the latest version. 6 | -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/pages/api/speech.adoc: -------------------------------------------------------------------------------- 1 | [[Speech]] 2 | = Speech Model API 3 | 4 | Spring AI provides support for OpenAI's Text-To-Speech (TTS) API. 5 | When additional providers for Speech are implemented, a common `SpeechModel` and `StreamingSpeechModel` interface will be extracted. -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/pages/api/transcriptions.adoc: -------------------------------------------------------------------------------- 1 | [[Transcription]] 2 | = Transcription Model API 3 | 4 | Spring AI provides support for OpenAI's Transcription Model API. 5 | When additional providers for Transcription are implemented, a common `AudioTranscriptionModel` interface will be extracted. -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/pages/api/vectordbs/coherence.adoc: -------------------------------------------------------------------------------- 1 | 2 | == Accessing the Native Client 3 | 4 | The Coherence Vector Store implementation provides access to the underlying native Coherence client (`Session`) through the `getNativeClient()` method: 5 | 6 | [source,java] 7 | ---- 8 | CoherenceVectorStore vectorStore = context.getBean(CoherenceVectorStore.class); 9 | Optional nativeClient = vectorStore.getNativeClient(); 10 | 11 | if (nativeClient.isPresent()) { 12 | Session session = nativeClient.get(); 13 | // Use the native client for Coherence-specific operations 14 | } 15 | ---- 16 | 17 | The native client gives you access to Coherence-specific features and operations that might not be exposed through the `VectorStore` interface. 18 | -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/modules/ROOT/pages/glossary.adoc: -------------------------------------------------------------------------------- 1 | [[appendix]] 2 | [[glossary]] 3 | = Glossary 4 | -------------------------------------------------------------------------------- /spring-ai-docs/src/main/antora/resources/antora-resources/antora.yml: -------------------------------------------------------------------------------- 1 | version: ${antora-component.version} 2 | prerelease: ${antora-component.prerelease} 3 | -------------------------------------------------------------------------------- /spring-ai-integration-tests/src/test/java/org/springframework/ai/integration/tests/tool/domain/Author.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package org.springframework.ai.integration.tests.tool.domain; 18 | 19 | /** 20 | * @author Thomas Vitale 21 | */ 22 | public record Author(String name) { 23 | } 24 | -------------------------------------------------------------------------------- /spring-ai-integration-tests/src/test/java/org/springframework/ai/integration/tests/tool/domain/Book.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package org.springframework.ai.integration.tests.tool.domain; 18 | 19 | /** 20 | * @author Thomas Vitale 21 | */ 22 | public record Book(String title, String author) { 23 | } 24 | -------------------------------------------------------------------------------- /spring-ai-integration-tests/src/test/resources/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | main: 3 | web-application-type: none 4 | ai: 5 | openai: 6 | api-key: ${OPENAI_API_KEY} 7 | chat: 8 | options: 9 | model: gpt-4o-mini 10 | embedding: 11 | options: 12 | model: text-embedding-ada-002 13 | retry: 14 | max-attempts: 3 15 | vectorstore: 16 | pgvector: 17 | initialize-schema: true -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/aot/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.aot; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/chat/memory/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.chat.memory; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/chat/messages/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.chat.messages; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/chat/observation/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Provides the API for chat observations. 19 | */ 20 | @NonNullApi 21 | @NonNullFields 22 | package org.springframework.ai.chat.observation; 23 | 24 | import org.springframework.lang.NonNullApi; 25 | import org.springframework.lang.NonNullFields; 26 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/chat/prompt/FunctionPromptTemplate.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package org.springframework.ai.chat.prompt; 18 | 19 | public class FunctionPromptTemplate extends PromptTemplate { 20 | 21 | private String name; 22 | 23 | public FunctionPromptTemplate(String template) { 24 | super(template); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/chat/prompt/PromptTemplateStringActions.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package org.springframework.ai.chat.prompt; 18 | 19 | import java.util.Map; 20 | 21 | public interface PromptTemplateStringActions { 22 | 23 | String render(); 24 | 25 | String render(Map model); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/embedding/observation/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Provides the API for embedding observations. 19 | */ 20 | @NonNullApi 21 | @NonNullFields 22 | package org.springframework.ai.embedding.observation; 23 | 24 | import org.springframework.lang.NonNullApi; 25 | import org.springframework.lang.NonNullFields; 26 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/embedding/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Provides the API for embedding observations. 19 | */ 20 | @NonNullApi 21 | @NonNullFields 22 | package org.springframework.ai.embedding; 23 | 24 | import org.springframework.lang.NonNullApi; 25 | import org.springframework.lang.NonNullFields; 26 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/image/ImageGenerationMetadata.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package org.springframework.ai.image; 18 | 19 | import org.springframework.ai.model.ResultMetadata; 20 | 21 | public interface ImageGenerationMetadata extends ResultMetadata { 22 | 23 | } 24 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/image/ImageModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package org.springframework.ai.image; 18 | 19 | import org.springframework.ai.model.Model; 20 | 21 | @FunctionalInterface 22 | public interface ImageModel extends Model { 23 | 24 | ImageResponse call(ImagePrompt request); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/image/observation/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Provides classes for observing image data. 19 | */ 20 | @NonNullApi 21 | @NonNullFields 22 | package org.springframework.ai.image.observation; 23 | 24 | import org.springframework.lang.NonNullApi; 25 | import org.springframework.lang.NonNullFields; 26 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/model/observation/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Provides classes for observing model data. 19 | */ 20 | @NonNullApi 21 | @NonNullFields 22 | package org.springframework.ai.model.observation; 23 | 24 | import org.springframework.lang.NonNullApi; 25 | import org.springframework.lang.NonNullFields; 26 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/model/tool/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.model.tool; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/tool/annotation/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.tool.annotation; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/tool/definition/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.tool.definition; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/tool/execution/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.tool.execution; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/tool/function/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.tool.function; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/tool/metadata/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.tool.metadata; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/tool/method/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.tool.method; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/tool/observation/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Provides the API for chat client advisors observations. 19 | */ 20 | @NonNullApi 21 | @NonNullFields 22 | package org.springframework.ai.tool.observation; 23 | 24 | import org.springframework.lang.NonNullApi; 25 | import org.springframework.lang.NonNullFields; 26 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/tool/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.tool; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.tool.resolution; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/tool/support/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.tool.support; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/util/json/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.util.json; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.util.json.schema; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-model/src/main/resources/META-INF/spring/aot.factories: -------------------------------------------------------------------------------- 1 | org.springframework.aot.hint.RuntimeHintsRegistrar=\ 2 | org.springframework.ai.aot.SpringAiCoreRuntimeHints,\ 3 | org.springframework.ai.aot.KnuddelsRuntimeHints,\ 4 | org.springframework.ai.aot.ToolRuntimeHints 5 | 6 | org.springframework.beans.factory.aot.BeanRegistrationAotProcessor=\ 7 | org.springframework.ai.aot.ToolBeanRegistrationAotProcessor 8 | -------------------------------------------------------------------------------- /spring-ai-model/src/test/resources/prompt-system.txt: -------------------------------------------------------------------------------- 1 | Tell me, did you sail across the sun? -------------------------------------------------------------------------------- /spring-ai-model/src/test/resources/prompt-user.txt: -------------------------------------------------------------------------------- 1 | Hello, world! -------------------------------------------------------------------------------- /spring-ai-rag/src/main/java/org/springframework/ai/rag/advisor/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.rag.advisor; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-rag/src/main/java/org/springframework/ai/rag/generation/augmentation/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * RAG Sub-Module: Query Augmentation. 19 | */ 20 | @NonNullApi 21 | @NonNullFields 22 | package org.springframework.ai.rag.generation.augmentation; 23 | 24 | import org.springframework.lang.NonNullApi; 25 | import org.springframework.lang.NonNullFields; 26 | -------------------------------------------------------------------------------- /spring-ai-rag/src/main/java/org/springframework/ai/rag/postretrieval/document/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.rag.postretrieval.document; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-rag/src/main/java/org/springframework/ai/rag/retrieval/join/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * RAG Sub-Module: Document Join. 19 | */ 20 | @NonNullApi 21 | @NonNullFields 22 | package org.springframework.ai.rag.retrieval.join; 23 | 24 | import org.springframework.lang.NonNullApi; 25 | import org.springframework.lang.NonNullFields; 26 | -------------------------------------------------------------------------------- /spring-ai-rag/src/main/java/org/springframework/ai/rag/retrieval/search/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * RAG Sub-Module: Document Search. 19 | */ 20 | @NonNullApi 21 | @NonNullFields 22 | package org.springframework.ai.rag.retrieval.search; 23 | 24 | import org.springframework.lang.NonNullApi; 25 | import org.springframework.lang.NonNullFields; 26 | -------------------------------------------------------------------------------- /spring-ai-spring-boot-docker-compose/src/test/resources/org/springframework/ai/docker/compose/service/connection/chroma/chroma-compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | chroma: 3 | image: '{imageName}' 4 | ports: 5 | - '8000' 6 | -------------------------------------------------------------------------------- /spring-ai-spring-boot-docker-compose/src/test/resources/org/springframework/ai/docker/compose/service/connection/chroma/chroma-with-token-compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | chroma: 3 | image: '{imageName}' 4 | ports: 5 | - '8000' 6 | environment: 7 | - CHROMA_SERVER_AUTHN_CREDENTIALS=secret 8 | - CHROMA_SERVER_AUTHN_PROVIDER=chromadb.auth.token_authn.TokenAuthenticationServerProvider 9 | -------------------------------------------------------------------------------- /spring-ai-spring-boot-docker-compose/src/test/resources/org/springframework/ai/docker/compose/service/connection/mongo/mongo-compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | mongo: 3 | image: '{imageName}' 4 | ports: 5 | - '27017' 6 | -------------------------------------------------------------------------------- /spring-ai-spring-boot-docker-compose/src/test/resources/org/springframework/ai/docker/compose/service/connection/ollama/ollama-compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | ollama: 3 | image: '{imageName}' 4 | ports: 5 | - '11434' 6 | -------------------------------------------------------------------------------- /spring-ai-spring-boot-docker-compose/src/test/resources/org/springframework/ai/docker/compose/service/connection/opensearch/localstack-compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | localstack: 3 | image: '{imageName}' 4 | ports: 5 | - '4566' 6 | -------------------------------------------------------------------------------- /spring-ai-spring-boot-docker-compose/src/test/resources/org/springframework/ai/docker/compose/service/connection/opensearch/opensearch-compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | opensearch: 3 | image: '{imageName}' 4 | ports: 5 | - '9200' 6 | environment: 7 | - OPENSEARCH_INITIAL_ADMIN_PASSWORD=D3v3l0p-ment 8 | - discovery.type=single-node 9 | -------------------------------------------------------------------------------- /spring-ai-spring-boot-docker-compose/src/test/resources/org/springframework/ai/docker/compose/service/connection/qdrant/qdrant-compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | qdrant: 3 | image: '{imageName}' 4 | ports: 5 | - '6334' 6 | environment: 7 | - QDRANT__SERVICE__API_KEY=springai 8 | -------------------------------------------------------------------------------- /spring-ai-spring-boot-docker-compose/src/test/resources/org/springframework/ai/docker/compose/service/connection/typesense/typesense-compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | typesense: 3 | image: '{imageName}' 4 | ports: 5 | - '8108' 6 | command: '--data-dir /tmp --enable-cors' 7 | environment: 8 | - TYPESENSE_API_KEY=secret 9 | -------------------------------------------------------------------------------- /spring-ai-spring-boot-docker-compose/src/test/resources/org/springframework/ai/docker/compose/service/connection/weaviate/weaviate-compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | weaviate: 3 | image: '{imageName}' 4 | ports: 5 | - '8080' 6 | environment: 7 | - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true 8 | - PERSISTENCE_DATA_PATH=/var/lib/weaviate 9 | -------------------------------------------------------------------------------- /spring-ai-template-st/src/main/java/org/springframework/ai/template/st/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2025 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.template.st; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-test/README.md: -------------------------------------------------------------------------------- 1 | TODO: 2 | Documentation and sample tests using the `BasicEvaluationTest`. -------------------------------------------------------------------------------- /spring-ai-test/src/main/resources/prompts/spring/test/evaluation/qa-evaluator-accurate-answer.st: -------------------------------------------------------------------------------- 1 | You are an AI assistant who helps users to evaluate if the answers to questions are accurate. 2 | You will be provided with a QUESTION and an ANSWER. 3 | Your goal is to evaluate the QUESTION and ANSWER and reply with a YES or NO answer. -------------------------------------------------------------------------------- /spring-ai-test/src/main/resources/prompts/spring/test/evaluation/qa-evaluator-fact-based-answer.st: -------------------------------------------------------------------------------- 1 | You are an AI evaluator. Your task is to verify if the provided ANSWER is a direct and accurate response to the given QUESTION. If the ANSWER is correct and directly answers the QUESTION, reply with "YES". If the ANSWER is not a direct response or is inaccurate, reply with "NO". 2 | 3 | For example: 4 | 5 | If the QUESTION is "What is the capital of France?" and the ANSWER is "Paris.", you should respond with "YES". 6 | If the QUESTION is "What is the capital of France?" and the ANSWER is "France is in Europe.", respond with "NO". 7 | Now, evaluate the following: 8 | -------------------------------------------------------------------------------- /spring-ai-test/src/main/resources/prompts/spring/test/evaluation/qa-evaluator-not-related-message.st: -------------------------------------------------------------------------------- 1 | You are an AI assistant who helps users to evaluate if the answers to questions are accurate. 2 | You will be provided with a QUESTION and an ANSWER. 3 | A previous evaluation has determined that QUESTION and ANSWER are not related. 4 | Give an explanation as to why they are not related. -------------------------------------------------------------------------------- /spring-ai-test/src/main/resources/prompts/spring/test/evaluation/user-evaluator-message.st: -------------------------------------------------------------------------------- 1 | The question and answer to evaluate are: 2 | 3 | QUESTION: ```{question}``` 4 | 5 | ANSWER: ```{answer}``` 6 | 7 | -------------------------------------------------------------------------------- /spring-ai-test/src/main/resources/test/data/time.shelter.txt: -------------------------------------------------------------------------------- 1 | Somewhere in the Andes, they believe in this very day that the future is behind you. It comes up from behind your back, surprising and unforeseeable, while the past is always before your eyes, that which has already happened. When they talk about the past, the people of the Aymara tribe point in front of them. You walk forward facing the past, and you turn back toward the future. 2 | ― Georgi Gospodinov, Time Shelter -------------------------------------------------------------------------------- /spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | @NonNullApi 18 | @NonNullFields 19 | package org.springframework.ai.vectorstore; 20 | 21 | import org.springframework.lang.NonNullApi; 22 | import org.springframework.lang.NonNullFields; 23 | -------------------------------------------------------------------------------- /spring-ai-vector-store/src/main/resources/META-INF/additional-spring-configuration-metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "groups": [], 3 | "properties": [ 4 | { 5 | "name": "spring.ai.vectorstore.type", 6 | "type": "java.lang.String", 7 | "description": "Vector store type. Requires a vector store." 8 | } 9 | ], 10 | "hints": [], 11 | "ignored": { 12 | "properties": [] 13 | } 14 | } -------------------------------------------------------------------------------- /src/checkstyle/checkstyle-header.txt: -------------------------------------------------------------------------------- 1 | ^\Q/*\E$ 2 | ^\Q * Copyright \E20\d\d\-20\d\d\Q the original author or authors.\E$ 3 | ^\Q *\E$ 4 | ^\Q * Licensed under the Apache License, Version 2.0 (the "License");\E$ 5 | ^\Q * you may not use this file except in compliance with the License.\E$ 6 | ^\Q * You may obtain a copy of the License at\E$ 7 | ^\Q *\E$ 8 | ^\Q * https://www.apache.org/licenses/LICENSE-2.0\E$ 9 | ^\Q *\E$ 10 | ^\Q * Unless required by applicable law or agreed to in writing, software\E$ 11 | ^\Q * distributed under the License is distributed on an "AS IS" BASIS,\E$ 12 | ^\Q * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\E$ 13 | ^\Q * See the License for the specific language governing permissions and\E$ 14 | ^\Q * limitations under the License.\E$ 15 | ^\Q */\E$ 16 | ^$ 17 | ^.*$ -------------------------------------------------------------------------------- /vector-stores/spring-ai-azure-cosmos-db-store/README.md: -------------------------------------------------------------------------------- 1 | [Azure Cosmos DB Vector Store Documentation](https://docs.spring.io/spring-ai/reference/api/vectordbs/azure-cosmos-db.html) -------------------------------------------------------------------------------- /vector-stores/spring-ai-azure-cosmos-db-store/src/test/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.ai.vectorstore.cosmosdb.databaseName=db 2 | spring.ai.vectorstore.cosmosdb.containerName=container 3 | spring.ai.vectorstore.cosmosdb.key=${COSMOSDB_AI_ENDPOINT} 4 | spring.ai.vectorstore.cosmosdb.uri=${COSMOSDB_AI_KEY} 5 | -------------------------------------------------------------------------------- /vector-stores/spring-ai-azure-store/README.md: -------------------------------------------------------------------------------- 1 | [Azure AI Search Vector Store Documentation](https://docs.spring.io/spring-ai/reference/api/vectordbs/azure.html) -------------------------------------------------------------------------------- /vector-stores/spring-ai-cassandra-store/README.md: -------------------------------------------------------------------------------- 1 | [Apache Cassandra Vector Store Documentation](https://docs.spring.io/spring-ai/reference/api/vectordbs/apache-cassandra.html) -------------------------------------------------------------------------------- /vector-stores/spring-ai-cassandra-store/src/main/resources/application.conf: -------------------------------------------------------------------------------- 1 | # Reference configuration for the DataStax Java driver for Apache Cassandra® 2 | # see https://github.com/apache/cassandra-java-driver/tree/4.x/manual/core/configuration 3 | # 4 | # 5 | # when using spring-boot autoconfigure this will not be used 6 | # instead CassandraVectorStoreAutoConfiguration.driverConfigLoaderBuilderCustomizer() is used 7 | datastax-java-driver { 8 | profiles { 9 | spring-ai-updates { 10 | basic.request { 11 | consistency = LOCAL_QUORUM 12 | timeout = 1 seconds 13 | default-idempotence = true 14 | } 15 | } 16 | spring-ai-search { 17 | basic.request { 18 | consistency = LOCAL_ONE 19 | timeout = 10 seconds 20 | default-idempotence = true 21 | } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /vector-stores/spring-ai-cassandra-store/src/test/resources/application.conf: -------------------------------------------------------------------------------- 1 | # Reference configuration for the DataStax Java driver for Apache Cassandra®. 2 | # see https://github.com/apache/cassandra-java-driver/tree/4.x/manual/core/configuration 3 | datastax-java-driver { 4 | # drop statements in tests can be slow 5 | basic.request.timeout = 20 seconds 6 | } 7 | -------------------------------------------------------------------------------- /vector-stores/spring-ai-cassandra-store/src/test/resources/test_wiki_full_schema.cql: -------------------------------------------------------------------------------- 1 | CREATE KEYSPACE IF NOT EXISTS test_wikidata WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1}; 2 | 3 | CREATE TABLE IF NOT EXISTS test_wikidata.articles ( 4 | wiki text, 5 | language text, 6 | title text, 7 | chunk_no int, 8 | id int, 9 | revision int, 10 | body text, 11 | all_minilm_l6_v2_embedding vector, 12 | PRIMARY KEY ((wiki, language, title), chunk_no) 13 | ); 14 | 15 | CREATE CUSTOM INDEX IF NOT EXISTS all_minilm_l6_v2_ann ON test_wikidata.articles(all_minilm_l6_v2_embedding) USING 'SAI' 16 | WITH OPTIONS = { 'similarity_function': 'COSINE' }; 17 | 18 | 19 | CREATE CUSTOM INDEX IF NOT EXISTS id_idx ON test_wikidata.articles(id) USING 'SAI'; -------------------------------------------------------------------------------- /vector-stores/spring-ai-cassandra-store/src/test/resources/test_wiki_partial_0_schema.cql: -------------------------------------------------------------------------------- 1 | CREATE KEYSPACE IF NOT EXISTS test_wikidata WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1}; 2 | -------------------------------------------------------------------------------- /vector-stores/spring-ai-cassandra-store/src/test/resources/test_wiki_partial_1_schema.cql: -------------------------------------------------------------------------------- 1 | CREATE KEYSPACE IF NOT EXISTS test_wikidata WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1}; 2 | 3 | CREATE TABLE IF NOT EXISTS test_wikidata.articles ( 4 | wiki text, 5 | language text, 6 | title text, 7 | chunk_no int, 8 | id int, 9 | revision int, 10 | body text, 11 | all_minilm_l6_v2_embedding vector, 12 | PRIMARY KEY ((wiki, language, title), chunk_no) 13 | ); 14 | -------------------------------------------------------------------------------- /vector-stores/spring-ai-cassandra-store/src/test/resources/test_wiki_partial_2_schema.cql: -------------------------------------------------------------------------------- 1 | CREATE KEYSPACE IF NOT EXISTS test_wikidata WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1}; 2 | 3 | CREATE TABLE IF NOT EXISTS test_wikidata.articles ( 4 | wiki text, 5 | language text, 6 | title text, 7 | chunk_no int, 8 | id int, 9 | all_minilm_l6_v2_embedding vector, 10 | PRIMARY KEY ((wiki, language, title), chunk_no) 11 | ); 12 | 13 | CREATE CUSTOM INDEX IF NOT EXISTS all_minilm_l6_v2_ann ON test_wikidata.articles(all_minilm_l6_v2_embedding) USING 'SAI' 14 | WITH OPTIONS = { 'similarity_function': 'COSINE' }; 15 | 16 | -------------------------------------------------------------------------------- /vector-stores/spring-ai-cassandra-store/src/test/resources/test_wiki_partial_3_schema.cql: -------------------------------------------------------------------------------- 1 | CREATE KEYSPACE IF NOT EXISTS test_wikidata WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1}; 2 | 3 | CREATE TABLE IF NOT EXISTS test_wikidata.articles ( 4 | wiki text, 5 | language text, 6 | title text, 7 | chunk_no int, 8 | id int, 9 | revision int, 10 | body text, 11 | PRIMARY KEY ((wiki, language, title), chunk_no) 12 | ); -------------------------------------------------------------------------------- /vector-stores/spring-ai-cassandra-store/src/test/resources/test_wiki_partial_4_schema.cql: -------------------------------------------------------------------------------- 1 | CREATE KEYSPACE IF NOT EXISTS test_wikidata WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1}; 2 | 3 | CREATE TABLE IF NOT EXISTS test_wikidata.articles ( 4 | wiki text, 5 | language text, 6 | title text, 7 | chunk_no int, 8 | messages text, 9 | PRIMARY KEY ((wiki, language, title), chunk_no) 10 | ); -------------------------------------------------------------------------------- /vector-stores/spring-ai-chroma-store/README.md: -------------------------------------------------------------------------------- 1 | [Chroma Vector Store Documentation](https://docs.spring.io/spring-ai/reference/api/vectordbs/chroma.html) -------------------------------------------------------------------------------- /vector-stores/spring-ai-chroma-store/src/test/resources/server.htpasswd: -------------------------------------------------------------------------------- 1 | admin:$2y$05$qSmQb0YJmaLRIhbT7MRBRu6bPK267dxkzLikr6WA/7JfGERc7dKkW 2 | 3 | -------------------------------------------------------------------------------- /vector-stores/spring-ai-coherence-store/README.md: -------------------------------------------------------------------------------- 1 | [Oracle Coherence Vector Search Documentation](https://docs.oracle.com/) 2 | -------------------------------------------------------------------------------- /vector-stores/spring-ai-couchbase-store/README.md: -------------------------------------------------------------------------------- 1 | [Couchbase Vector Store Documentation](https://docs.spring.io/spring-ai/reference/1.0-SNAPSHOT/api/vectordbs/couchbase.html) -------------------------------------------------------------------------------- /vector-stores/spring-ai-couchbase-store/src/test/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.application.name=demo 2 | -------------------------------------------------------------------------------- /vector-stores/spring-ai-gemfire-store/README.md: -------------------------------------------------------------------------------- 1 | [GemFire Vector Store Documentation](https://docs.spring.io/spring-ai/reference/api/vectordbs/gemfire.html) -------------------------------------------------------------------------------- /vector-stores/spring-ai-hanadb-store/README.md: -------------------------------------------------------------------------------- 1 | [SAP Hana Cloud Vector Store Documentation](https://docs.spring.io/spring-ai/reference/api/vectordbs/hana.html) -------------------------------------------------------------------------------- /vector-stores/spring-ai-hanadb-store/src/test/resources/Cricket_World_Cup.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spring-projects/spring-ai/694bb50be5825bb2d91f3ce0291020d9aadcb780/vector-stores/spring-ai-hanadb-store/src/test/resources/Cricket_World_Cup.pdf -------------------------------------------------------------------------------- /vector-stores/spring-ai-hanadb-store/src/test/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.ai.openai.api-key=${OPENAI_API_KEY} 2 | spring.ai.openai.embedding.options.model=text-embedding-ada-002 3 | 4 | spring.datasource.driver-class-name=com.sap.db.jdbc.Driver 5 | spring.datasource.url=${HANA_DATASOURCE_URL} 6 | spring.datasource.username=${HANA_DATASOURCE_USERNAME} 7 | spring.datasource.password=${HANA_DATASOURCE_PASSWORD} 8 | 9 | spring.ai.vectorstore.hanadb.tableName=CRICKET_WORLD_CUP 10 | spring.ai.vectorstore.hanadb.topK=3 11 | -------------------------------------------------------------------------------- /vector-stores/spring-ai-mariadb-store/README.md: -------------------------------------------------------------------------------- 1 | [MariaDB Vector Store Documentation](https://docs.spring.io/spring-ai/reference/api/vectordbs/mariadb.html) -------------------------------------------------------------------------------- /vector-stores/spring-ai-milvus-store/README.md: -------------------------------------------------------------------------------- 1 | [Milvus Vector Store Documentation](https://docs.spring.io/spring-ai/reference/api/vectordbs/milvus.html) -------------------------------------------------------------------------------- /vector-stores/spring-ai-neo4j-store/README.md: -------------------------------------------------------------------------------- 1 | [Neo4j Vector Store Documentation](https://docs.spring.io/spring-ai/reference/api/vectordbs/neo4j.html) -------------------------------------------------------------------------------- /vector-stores/spring-ai-oracle-store/README.md: -------------------------------------------------------------------------------- 1 | [Oracle AI Vector Search Documentation](https://docs.oracle.com/en/database/oracle/oracle-database/23/nfcoa/ai_vector_search.html) -------------------------------------------------------------------------------- /vector-stores/spring-ai-oracle-store/src/test/resources/initialize.sql: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023-2024 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | -- Exit on any errors 18 | WHENEVER SQLERROR EXIT SQL.SQLCODE 19 | 20 | -- Configure the size of the Vector Pool to 1 GiB. 21 | ALTER SYSTEM SET vector_memory_size=1G SCOPE=SPFILE; 22 | 23 | SHUTDOWN ABORT; 24 | STARTUP; 25 | 26 | exit; 27 | -------------------------------------------------------------------------------- /vector-stores/spring-ai-pgvector-store/README.md: -------------------------------------------------------------------------------- 1 | [PGvector Vector Store Documentation](https://docs.spring.io/spring-ai/reference/api/vectordbs/pgvector.html) -------------------------------------------------------------------------------- /vector-stores/spring-ai-pinecone-store/README.md: -------------------------------------------------------------------------------- 1 | [Pinecone Vector Store Documentation](https://docs.spring.io/spring-ai/reference/api/vectordbs/pinecone.html) -------------------------------------------------------------------------------- /vector-stores/spring-ai-pinecone-store/src/main/resources/META-INF/spring/aot.factories: -------------------------------------------------------------------------------- 1 | org.springframework.aot.hint.RuntimeHintsRegistrar=org.springframework.ai.vectorstore.pinecone.PineconeVectorStoreHints 2 | -------------------------------------------------------------------------------- /vector-stores/spring-ai-qdrant-store/README.md: -------------------------------------------------------------------------------- 1 | # Qdrant Vector Store 2 | 3 | [Reference Documentation](https://docs.spring.io/spring-ai/reference/api/vectordbs/qdrant.html) 4 | 5 | ## Run locally 6 | 7 | ### Accessing the Web UI 8 | 9 | First, run the Docker container: 10 | 11 | ``` 12 | docker run -p 6333:6333 -p 6334:6334 \ 13 | -v $(pwd)/qdrant_storage:/qdrant/storage:z \ 14 | qdrant/qdrant 15 | ``` 16 | 17 | ### Security: Adding API Key to Qdrant Container 18 | To enhance security, you can add an API key to your Qdrant container using the environment variable. 19 | 20 | ``` 21 | -e QDRANT__SERVICE__API_KEY= 22 | ``` 23 | 24 | This ensures that only authorized users with the correct API key can access the Qdrant service. 25 | 26 | The GUI is available at http://localhost:6333/dashboard 27 | 28 | ## Qdrant references 29 | 30 | - https://qdrant.tech/documentation/interfaces/ 31 | - https://github.com/qdrant/java-client 32 | -------------------------------------------------------------------------------- /vector-stores/spring-ai-redis-store/README.md: -------------------------------------------------------------------------------- 1 | [Redis Vector Store Documentation](https://docs.spring.io/spring-ai/reference/api/vectordbs/redis.html) -------------------------------------------------------------------------------- /vector-stores/spring-ai-weaviate-store/README.md: -------------------------------------------------------------------------------- 1 | [Weaviate Vector Store Documentation](https://docs.spring.io/spring-ai/reference/api/vectordbs/weaviate.html) -------------------------------------------------------------------------------- /vector-stores/spring-ai-weaviate-store/src/test/resources/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.4' 2 | services: 3 | weaviate: 4 | command: 5 | - --host 6 | - 0.0.0.0 7 | - --port 8 | - '8080' 9 | - --scheme 10 | - http 11 | image: semitechnologies/weaviate:1.22.4 12 | ports: 13 | - "8080:8080" 14 | restart: on-failure:0 15 | environment: 16 | QUERY_DEFAULTS_LIMIT: 25 17 | AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' 18 | PERSISTENCE_DATA_PATH: '/var/lib/weaviate' 19 | DEFAULT_VECTORIZER_MODULE: 'none' 20 | CLUSTER_HOSTNAME: 'node1' 21 | --------------------------------------------------------------------------------