diff --git a/pom.xml b/pom.xml index a2cf091e9c9b..5bf0e34875fc 100644 --- a/pom.xml +++ b/pom.xml @@ -764,10 +764,6 @@ spring-6-rsocket spring-activiti spring-actuator - spring-ai - spring-ai-2 - spring-ai-3 - spring-ai-4 spring-ai-modules spring-aop spring-aop-2 @@ -1203,10 +1199,6 @@ spring-6-rsocket spring-activiti spring-actuator - spring-ai - spring-ai-2 - spring-ai-3 - spring-ai-4 spring-ai-modules spring-aop spring-aop-2 diff --git a/spring-ai-2/README.md b/spring-ai-2/README.md deleted file mode 100644 index 512b64d9b27e..000000000000 --- a/spring-ai-2/README.md +++ /dev/null @@ -1,2 +0,0 @@ -## Relevant Articles - diff --git a/spring-ai-2/pom.xml b/spring-ai-2/pom.xml deleted file mode 100644 index 591141b18ccd..000000000000 --- a/spring-ai-2/pom.xml +++ /dev/null @@ -1,188 +0,0 @@ - - - 4.0.0 - spring-ai-2 - 0.0.1 - jar - spring-ai-2 - - - com.baeldung - parent-boot-3 - 0.0.1-SNAPSHOT - ../parent-boot-3 - - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - - - - - - org.springframework.ai - spring-ai-bom - ${spring-ai.version} - pom - import - - - - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.ai - spring-ai-markdown-document-reader - - - org.springframework.ai - spring-ai-ollama-spring-boot-starter - - - org.springframework.ai - spring-ai-chroma-store-spring-boot-starter - - - org.springframework.ai - spring-ai-anthropic-spring-boot-starter - - - org.springframework.ai - spring-ai-bedrock-converse-spring-boot-starter - - - org.springframework.boot - spring-boot-starter-data-jpa - - - org.springframework.ai - spring-ai-openai-spring-boot-starter - - - org.hsqldb - hsqldb - runtime - - - org.springframework.ai - spring-ai-pgvector-store-spring-boot-starter - - - - - org.springframework.boot - spring-boot-starter-test - test - - - org.springframework.ai - spring-ai-spring-boot-testcontainers - test - - - org.testcontainers - chromadb - test - - - org.testcontainers - ollama - test - - - org.springframework.boot - spring-boot-docker-compose - ${spring-boot-docker-compose.version} - - - org.springframework.ai - spring-ai-redis-store-spring-boot-starter - - - org.springframework.ai - spring-ai-pdf-document-reader - - - - - - chromadb - - true - - - com.baeldung.springai.chromadb.Application - - - - assistant - - com.baeldung.spring.ai.om.OrderManagementApplication - - - - anthropic - - com.baeldung.springai.anthropic.Application - - - - evaluator - - com.baeldung.springai.evaluator.Application - - - - hugging-face - - com.baeldung.springai.huggingface.Application - - - - amazon-nova - - com.baeldung.springai.nova.Application - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - ${spring.boot.mainclass} - - - - org.apache.maven.plugins - maven-compiler-plugin - - 21 - - - - - - - 3.4.1 - 1.0.0-M6 - 5.9.0 - 3.1.1 - - - \ No newline at end of file diff --git a/spring-ai-2/src/main/resources/application-mcp-client.properties b/spring-ai-2/src/main/resources/application-mcp-client.properties deleted file mode 100644 index e92e91fef1e9..000000000000 --- a/spring-ai-2/src/main/resources/application-mcp-client.properties +++ /dev/null @@ -1,11 +0,0 @@ -spring.ai.anthropic.api-key=${ANTHROPIC_API_KEY} -spring.ai.anthropic.chat.options.model=claude-3-7-sonnet-20250219 - -spring.ai.mcp.client.sse.connections.author-tools-server.url=http://localhost:8081 - -spring.ai.mcp.client.stdio.connections.filesystem.command=npx -spring.ai.mcp.client.stdio.connections.filesystem.args=-y, @modelcontextprotocol/server-filesystem, ./ - -spring.ai.mcp.client.stdio.connections.brave-search.command=npx -spring.ai.mcp.client.stdio.connections.brave-search.args=-y, @modelcontextprotocol/server-brave-search -spring.ai.mcp.client.stdio.connections.brave-search.env.BRAVE_API_KEY=${BRAVE_API_KEY} \ No newline at end of file diff --git a/spring-ai-3/README.md b/spring-ai-3/README.md deleted file mode 100644 index ae92e6521af1..000000000000 --- a/spring-ai-3/README.md +++ /dev/null @@ -1,2 +0,0 @@ -## Relevant Articles -- [Building a RAG App Using MongoDB and Spring AI](https://www.baeldung.com/spring-ai-mongodb-rag) diff --git a/spring-ai-3/pom.xml b/spring-ai-3/pom.xml deleted file mode 100644 index 8942749ffb46..000000000000 --- a/spring-ai-3/pom.xml +++ /dev/null @@ -1,172 +0,0 @@ - - - 4.0.0 - spring-ai-3 - 0.0.1 - jar - spring-ai-3 - - - com.baeldung - parent-boot-3 - 0.0.1-SNAPSHOT - ../parent-boot-3 - - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - - - - - - org.springframework.ai - spring-ai-bom - ${spring-ai.version} - pom - import - - - - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-data-jpa - - - org.springframework.ai - spring-ai-openai-spring-boot-starter - - - org.springframework.ai - spring-ai-mcp-server-webmvc-spring-boot-starter - - - org.hsqldb - hsqldb - runtime - - - org.springframework.ai - spring-ai-starter-model-openai - ${spring-ai-start-model-openai.version} - - - org.springframework.boot - spring-boot-starter-oauth2-resource-server - ${oauth2-resource-server.version} - - - org.springframework.boot - spring-boot-starter-oauth2-authorization-server - ${oauth2-authorization-server.version} - - - - - org.springframework.boot - spring-boot-starter-test - test - - - org.springframework.ai - spring-ai-spring-boot-testcontainers - test - - - org.testcontainers - junit-jupiter - test - - - org.testcontainers - chromadb - test - - - org.testcontainers - ollama - test - - - org.springframework.boot - spring-boot-docker-compose - ${spring-boot-docker-compose.version} - - - org.springframework.ai - spring-ai-starter-vector-store-mongodb-atlas - ${spring-ai-mongodb-atlas.version} - - - org.springframework.ai - spring-ai-mistral-ai-spring-boot-starter - - - - - - amazon-nova - - true - - - com.baeldung.springai.nova.Application - - - - transcribe - - com.baeldung.springai.transcribe.Application - - - true - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - ${spring.boot.mainclass} - - - - org.apache.maven.plugins - maven-compiler-plugin - - 21 - - - - - - - 1.0.0-M7 - 5.9.0 - 3.1.1 - 3.5.0 - 1.0.0-M6 - 1.0.0-M7 - 3.4.2 - 3.3.3 - - - diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/dto/Patient.java b/spring-ai-3/src/main/java/com/baeldung/springai/dto/Patient.java deleted file mode 100644 index 493cf23bde46..000000000000 --- a/spring-ai-3/src/main/java/com/baeldung/springai/dto/Patient.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.baeldung.springai.dto; - -public record Patient(String patientId) { -} diff --git a/spring-ai-4/pom.xml b/spring-ai-4/pom.xml deleted file mode 100644 index ac2466af39f8..000000000000 --- a/spring-ai-4/pom.xml +++ /dev/null @@ -1,119 +0,0 @@ - - - 4.0.0 - spring-ai-4 - 0.0.1 - jar - spring-ai-4 - - - com.baeldung - parent-boot-3 - 0.0.1-SNAPSHOT - ../parent-boot-3 - - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - true - - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - false - - - - - - - - org.springframework.ai - spring-ai-bom - ${spring-ai.version} - pom - import - - - - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.ai - spring-ai-starter-model-openai - - - org.springframework.ai - spring-ai-model-chat-memory-repository-jdbc - - - org.hsqldb - hsqldb - runtime - - - - - org.springframework.boot - spring-boot-starter-test - test - - - - - - chat-memory - - true - - - com.baeldung.springai.memory.Application - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - ${spring.boot.mainclass} - - - - org.apache.maven.plugins - maven-compiler-plugin - - 21 - - - - - - - 5.9.0 - 3.5.0 - 1.0.0 - - - diff --git a/spring-ai-modules/pom.xml b/spring-ai-modules/pom.xml index 44c133498d10..7ac5499cb3f2 100644 --- a/spring-ai-modules/pom.xml +++ b/spring-ai-modules/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 spring-ai-modules 0.0.1 @@ -16,9 +16,13 @@ - spring-ai-mcp - spring-ai-text-to-sql - spring-ai-vector-stores + spring-ai-advanced-features + spring-ai-chat-models + spring-ai-conversational + spring-ai-core + spring-ai-infrastructure + spring-ai-multimodal + spring-ai-vector-rag \ No newline at end of file diff --git a/spring-ai-modules/spring-ai-advanced-features/pom.xml b/spring-ai-modules/spring-ai-advanced-features/pom.xml new file mode 100644 index 000000000000..fd4a426c26a2 --- /dev/null +++ b/spring-ai-modules/spring-ai-advanced-features/pom.xml @@ -0,0 +1,202 @@ + + + 4.0.0 + spring-ai-advanced-features + spring-ai-advanced-features + war + + + com.baeldung + spring-ai-modules + 0.0.1 + ../pom.xml + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + false + + + + Central Portal Snapshots + central-portal-snapshots + https://central.sonatype.com/repository/maven-snapshots/ + + false + + + true + + + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + org.springframework.ai + spring-ai-bom + ${spring-ai.version} + pom + import + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.ai + spring-ai-starter-model-anthropic + 1.0.0 + + + org.springframework.ai + spring-ai-starter-mcp-client + 1.0.0 + + + org.springframework.ai + spring-ai-starter-mcp-server-webmvc + 1.0.0 + + + org.springframework.ai + spring-ai-openai-spring-boot-starter + + + org.springframework.ai + spring-ai-mistral-ai-spring-boot-starter + + + org.springframework.ai + spring-ai-redis-store-spring-boot-starter + + + org.springframework.ai + spring-ai-transformers-spring-boot-starter + + + org.springframework.ai + spring-ai-ollama-spring-boot-starter + + + org.springframework.ai + spring-ai-pgvector-store-spring-boot-starter + + + org.springframework.boot + spring-boot-docker-compose + + + org.springframework.ai + spring-ai-bedrock-converse-spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + com.mysql + mysql-connector-j + + + org.flywaydb + flyway-mysql + + + + org.springframework.boot + spring-boot-testcontainers + test + + + org.testcontainers + mysql + test + + + org.testcontainers + ollama + test + + + org.springframework.ai + spring-ai-pdf-document-reader + + + org.springframework.ai + spring-ai-markdown-document-reader + + + org.springframework.ai + spring-ai-client-chat + 1.0.0 + test + + + + + + mcp-server + + true + + + com.baeldung.springai.mcp.server.ServerApplication + + + + mcp-client + + com.baeldung.springai.mcp.client.ClientApplication + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + + 21 + + + + + + + 1.0.0-M6 + 3.4.1 + 5.9.0 + true + + + \ No newline at end of file diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/advisors/CustomLoggingAdvisor.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/advisors/CustomLoggingAdvisor.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/advisors/CustomLoggingAdvisor.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/advisors/CustomLoggingAdvisor.java diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/evaluator/Application.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/evaluator/Application.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/evaluator/Application.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/evaluator/Application.java diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/evaluator/LLMConfiguration.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/evaluator/LLMConfiguration.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/evaluator/LLMConfiguration.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/evaluator/LLMConfiguration.java diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/evaluator/VectorStoreInitializer.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/evaluator/VectorStoreInitializer.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/evaluator/VectorStoreInitializer.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/evaluator/VectorStoreInitializer.java index 3910914e3e72..42216d3ed7a3 100644 --- a/spring-ai-2/src/main/java/com/baeldung/springai/evaluator/VectorStoreInitializer.java +++ b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/evaluator/VectorStoreInitializer.java @@ -1,5 +1,10 @@ package com.baeldung.springai.evaluator; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + import org.springframework.ai.document.Document; import org.springframework.ai.reader.markdown.MarkdownDocumentReader; import org.springframework.ai.reader.markdown.config.MarkdownDocumentReaderConfig; @@ -11,11 +16,6 @@ import org.springframework.core.io.support.ResourcePatternResolver; import org.springframework.stereotype.Component; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - @Component class VectorStoreInitializer implements ApplicationRunner { diff --git a/spring-ai-modules/spring-ai-mcp/src/main/java/com/baeldung/springai/mcp/client/ChatbotConfiguration.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mcp/client/ChatbotConfiguration.java similarity index 88% rename from spring-ai-modules/spring-ai-mcp/src/main/java/com/baeldung/springai/mcp/client/ChatbotConfiguration.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mcp/client/ChatbotConfiguration.java index f1b979a31bb8..3d6a504ab0d6 100644 --- a/spring-ai-modules/spring-ai-mcp/src/main/java/com/baeldung/springai/mcp/client/ChatbotConfiguration.java +++ b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mcp/client/ChatbotConfiguration.java @@ -13,7 +13,7 @@ class ChatbotConfiguration { ChatClient chatClient(ChatModel chatModel, SyncMcpToolCallbackProvider toolCallbackProvider) { return ChatClient .builder(chatModel) - .defaultToolCallbacks(toolCallbackProvider.getToolCallbacks()) + .defaultTools(toolCallbackProvider.getToolCallbacks()) .build(); } diff --git a/spring-ai-modules/spring-ai-mcp/src/main/java/com/baeldung/springai/mcp/client/ChatbotController.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mcp/client/ChatbotController.java similarity index 100% rename from spring-ai-modules/spring-ai-mcp/src/main/java/com/baeldung/springai/mcp/client/ChatbotController.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mcp/client/ChatbotController.java diff --git a/spring-ai-modules/spring-ai-mcp/src/main/java/com/baeldung/springai/mcp/client/ChatbotService.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mcp/client/ChatbotService.java similarity index 100% rename from spring-ai-modules/spring-ai-mcp/src/main/java/com/baeldung/springai/mcp/client/ChatbotService.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mcp/client/ChatbotService.java diff --git a/spring-ai-modules/spring-ai-mcp/src/main/java/com/baeldung/springai/mcp/client/ClientApplication.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mcp/client/ClientApplication.java similarity index 100% rename from spring-ai-modules/spring-ai-mcp/src/main/java/com/baeldung/springai/mcp/client/ClientApplication.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mcp/client/ClientApplication.java diff --git a/spring-ai-modules/spring-ai-mcp/src/main/java/com/baeldung/springai/mcp/server/AuthorRepository.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mcp/server/AuthorRepository.java similarity index 100% rename from spring-ai-modules/spring-ai-mcp/src/main/java/com/baeldung/springai/mcp/server/AuthorRepository.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mcp/server/AuthorRepository.java diff --git a/spring-ai-modules/spring-ai-mcp/src/main/java/com/baeldung/springai/mcp/server/MCPServerConfiguration.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mcp/server/MCPServerConfiguration.java similarity index 100% rename from spring-ai-modules/spring-ai-mcp/src/main/java/com/baeldung/springai/mcp/server/MCPServerConfiguration.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mcp/server/MCPServerConfiguration.java diff --git a/spring-ai-modules/spring-ai-mcp/src/main/java/com/baeldung/springai/mcp/server/ServerApplication.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mcp/server/ServerApplication.java similarity index 100% rename from spring-ai-modules/spring-ai-mcp/src/main/java/com/baeldung/springai/mcp/server/ServerApplication.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mcp/server/ServerApplication.java diff --git a/spring-ai-3/src/main/java/com/baeldung/spring/ai/mistral/functioncalling/SpringAIApplication.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mistral/functioncalling/SpringAIApplication.java similarity index 83% rename from spring-ai-3/src/main/java/com/baeldung/spring/ai/mistral/functioncalling/SpringAIApplication.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mistral/functioncalling/SpringAIApplication.java index dd88db5875cb..35e2615b6363 100644 --- a/spring-ai-3/src/main/java/com/baeldung/spring/ai/mistral/functioncalling/SpringAIApplication.java +++ b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mistral/functioncalling/SpringAIApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.ai.mistral.functioncalling; +package com.baeldung.springai.mistral.functioncalling; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/dto/HealthStatus.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mistral/functioncalling/dto/HealthStatus.java similarity index 62% rename from spring-ai-3/src/main/java/com/baeldung/springai/dto/HealthStatus.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mistral/functioncalling/dto/HealthStatus.java index d21991cadfde..f29389885f16 100644 --- a/spring-ai-3/src/main/java/com/baeldung/springai/dto/HealthStatus.java +++ b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mistral/functioncalling/dto/HealthStatus.java @@ -1,4 +1,4 @@ -package com.baeldung.springai.dto; +package com.baeldung.springai.mistral.functioncalling.dto; import java.time.LocalDate; diff --git a/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mistral/functioncalling/dto/Patient.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mistral/functioncalling/dto/Patient.java new file mode 100644 index 000000000000..05c71e29be8e --- /dev/null +++ b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/mistral/functioncalling/dto/Patient.java @@ -0,0 +1,4 @@ +package com.baeldung.springai.mistral.functioncalling.dto; + +public record Patient(String patientId) { +} diff --git a/spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/ApiExceptionHandler.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/ApiExceptionHandler.java similarity index 94% rename from spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/ApiExceptionHandler.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/ApiExceptionHandler.java index f593365955d9..906e7bf549e3 100644 --- a/spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/ApiExceptionHandler.java +++ b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/ApiExceptionHandler.java @@ -1,4 +1,4 @@ -package com.baeldung.texttosql; +package com.baeldung.springai.texttosql; import org.springframework.http.ProblemDetail; import org.springframework.web.bind.annotation.ExceptionHandler; diff --git a/spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/Application.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/Application.java similarity index 87% rename from spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/Application.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/Application.java index 49da408663a2..2ac6d023710a 100644 --- a/spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/Application.java +++ b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/Application.java @@ -1,4 +1,4 @@ -package com.baeldung.texttosql; +package com.baeldung.springai.texttosql; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/ChatbotConfiguration.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/ChatbotConfiguration.java similarity index 96% rename from spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/ChatbotConfiguration.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/ChatbotConfiguration.java index 02ec5e899b43..1091f40a345d 100644 --- a/spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/ChatbotConfiguration.java +++ b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/ChatbotConfiguration.java @@ -1,4 +1,4 @@ -package com.baeldung.texttosql; +package com.baeldung.springai.texttosql; import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.model.ChatModel; diff --git a/spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/EmptyResultException.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/EmptyResultException.java similarity index 86% rename from spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/EmptyResultException.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/EmptyResultException.java index 53d5660fb16c..4a7b358362db 100644 --- a/spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/EmptyResultException.java +++ b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/EmptyResultException.java @@ -1,4 +1,4 @@ -package com.baeldung.texttosql; +package com.baeldung.springai.texttosql; import org.springframework.http.HttpStatus; import org.springframework.web.server.ResponseStatusException; diff --git a/spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/InvalidQueryException.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/InvalidQueryException.java similarity index 86% rename from spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/InvalidQueryException.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/InvalidQueryException.java index e72f044a6426..ab1908b48f16 100644 --- a/spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/InvalidQueryException.java +++ b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/InvalidQueryException.java @@ -1,4 +1,4 @@ -package com.baeldung.texttosql; +package com.baeldung.springai.texttosql; import org.springframework.http.HttpStatus; import org.springframework.web.server.ResponseStatusException; diff --git a/spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/QueryController.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/QueryController.java similarity index 95% rename from spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/QueryController.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/QueryController.java index b3ceb7880a45..cd72d820636a 100644 --- a/spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/QueryController.java +++ b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/QueryController.java @@ -1,4 +1,4 @@ -package com.baeldung.texttosql; +package com.baeldung.springai.texttosql; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; diff --git a/spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/SqlExecutor.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/SqlExecutor.java similarity index 93% rename from spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/SqlExecutor.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/SqlExecutor.java index d0d7361e64fd..83ffd63d8d0d 100644 --- a/spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/SqlExecutor.java +++ b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/SqlExecutor.java @@ -1,4 +1,4 @@ -package com.baeldung.texttosql; +package com.baeldung.springai.texttosql; import jakarta.persistence.EntityManager; import org.springframework.stereotype.Service; diff --git a/spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/SqlGenerator.java b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/SqlGenerator.java similarity index 93% rename from spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/SqlGenerator.java rename to spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/SqlGenerator.java index b4542c19e61d..ee40c5d3ee63 100644 --- a/spring-ai-modules/spring-ai-text-to-sql/src/main/java/com/baeldung/texttosql/SqlGenerator.java +++ b/spring-ai-modules/spring-ai-advanced-features/src/main/java/com/baeldung/springai/texttosql/SqlGenerator.java @@ -1,4 +1,4 @@ -package com.baeldung.texttosql; +package com.baeldung.springai.texttosql; import org.springframework.ai.chat.client.ChatClient; import org.springframework.stereotype.Service; diff --git a/spring-ai-2/src/main/resources/application-evaluator.properties b/spring-ai-modules/spring-ai-advanced-features/src/main/resources/application-evaluator.properties similarity index 100% rename from spring-ai-2/src/main/resources/application-evaluator.properties rename to spring-ai-modules/spring-ai-advanced-features/src/main/resources/application-evaluator.properties diff --git a/spring-ai-modules/spring-ai-mcp/src/main/resources/application-mcp-client.properties b/spring-ai-modules/spring-ai-advanced-features/src/main/resources/application-mcp-client.properties similarity index 100% rename from spring-ai-modules/spring-ai-mcp/src/main/resources/application-mcp-client.properties rename to spring-ai-modules/spring-ai-advanced-features/src/main/resources/application-mcp-client.properties diff --git a/spring-ai-2/src/main/resources/application-mcp-server.properties b/spring-ai-modules/spring-ai-advanced-features/src/main/resources/application-mcp-server.properties similarity index 100% rename from spring-ai-2/src/main/resources/application-mcp-server.properties rename to spring-ai-modules/spring-ai-advanced-features/src/main/resources/application-mcp-server.properties diff --git a/spring-ai-modules/spring-ai-text-to-sql/src/main/resources/application.yaml b/spring-ai-modules/spring-ai-advanced-features/src/main/resources/application.yml similarity index 52% rename from spring-ai-modules/spring-ai-text-to-sql/src/main/resources/application.yaml rename to spring-ai-modules/spring-ai-advanced-features/src/main/resources/application.yml index 9b0cc27265bd..56a579bd70fd 100644 --- a/spring-ai-modules/spring-ai-text-to-sql/src/main/resources/application.yaml +++ b/spring-ai-modules/spring-ai-advanced-features/src/main/resources/application.yml @@ -1,13 +1,12 @@ spring: ai: + mistralai: + api-key: ${MISTRAL_AI_API_KEY} + chat: + options: + model: mistral-small-latest anthropic: api-key: ${ANTHROPIC_API_KEY} chat: options: model: claude-opus-4-20250514 - -logging: - level: - org: - hibernate: - SQL: DEBUG \ No newline at end of file diff --git a/spring-ai-modules/spring-ai-text-to-sql/src/main/resources/db/migration/V01__creating_database_tables.sql b/spring-ai-modules/spring-ai-advanced-features/src/main/resources/db/migration/V01__creating_database_tables.sql similarity index 100% rename from spring-ai-modules/spring-ai-text-to-sql/src/main/resources/db/migration/V01__creating_database_tables.sql rename to spring-ai-modules/spring-ai-advanced-features/src/main/resources/db/migration/V01__creating_database_tables.sql diff --git a/spring-ai-modules/spring-ai-text-to-sql/src/main/resources/db/migration/V02__adding_hogwarts_houses_data.sql b/spring-ai-modules/spring-ai-advanced-features/src/main/resources/db/migration/V02__adding_hogwarts_houses_data.sql similarity index 100% rename from spring-ai-modules/spring-ai-text-to-sql/src/main/resources/db/migration/V02__adding_hogwarts_houses_data.sql rename to spring-ai-modules/spring-ai-advanced-features/src/main/resources/db/migration/V02__adding_hogwarts_houses_data.sql diff --git a/spring-ai-modules/spring-ai-text-to-sql/src/main/resources/db/migration/V03__adding_wizards_data.sql b/spring-ai-modules/spring-ai-advanced-features/src/main/resources/db/migration/V03__adding_wizards_data.sql similarity index 100% rename from spring-ai-modules/spring-ai-text-to-sql/src/main/resources/db/migration/V03__adding_wizards_data.sql rename to spring-ai-modules/spring-ai-advanced-features/src/main/resources/db/migration/V03__adding_wizards_data.sql diff --git a/spring-ai-2/src/main/resources/documents/leave-policy.md b/spring-ai-modules/spring-ai-advanced-features/src/main/resources/documents/leave-policy.md similarity index 100% rename from spring-ai-2/src/main/resources/documents/leave-policy.md rename to spring-ai-modules/spring-ai-advanced-features/src/main/resources/documents/leave-policy.md diff --git a/spring-ai-3/src/main/resources/logback-spring.xml b/spring-ai-modules/spring-ai-advanced-features/src/main/resources/logback-spring.xml similarity index 100% rename from spring-ai-3/src/main/resources/logback-spring.xml rename to spring-ai-modules/spring-ai-advanced-features/src/main/resources/logback-spring.xml diff --git a/spring-ai-modules/spring-ai-text-to-sql/src/main/resources/system-prompt.st b/spring-ai-modules/spring-ai-advanced-features/src/main/resources/system-prompt.st similarity index 100% rename from spring-ai-modules/spring-ai-text-to-sql/src/main/resources/system-prompt.st rename to spring-ai-modules/spring-ai-advanced-features/src/main/resources/system-prompt.st diff --git a/spring-ai-3/src/test/java/com/baeldung/springai/advisors/CustomSimpleVectorStore.java b/spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/advisors/CustomSimpleVectorStore.java similarity index 100% rename from spring-ai-3/src/test/java/com/baeldung/springai/advisors/CustomSimpleVectorStore.java rename to spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/advisors/CustomSimpleVectorStore.java diff --git a/spring-ai-3/src/test/java/com/baeldung/springai/advisors/SimpleVectorStoreConfiguration.java b/spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/advisors/SimpleVectorStoreConfiguration.java similarity index 100% rename from spring-ai-3/src/test/java/com/baeldung/springai/advisors/SimpleVectorStoreConfiguration.java rename to spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/advisors/SimpleVectorStoreConfiguration.java diff --git a/spring-ai-3/src/test/java/com/baeldung/springai/advisors/SpringAILiveTest.java b/spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/advisors/SpringAILiveTest.java similarity index 100% rename from spring-ai-3/src/test/java/com/baeldung/springai/advisors/SpringAILiveTest.java rename to spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/advisors/SpringAILiveTest.java diff --git a/spring-ai-2/src/test/java/com/baeldung/springai/evaluator/LLMResponseEvaluatorLiveTest.java b/spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/evaluator/LLMResponseEvaluatorLiveTest.java similarity index 100% rename from spring-ai-2/src/test/java/com/baeldung/springai/evaluator/LLMResponseEvaluatorLiveTest.java rename to spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/evaluator/LLMResponseEvaluatorLiveTest.java index 5a432246897a..eb22b8bc73f3 100644 --- a/spring-ai-2/src/test/java/com/baeldung/springai/evaluator/LLMResponseEvaluatorLiveTest.java +++ b/spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/evaluator/LLMResponseEvaluatorLiveTest.java @@ -1,5 +1,9 @@ package com.baeldung.springai.evaluator; +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +import java.util.List; + import org.junit.jupiter.api.Test; import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.client.advisor.QuestionAnswerAdvisor; @@ -13,10 +17,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Import; -import java.util.List; - -import static org.assertj.core.api.AssertionsForClassTypes.assertThat; - @SpringBootTest @Import(TestcontainersConfiguration.class) class LLMResponseEvaluatorLiveTest { diff --git a/spring-ai-2/src/test/java/com/baeldung/springai/evaluator/TestcontainersConfiguration.java b/spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/evaluator/TestcontainersConfiguration.java similarity index 100% rename from spring-ai-2/src/test/java/com/baeldung/springai/evaluator/TestcontainersConfiguration.java rename to spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/evaluator/TestcontainersConfiguration.java diff --git a/spring-ai-modules/spring-ai-mcp/src/test/java/com/baeldung/springai/mcp/client/ChatbotServiceLiveTest.java b/spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/mcp/client/ChatbotServiceLiveTest.java similarity index 100% rename from spring-ai-modules/spring-ai-mcp/src/test/java/com/baeldung/springai/mcp/client/ChatbotServiceLiveTest.java rename to spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/mcp/client/ChatbotServiceLiveTest.java diff --git a/spring-ai-3/src/test/java/com/baeldung/spring/ai/mistral/functioncalling/MistralAIFunctionCallingManualTest.java b/spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/mistral/functioncalling/MistralAIFunctionCallingManualTest.java similarity index 98% rename from spring-ai-3/src/test/java/com/baeldung/spring/ai/mistral/functioncalling/MistralAIFunctionCallingManualTest.java rename to spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/mistral/functioncalling/MistralAIFunctionCallingManualTest.java index 116565e3b105..1183bbbbbbe7 100644 --- a/spring-ai-3/src/test/java/com/baeldung/spring/ai/mistral/functioncalling/MistralAIFunctionCallingManualTest.java +++ b/spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/mistral/functioncalling/MistralAIFunctionCallingManualTest.java @@ -1,4 +1,11 @@ -package com.baeldung.spring.ai.mistral.functioncalling; +package com.baeldung.springai.mistral.functioncalling; + +import java.io.IOException; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.util.Set; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; @@ -14,13 +21,6 @@ import org.springframework.context.annotation.Import; import org.springframework.test.context.junit.jupiter.SpringExtension; -import java.io.IOException; -import java.net.URI; -import java.net.http.HttpClient; -import java.net.http.HttpRequest; -import java.net.http.HttpResponse; -import java.util.Set; - @Import(MistralAIFunctionConfiguration.class) @ExtendWith(SpringExtension.class) @SpringBootTest diff --git a/spring-ai-3/src/test/java/com/baeldung/spring/ai/mistral/functioncalling/MistralAIFunctionConfiguration.java b/spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/mistral/functioncalling/MistralAIFunctionConfiguration.java similarity index 87% rename from spring-ai-3/src/test/java/com/baeldung/spring/ai/mistral/functioncalling/MistralAIFunctionConfiguration.java rename to spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/mistral/functioncalling/MistralAIFunctionConfiguration.java index 8dee5bc53f5c..917aa4041673 100644 --- a/spring-ai-3/src/test/java/com/baeldung/spring/ai/mistral/functioncalling/MistralAIFunctionConfiguration.java +++ b/spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/mistral/functioncalling/MistralAIFunctionConfiguration.java @@ -1,14 +1,15 @@ -package com.baeldung.spring.ai.mistral.functioncalling; +package com.baeldung.springai.mistral.functioncalling; + +import java.time.LocalDate; +import java.util.Map; +import java.util.function.Function; -import com.baeldung.springai.dto.HealthStatus; -import com.baeldung.springai.dto.Patient; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Description; -import java.time.LocalDate; -import java.util.Map; -import java.util.function.Function; +import com.baeldung.springai.mistral.functioncalling.dto.HealthStatus; +import com.baeldung.springai.mistral.functioncalling.dto.Patient; @Configuration public class MistralAIFunctionConfiguration { diff --git a/spring-ai-modules/spring-ai-text-to-sql/src/test/java/com/baeldung/texttosql/TestcontainersConfiguration.java b/spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/texttosql/TestcontainersConfiguration.java similarity index 94% rename from spring-ai-modules/spring-ai-text-to-sql/src/test/java/com/baeldung/texttosql/TestcontainersConfiguration.java rename to spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/texttosql/TestcontainersConfiguration.java index ecb03e63f7b9..56ceff207fd6 100644 --- a/spring-ai-modules/spring-ai-text-to-sql/src/test/java/com/baeldung/texttosql/TestcontainersConfiguration.java +++ b/spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/texttosql/TestcontainersConfiguration.java @@ -1,4 +1,4 @@ -package com.baeldung.texttosql; +package com.baeldung.springai.texttosql; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; diff --git a/spring-ai-modules/spring-ai-text-to-sql/src/test/java/com/baeldung/texttosql/TextToSQLLiveTest.java b/spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/texttosql/TextToSQLLiveTest.java similarity index 99% rename from spring-ai-modules/spring-ai-text-to-sql/src/test/java/com/baeldung/texttosql/TextToSQLLiveTest.java rename to spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/texttosql/TextToSQLLiveTest.java index 1431e0b5d730..eef61f0112de 100644 --- a/spring-ai-modules/spring-ai-text-to-sql/src/test/java/com/baeldung/texttosql/TextToSQLLiveTest.java +++ b/spring-ai-modules/spring-ai-advanced-features/src/test/java/com/baeldung/springai/texttosql/TextToSQLLiveTest.java @@ -1,4 +1,4 @@ -package com.baeldung.texttosql; +package com.baeldung.springai.texttosql; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; diff --git a/spring-ai-modules/spring-ai-chat-models/pom.xml b/spring-ai-modules/spring-ai-chat-models/pom.xml new file mode 100644 index 000000000000..85fad851a097 --- /dev/null +++ b/spring-ai-modules/spring-ai-chat-models/pom.xml @@ -0,0 +1,131 @@ + + + 4.0.0 + spring-ai-chat-models + spring-ai-chat-models + war + + + com.baeldung + spring-ai-modules + 0.0.1 + ../pom.xml + + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + + + org.springframework.ai + spring-ai-bom + ${spring-ai.version} + pom + import + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.ai + spring-ai-anthropic-spring-boot-starter + + + org.springframework.ai + spring-ai-bedrock-converse-spring-boot-starter + + + org.springframework.ai + spring-ai-ollama-spring-boot-starter + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.ai + spring-ai-openai-spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.ai + spring-ai-spring-boot-testcontainers + test + + + org.testcontainers + ollama + test + + + + + + anthropic + + com.baeldung.springai.anthropic.Application + + + + hugging-face + + com.baeldung.springai.huggingface.Application + + + + amazon-nova + + com.baeldung.springai.nova.Application + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + ${spring.boot.mainclass} + + + + org.apache.maven.plugins + maven-compiler-plugin + + 21 + + + + + + + 3.4.1 + 1.0.0-M6 + 5.9.0 + 3.1.1 + true + + + \ No newline at end of file diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/anthropic/Application.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/anthropic/Application.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/anthropic/Application.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/anthropic/Application.java diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/anthropic/ChatRequest.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/anthropic/ChatRequest.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/anthropic/ChatRequest.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/anthropic/ChatRequest.java index bbacb0b1f00b..1fd34d69d7fe 100644 --- a/spring-ai-2/src/main/java/com/baeldung/springai/anthropic/ChatRequest.java +++ b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/anthropic/ChatRequest.java @@ -1,8 +1,8 @@ package com.baeldung.springai.anthropic; -import org.springframework.lang.Nullable; - import java.util.UUID; +import org.springframework.lang.Nullable; + public record ChatRequest(@Nullable UUID chatId, String question) { } \ No newline at end of file diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/anthropic/ChatResponse.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/anthropic/ChatResponse.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/anthropic/ChatResponse.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/anthropic/ChatResponse.java diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/anthropic/ChatbotConfiguration.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/anthropic/ChatbotConfiguration.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/anthropic/ChatbotConfiguration.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/anthropic/ChatbotConfiguration.java diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/anthropic/ChatbotController.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/anthropic/ChatbotController.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/anthropic/ChatbotController.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/anthropic/ChatbotController.java index d283c5da7726..3a7cbef1202f 100644 --- a/spring-ai-2/src/main/java/com/baeldung/springai/anthropic/ChatbotController.java +++ b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/anthropic/ChatbotController.java @@ -1,5 +1,7 @@ package com.baeldung.springai.anthropic; +import java.util.UUID; + import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; @@ -8,8 +10,6 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import java.util.UUID; - @RestController public class ChatbotController { diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/anthropic/ChatbotService.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/anthropic/ChatbotService.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/anthropic/ChatbotService.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/anthropic/ChatbotService.java index d3554c91fe0e..1e95bde9d14f 100644 --- a/spring-ai-2/src/main/java/com/baeldung/springai/anthropic/ChatbotService.java +++ b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/anthropic/ChatbotService.java @@ -1,15 +1,15 @@ package com.baeldung.springai.anthropic; +import java.util.Optional; +import java.util.UUID; +import java.util.stream.Stream; + import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.model.Media; import org.springframework.stereotype.Service; import org.springframework.util.MimeType; import org.springframework.web.multipart.MultipartFile; -import java.util.Optional; -import java.util.UUID; -import java.util.stream.Stream; - @Service public class ChatbotService { diff --git a/spring-ai/src/main/java/com/baeldung/springai/deepseek/Application.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/deepseek/Application.java similarity index 100% rename from spring-ai/src/main/java/com/baeldung/springai/deepseek/Application.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/deepseek/Application.java diff --git a/spring-ai/src/main/java/com/baeldung/springai/deepseek/ChatRequest.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/deepseek/ChatRequest.java similarity index 100% rename from spring-ai/src/main/java/com/baeldung/springai/deepseek/ChatRequest.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/deepseek/ChatRequest.java index ebb7d32fe618..cf1b9757ff48 100644 --- a/spring-ai/src/main/java/com/baeldung/springai/deepseek/ChatRequest.java +++ b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/deepseek/ChatRequest.java @@ -1,8 +1,8 @@ package com.baeldung.springai.deepseek; -import org.springframework.lang.Nullable; - import java.util.UUID; +import org.springframework.lang.Nullable; + record ChatRequest(@Nullable UUID chatId, String question) { } \ No newline at end of file diff --git a/spring-ai/src/main/java/com/baeldung/springai/deepseek/ChatResponse.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/deepseek/ChatResponse.java similarity index 100% rename from spring-ai/src/main/java/com/baeldung/springai/deepseek/ChatResponse.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/deepseek/ChatResponse.java diff --git a/spring-ai/src/main/java/com/baeldung/springai/deepseek/ChatbotConfiguration.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/deepseek/ChatbotConfiguration.java similarity index 100% rename from spring-ai/src/main/java/com/baeldung/springai/deepseek/ChatbotConfiguration.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/deepseek/ChatbotConfiguration.java diff --git a/spring-ai/src/main/java/com/baeldung/springai/deepseek/ChatbotController.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/deepseek/ChatbotController.java similarity index 100% rename from spring-ai/src/main/java/com/baeldung/springai/deepseek/ChatbotController.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/deepseek/ChatbotController.java diff --git a/spring-ai/src/main/java/com/baeldung/springai/deepseek/ChatbotService.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/deepseek/ChatbotService.java similarity index 100% rename from spring-ai/src/main/java/com/baeldung/springai/deepseek/ChatbotService.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/deepseek/ChatbotService.java index fe4f2018a303..3fd37484ffe0 100644 --- a/spring-ai/src/main/java/com/baeldung/springai/deepseek/ChatbotService.java +++ b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/deepseek/ChatbotService.java @@ -1,11 +1,11 @@ package com.baeldung.springai.deepseek; -import org.springframework.ai.chat.client.ChatClient; -import org.springframework.stereotype.Service; - import java.util.Optional; import java.util.UUID; +import org.springframework.ai.chat.client.ChatClient; +import org.springframework.stereotype.Service; + @Service class ChatbotService { diff --git a/spring-ai/src/main/java/com/baeldung/springai/deepseek/DeepSeekModelOutputConverter.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/deepseek/DeepSeekModelOutputConverter.java similarity index 100% rename from spring-ai/src/main/java/com/baeldung/springai/deepseek/DeepSeekModelOutputConverter.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/deepseek/DeepSeekModelOutputConverter.java diff --git a/spring-ai/src/main/java/com/baeldung/springai/deepseek/DeepSeekModelResponse.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/deepseek/DeepSeekModelResponse.java similarity index 100% rename from spring-ai/src/main/java/com/baeldung/springai/deepseek/DeepSeekModelResponse.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/deepseek/DeepSeekModelResponse.java diff --git a/spring-ai-2/src/main/java/com/baeldung/groq/ChatAppConfiguration.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/groq/ChatAppConfiguration.java similarity index 96% rename from spring-ai-2/src/main/java/com/baeldung/groq/ChatAppConfiguration.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/groq/ChatAppConfiguration.java index 6575f0d96ba2..f57de950b98d 100644 --- a/spring-ai-2/src/main/java/com/baeldung/groq/ChatAppConfiguration.java +++ b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/groq/ChatAppConfiguration.java @@ -1,4 +1,4 @@ -package com.baeldung.groq; +package com.baeldung.springai.groq; import org.springframework.ai.openai.OpenAiChatModel; import org.springframework.ai.openai.api.OpenAiApi; diff --git a/spring-ai-2/src/main/java/com/baeldung/groq/CustomGroqChatService.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/groq/CustomGroqChatService.java similarity index 95% rename from spring-ai-2/src/main/java/com/baeldung/groq/CustomGroqChatService.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/groq/CustomGroqChatService.java index 5177c77fa58c..87c15f5fdb6b 100644 --- a/spring-ai-2/src/main/java/com/baeldung/groq/CustomGroqChatService.java +++ b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/groq/CustomGroqChatService.java @@ -1,4 +1,4 @@ -package com.baeldung.groq; +package com.baeldung.springai.groq; import org.springframework.ai.chat.prompt.ChatOptions; import org.springframework.ai.chat.prompt.Prompt; diff --git a/spring-ai-2/src/main/java/com/baeldung/groq/GroqChatApplication.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/groq/GroqChatApplication.java similarity index 96% rename from spring-ai-2/src/main/java/com/baeldung/groq/GroqChatApplication.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/groq/GroqChatApplication.java index 5248ea6d6e5e..dd3578cd29f9 100644 --- a/spring-ai-2/src/main/java/com/baeldung/groq/GroqChatApplication.java +++ b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/groq/GroqChatApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.groq; +package com.baeldung.springai.groq; import org.springframework.ai.autoconfigure.anthropic.AnthropicAutoConfiguration; import org.springframework.ai.autoconfigure.bedrock.converse.BedrockConverseProxyChatAutoConfiguration; diff --git a/spring-ai-2/src/main/java/com/baeldung/groq/GroqChatService.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/groq/GroqChatService.java similarity index 93% rename from spring-ai-2/src/main/java/com/baeldung/groq/GroqChatService.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/groq/GroqChatService.java index a75f36c39123..7d7139a8417f 100644 --- a/spring-ai-2/src/main/java/com/baeldung/groq/GroqChatService.java +++ b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/groq/GroqChatService.java @@ -1,4 +1,4 @@ -package com.baeldung.groq; +package com.baeldung.springai.groq; import org.springframework.ai.chat.prompt.ChatOptions; import org.springframework.ai.openai.OpenAiChatModel; diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/huggingface/Application.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/Application.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/huggingface/Application.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/Application.java diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/huggingface/chat/ChatRequest.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/chat/ChatRequest.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/huggingface/chat/ChatRequest.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/chat/ChatRequest.java index 5b0f7d589006..6859c24a4385 100644 --- a/spring-ai-2/src/main/java/com/baeldung/springai/huggingface/chat/ChatRequest.java +++ b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/chat/ChatRequest.java @@ -1,8 +1,8 @@ package com.baeldung.springai.huggingface.chat; -import org.springframework.lang.Nullable; - import java.util.UUID; +import org.springframework.lang.Nullable; + public record ChatRequest(@Nullable UUID chatId, String question) { } \ No newline at end of file diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/huggingface/chat/ChatResponse.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/chat/ChatResponse.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/huggingface/chat/ChatResponse.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/chat/ChatResponse.java diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/huggingface/chat/ChatbotConfiguration.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/chat/ChatbotConfiguration.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/huggingface/chat/ChatbotConfiguration.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/chat/ChatbotConfiguration.java diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/huggingface/chat/ChatbotController.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/chat/ChatbotController.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/huggingface/chat/ChatbotController.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/chat/ChatbotController.java diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/huggingface/chat/ChatbotService.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/chat/ChatbotService.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/huggingface/chat/ChatbotService.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/chat/ChatbotService.java index 8c9e087a8415..039e5f76117e 100644 --- a/spring-ai-2/src/main/java/com/baeldung/springai/huggingface/chat/ChatbotService.java +++ b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/chat/ChatbotService.java @@ -1,11 +1,11 @@ package com.baeldung.springai.huggingface.chat; -import org.springframework.ai.chat.client.ChatClient; -import org.springframework.stereotype.Service; - import java.util.Optional; import java.util.UUID; +import org.springframework.ai.chat.client.ChatClient; +import org.springframework.stereotype.Service; + @Service public class ChatbotService { diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/huggingface/embedding/Quote.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/embedding/Quote.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/huggingface/embedding/Quote.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/embedding/Quote.java diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/huggingface/embedding/QuoteFetcher.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/embedding/QuoteFetcher.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/huggingface/embedding/QuoteFetcher.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/embedding/QuoteFetcher.java index 758a216a9c7d..b9e94643b60b 100644 --- a/spring-ai-2/src/main/java/com/baeldung/springai/huggingface/embedding/QuoteFetcher.java +++ b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/embedding/QuoteFetcher.java @@ -1,10 +1,10 @@ package com.baeldung.springai.huggingface.embedding; +import java.util.List; + import org.springframework.core.ParameterizedTypeReference; import org.springframework.web.client.RestClient; -import java.util.List; - public class QuoteFetcher { private static final String BASE_URL = "https://quoteslate.vercel.app"; diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/huggingface/embedding/VectorStoreConfiguration.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/embedding/VectorStoreConfiguration.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/huggingface/embedding/VectorStoreConfiguration.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/embedding/VectorStoreConfiguration.java diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/huggingface/embedding/VectorStoreInitializer.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/embedding/VectorStoreInitializer.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/huggingface/embedding/VectorStoreInitializer.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/embedding/VectorStoreInitializer.java index 6f034aea33c9..2953889029fd 100644 --- a/spring-ai-2/src/main/java/com/baeldung/springai/huggingface/embedding/VectorStoreInitializer.java +++ b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/huggingface/embedding/VectorStoreInitializer.java @@ -1,14 +1,14 @@ package com.baeldung.springai.huggingface.embedding; +import java.util.List; +import java.util.Map; + import org.springframework.ai.document.Document; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; -import java.util.List; -import java.util.Map; - @Component public class VectorStoreInitializer implements ApplicationRunner { diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/nova/Application.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/nova/Application.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/nova/Application.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/nova/Application.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/nova/AuthorFetcher.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/nova/AuthorFetcher.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/nova/AuthorFetcher.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/nova/AuthorFetcher.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/nova/ChatRequest.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/nova/ChatRequest.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/nova/ChatRequest.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/nova/ChatRequest.java index c2e253022894..1fe25fe62ef5 100644 --- a/spring-ai-3/src/main/java/com/baeldung/springai/nova/ChatRequest.java +++ b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/nova/ChatRequest.java @@ -1,8 +1,8 @@ package com.baeldung.springai.nova; -import org.springframework.lang.Nullable; - import java.util.UUID; +import org.springframework.lang.Nullable; + public record ChatRequest(@Nullable UUID chatId, String question) { } \ No newline at end of file diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/nova/ChatResponse.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/nova/ChatResponse.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/nova/ChatResponse.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/nova/ChatResponse.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/nova/ChatbotConfiguration.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/nova/ChatbotConfiguration.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/nova/ChatbotConfiguration.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/nova/ChatbotConfiguration.java index 2267de9e3e67..c2fa84c60c7e 100644 --- a/spring-ai-3/src/main/java/com/baeldung/springai/nova/ChatbotConfiguration.java +++ b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/nova/ChatbotConfiguration.java @@ -1,5 +1,7 @@ package com.baeldung.springai.nova; +import java.util.function.Function; + import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor; import org.springframework.ai.chat.memory.ChatMemory; @@ -11,8 +13,6 @@ import org.springframework.context.annotation.Description; import org.springframework.core.io.Resource; -import java.util.function.Function; - @Configuration public class ChatbotConfiguration { diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/nova/ChatbotController.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/nova/ChatbotController.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/nova/ChatbotController.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/nova/ChatbotController.java index 4ec2af61341a..42b891d503ff 100644 --- a/spring-ai-3/src/main/java/com/baeldung/springai/nova/ChatbotController.java +++ b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/nova/ChatbotController.java @@ -1,5 +1,7 @@ package com.baeldung.springai.nova; +import java.util.UUID; + import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; @@ -8,8 +10,6 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import java.util.UUID; - @RestController public class ChatbotController { diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/nova/ChatbotService.java b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/nova/ChatbotService.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/nova/ChatbotService.java rename to spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/nova/ChatbotService.java index be60ef5942a1..bfaa9948485b 100644 --- a/spring-ai-3/src/main/java/com/baeldung/springai/nova/ChatbotService.java +++ b/spring-ai-modules/spring-ai-chat-models/src/main/java/com/baeldung/springai/nova/ChatbotService.java @@ -1,15 +1,15 @@ package com.baeldung.springai.nova; +import java.util.Optional; +import java.util.UUID; +import java.util.stream.Stream; + import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.model.Media; import org.springframework.stereotype.Service; import org.springframework.util.MimeType; import org.springframework.web.multipart.MultipartFile; -import java.util.Optional; -import java.util.UUID; -import java.util.stream.Stream; - @Service public class ChatbotService { diff --git a/spring-ai-2/src/main/resources/application-anthropic.properties b/spring-ai-modules/spring-ai-chat-models/src/main/resources/application-anthropic.properties similarity index 100% rename from spring-ai-2/src/main/resources/application-anthropic.properties rename to spring-ai-modules/spring-ai-chat-models/src/main/resources/application-anthropic.properties diff --git a/spring-ai-2/src/main/resources/application-customgroq.properties b/spring-ai-modules/spring-ai-chat-models/src/main/resources/application-customgroq.properties similarity index 100% rename from spring-ai-2/src/main/resources/application-customgroq.properties rename to spring-ai-modules/spring-ai-chat-models/src/main/resources/application-customgroq.properties diff --git a/spring-ai/src/main/resources/application-deepseek.properties b/spring-ai-modules/spring-ai-chat-models/src/main/resources/application-deepseek.properties similarity index 100% rename from spring-ai/src/main/resources/application-deepseek.properties rename to spring-ai-modules/spring-ai-chat-models/src/main/resources/application-deepseek.properties diff --git a/spring-ai-2/src/main/resources/application-groq.properties b/spring-ai-modules/spring-ai-chat-models/src/main/resources/application-groq.properties similarity index 100% rename from spring-ai-2/src/main/resources/application-groq.properties rename to spring-ai-modules/spring-ai-chat-models/src/main/resources/application-groq.properties diff --git a/spring-ai-2/src/main/resources/application-huggingface.properties b/spring-ai-modules/spring-ai-chat-models/src/main/resources/application-huggingface.properties similarity index 100% rename from spring-ai-2/src/main/resources/application-huggingface.properties rename to spring-ai-modules/spring-ai-chat-models/src/main/resources/application-huggingface.properties diff --git a/spring-ai-3/src/main/resources/application-nova.properties b/spring-ai-modules/spring-ai-chat-models/src/main/resources/application-nova.properties similarity index 100% rename from spring-ai-3/src/main/resources/application-nova.properties rename to spring-ai-modules/spring-ai-chat-models/src/main/resources/application-nova.properties diff --git a/spring-ai-2/src/main/resources/logback-spring.xml b/spring-ai-modules/spring-ai-chat-models/src/main/resources/logback-spring.xml similarity index 100% rename from spring-ai-2/src/main/resources/logback-spring.xml rename to spring-ai-modules/spring-ai-chat-models/src/main/resources/logback-spring.xml diff --git a/spring-ai-2/src/main/resources/prompts/chatbot-system-prompt.st b/spring-ai-modules/spring-ai-chat-models/src/main/resources/prompts/chatbot-system-prompt.st similarity index 100% rename from spring-ai-2/src/main/resources/prompts/chatbot-system-prompt.st rename to spring-ai-modules/spring-ai-chat-models/src/main/resources/prompts/chatbot-system-prompt.st diff --git a/spring-ai-2/src/main/resources/prompts/grumpgpt-system-prompt.st b/spring-ai-modules/spring-ai-chat-models/src/main/resources/prompts/grumpgpt-system-prompt.st similarity index 100% rename from spring-ai-2/src/main/resources/prompts/grumpgpt-system-prompt.st rename to spring-ai-modules/spring-ai-chat-models/src/main/resources/prompts/grumpgpt-system-prompt.st diff --git a/spring-ai-2/src/test/java/com/baeldung/springai/anthropic/ChatbotServiceLiveTest.java b/spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/anthropic/ChatbotServiceLiveTest.java similarity index 100% rename from spring-ai-2/src/test/java/com/baeldung/springai/anthropic/ChatbotServiceLiveTest.java rename to spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/anthropic/ChatbotServiceLiveTest.java diff --git a/spring-ai/src/test/java/com/baeldung/springai/deepseek/ChatbotServiceLiveTest.java b/spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/deepseek/ChatbotServiceLiveTest.java similarity index 100% rename from spring-ai/src/test/java/com/baeldung/springai/deepseek/ChatbotServiceLiveTest.java rename to spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/deepseek/ChatbotServiceLiveTest.java index 630df006b4f5..a620e3dcb34c 100644 --- a/spring-ai/src/test/java/com/baeldung/springai/deepseek/ChatbotServiceLiveTest.java +++ b/spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/deepseek/ChatbotServiceLiveTest.java @@ -1,11 +1,11 @@ package com.baeldung.springai.deepseek; +import static org.assertj.core.api.Assertions.assertThat; + import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import static org.assertj.core.api.Assertions.assertThat; - @SpringBootTest class ChatbotServiceLiveTest { diff --git a/spring-ai/src/test/java/com/baeldung/springai/deepseek/DeepSeekModelOutputConverterUnitTest.java b/spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/deepseek/DeepSeekModelOutputConverterUnitTest.java similarity index 99% rename from spring-ai/src/test/java/com/baeldung/springai/deepseek/DeepSeekModelOutputConverterUnitTest.java rename to spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/deepseek/DeepSeekModelOutputConverterUnitTest.java index 0aba421926ee..4d3e14236b50 100644 --- a/spring-ai/src/test/java/com/baeldung/springai/deepseek/DeepSeekModelOutputConverterUnitTest.java +++ b/spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/deepseek/DeepSeekModelOutputConverterUnitTest.java @@ -1,12 +1,13 @@ package com.baeldung.springai.deepseek; -import net.bytebuddy.utility.RandomString; +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; + import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; -import static org.assertj.core.api.AssertionsForClassTypes.assertThat; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; +import net.bytebuddy.utility.RandomString; class DeepSeekModelOutputConverterUnitTest { diff --git a/spring-ai-2/src/test/java/com/baeldung/groq/GroqAutoconfiguredChatClientLiveTest.java b/spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/groq/GroqAutoconfiguredChatClientLiveTest.java similarity index 98% rename from spring-ai-2/src/test/java/com/baeldung/groq/GroqAutoconfiguredChatClientLiveTest.java rename to spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/groq/GroqAutoconfiguredChatClientLiveTest.java index 1bbe722921eb..e0dc12d1c355 100644 --- a/spring-ai-2/src/test/java/com/baeldung/groq/GroqAutoconfiguredChatClientLiveTest.java +++ b/spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/groq/GroqAutoconfiguredChatClientLiveTest.java @@ -1,4 +1,4 @@ -package com.baeldung.groq; +package com.baeldung.springai.groq; import static org.assertj.core.api.Assertions.assertThat; diff --git a/spring-ai-2/src/test/java/com/baeldung/groq/GroqCustomChatClientLiveTest.java b/spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/groq/GroqCustomChatClientLiveTest.java similarity index 97% rename from spring-ai-2/src/test/java/com/baeldung/groq/GroqCustomChatClientLiveTest.java rename to spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/groq/GroqCustomChatClientLiveTest.java index 6778ba9e9800..e017ef97ff17 100644 --- a/spring-ai-2/src/test/java/com/baeldung/groq/GroqCustomChatClientLiveTest.java +++ b/spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/groq/GroqCustomChatClientLiveTest.java @@ -1,4 +1,4 @@ -package com.baeldung.groq; +package com.baeldung.springai.groq; import static org.assertj.core.api.Assertions.assertThat; diff --git a/spring-ai-2/src/test/java/com/baeldung/springai/huggingface/TestApplication.java b/spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/huggingface/TestApplication.java similarity index 100% rename from spring-ai-2/src/test/java/com/baeldung/springai/huggingface/TestApplication.java rename to spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/huggingface/TestApplication.java diff --git a/spring-ai-2/src/test/java/com/baeldung/springai/huggingface/TestcontainersConfiguration.java b/spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/huggingface/TestcontainersConfiguration.java similarity index 100% rename from spring-ai-2/src/test/java/com/baeldung/springai/huggingface/TestcontainersConfiguration.java rename to spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/huggingface/TestcontainersConfiguration.java diff --git a/spring-ai-2/src/test/java/com/baeldung/springai/huggingface/chat/ChatbotServiceLiveTest.java b/spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/huggingface/chat/ChatbotServiceLiveTest.java similarity index 99% rename from spring-ai-2/src/test/java/com/baeldung/springai/huggingface/chat/ChatbotServiceLiveTest.java rename to spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/huggingface/chat/ChatbotServiceLiveTest.java index cd263f244cc8..96fca8583cd4 100644 --- a/spring-ai-2/src/test/java/com/baeldung/springai/huggingface/chat/ChatbotServiceLiveTest.java +++ b/spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/huggingface/chat/ChatbotServiceLiveTest.java @@ -1,12 +1,13 @@ package com.baeldung.springai.huggingface.chat; -import com.baeldung.springai.huggingface.TestcontainersConfiguration; +import static org.assertj.core.api.Assertions.assertThat; + import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Import; -import static org.assertj.core.api.Assertions.assertThat; +import com.baeldung.springai.huggingface.TestcontainersConfiguration; @SpringBootTest @Import(TestcontainersConfiguration.class) diff --git a/spring-ai-2/src/test/java/com/baeldung/springai/huggingface/embedding/SemanticSearchLiveTest.java b/spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/huggingface/embedding/SemanticSearchLiveTest.java similarity index 99% rename from spring-ai-2/src/test/java/com/baeldung/springai/huggingface/embedding/SemanticSearchLiveTest.java rename to spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/huggingface/embedding/SemanticSearchLiveTest.java index a0c284022fc5..358b26a8279e 100644 --- a/spring-ai-2/src/test/java/com/baeldung/springai/huggingface/embedding/SemanticSearchLiveTest.java +++ b/spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/huggingface/embedding/SemanticSearchLiveTest.java @@ -1,6 +1,9 @@ package com.baeldung.springai.huggingface.embedding; -import com.baeldung.springai.huggingface.TestcontainersConfiguration; +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.List; + import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import org.springframework.ai.document.Document; @@ -10,9 +13,7 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Import; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; +import com.baeldung.springai.huggingface.TestcontainersConfiguration; @SpringBootTest @Import(TestcontainersConfiguration.class) diff --git a/spring-ai-3/src/test/java/com/baeldung/springai/nova/ChatbotServiceLiveTest.java b/spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/nova/ChatbotServiceLiveTest.java similarity index 100% rename from spring-ai-3/src/test/java/com/baeldung/springai/nova/ChatbotServiceLiveTest.java rename to spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/nova/ChatbotServiceLiveTest.java index 763d1b248dbc..5da4e1393bc0 100644 --- a/spring-ai-3/src/test/java/com/baeldung/springai/nova/ChatbotServiceLiveTest.java +++ b/spring-ai-modules/spring-ai-chat-models/src/test/java/com/baeldung/springai/nova/ChatbotServiceLiveTest.java @@ -1,5 +1,9 @@ package com.baeldung.springai.nova; +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.IOException; + import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -7,10 +11,6 @@ import org.springframework.mock.web.MockMultipartFile; import org.springframework.web.multipart.MultipartFile; -import java.io.IOException; - -import static org.assertj.core.api.Assertions.assertThat; - @SpringBootTest class ChatbotServiceLiveTest { diff --git a/spring-ai-2/src/test/resources/images/batman-deadpool-christmas.jpeg b/spring-ai-modules/spring-ai-chat-models/src/test/resources/images/batman-deadpool-christmas.jpeg similarity index 100% rename from spring-ai-2/src/test/resources/images/batman-deadpool-christmas.jpeg rename to spring-ai-modules/spring-ai-chat-models/src/test/resources/images/batman-deadpool-christmas.jpeg diff --git a/spring-ai-modules/spring-ai-conversational/pom.xml b/spring-ai-modules/spring-ai-conversational/pom.xml new file mode 100644 index 000000000000..b08650ee2eac --- /dev/null +++ b/spring-ai-modules/spring-ai-conversational/pom.xml @@ -0,0 +1,140 @@ + + + 4.0.0 + spring-ai-conversational + spring-ai-conversational + war + + + com.baeldung + spring-ai-modules + 0.0.1 + ../pom.xml + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + false + + + + Central Portal Snapshots + central-portal-snapshots + https://central.sonatype.com/repository/maven-snapshots/ + + false + + + true + + + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + org.springframework.ai + spring-ai-bom + ${spring-ai.version} + pom + import + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.ai + spring-ai-openai-spring-boot-starter + 1.0.0-M6 + + + org.springframework.ai + spring-ai-ollama-spring-boot-starter + 1.0.0-M6 + + + org.springframework.ai + spring-ai-starter-model-openai + 1.0.0 + + + org.springframework.ai + spring-ai-model-chat-memory-repository-jdbc + 1.0.0 + + + org.hsqldb + hsqldb + runtime + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-test + test + + + + + + chat-memory + + true + + + com.baeldung.springai.memory.Application + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + ${spring.boot.mainclass} + + + + org.apache.maven.plugins + maven-compiler-plugin + + 21 + + + + + + + 1.0.0-M6 + 5.9.0 + + + \ No newline at end of file diff --git a/spring-ai-4/src/main/java/com/baeldung/springai/memory/Application.java b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/memory/Application.java similarity index 100% rename from spring-ai-4/src/main/java/com/baeldung/springai/memory/Application.java rename to spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/memory/Application.java diff --git a/spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatConfig.java b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/memory/ChatConfig.java similarity index 100% rename from spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatConfig.java rename to spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/memory/ChatConfig.java diff --git a/spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatController.java b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/memory/ChatController.java similarity index 100% rename from spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatController.java rename to spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/memory/ChatController.java index f860eea77ca0..ea3edcace3da 100644 --- a/spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatController.java +++ b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/memory/ChatController.java @@ -1,12 +1,12 @@ package com.baeldung.springai.memory; +import javax.validation.Valid; + import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; -import javax.validation.Valid; - @RestController public class ChatController { diff --git a/spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatRequest.java b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/memory/ChatRequest.java similarity index 100% rename from spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatRequest.java rename to spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/memory/ChatRequest.java diff --git a/spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatService.java b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/memory/ChatService.java similarity index 82% rename from spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatService.java rename to spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/memory/ChatService.java index 64fc63acca79..ceab952a709e 100644 --- a/spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatService.java +++ b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/memory/ChatService.java @@ -1,14 +1,16 @@ package com.baeldung.springai.memory; +import java.util.UUID; + import org.springframework.ai.chat.client.ChatClient; +import org.springframework.ai.chat.client.advisor.AbstractChatMemoryAdvisor; import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor; +import org.springframework.ai.chat.memory.ChatMemory.*; import org.springframework.ai.chat.memory.ChatMemory; import org.springframework.ai.chat.model.ChatModel; import org.springframework.stereotype.Component; import org.springframework.web.context.annotation.SessionScope; -import java.util.UUID; - @Component @SessionScope public class ChatService { @@ -30,7 +32,7 @@ public String getConversationId() { public String chat(String prompt) { return chatClient.prompt() .user(userMessage -> userMessage.text(prompt)) - .advisors(a -> a.param(ChatMemory.CONVERSATION_ID, conversationId)) + .advisors(a -> a.param(AbstractChatMemoryAdvisor.CHAT_MEMORY_CONVERSATION_ID_KEY, conversationId)) .call() .content(); } diff --git a/spring-ai-2/src/main/java/com/baeldung/ollamachatbot/ChatBotApplication.java b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/ollamachatbot/ChatBotApplication.java similarity index 86% rename from spring-ai-2/src/main/java/com/baeldung/ollamachatbot/ChatBotApplication.java rename to spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/ollamachatbot/ChatBotApplication.java index e715e34bbf4f..39b930846a62 100644 --- a/spring-ai-2/src/main/java/com/baeldung/ollamachatbot/ChatBotApplication.java +++ b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/ollamachatbot/ChatBotApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.ollamachatbot; +package com.baeldung.springai.ollamachatbot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-ai-2/src/main/java/com/baeldung/ollamachatbot/controller/HelpDeskController.java b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/ollamachatbot/controller/HelpDeskController.java similarity index 79% rename from spring-ai-2/src/main/java/com/baeldung/ollamachatbot/controller/HelpDeskController.java rename to spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/ollamachatbot/controller/HelpDeskController.java index 9afbb25d603d..8ae520c5f0dd 100644 --- a/spring-ai-2/src/main/java/com/baeldung/ollamachatbot/controller/HelpDeskController.java +++ b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/ollamachatbot/controller/HelpDeskController.java @@ -1,4 +1,4 @@ -package com.baeldung.ollamachatbot.controller; +package com.baeldung.springai.ollamachatbot.controller; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -7,9 +7,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.baeldung.ollamachatbot.model.HelpDeskResponse; -import com.baeldung.ollamachatbot.service.HelpDeskChatbotAgentService; -import com.baeldung.ollamachatbot.model.HelpDeskRequest; +import com.baeldung.springai.ollamachatbot.model.HelpDeskRequest; +import com.baeldung.springai.ollamachatbot.model.HelpDeskResponse; +import com.baeldung.springai.ollamachatbot.service.HelpDeskChatbotAgentService; @RestController @RequestMapping("/helpdesk") diff --git a/spring-ai-2/src/main/java/com/baeldung/ollamachatbot/model/HelpDeskRequest.java b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/ollamachatbot/model/HelpDeskRequest.java similarity index 90% rename from spring-ai-2/src/main/java/com/baeldung/ollamachatbot/model/HelpDeskRequest.java rename to spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/ollamachatbot/model/HelpDeskRequest.java index 27b1a58d9fc7..7db557711652 100644 --- a/spring-ai-2/src/main/java/com/baeldung/ollamachatbot/model/HelpDeskRequest.java +++ b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/ollamachatbot/model/HelpDeskRequest.java @@ -1,4 +1,4 @@ -package com.baeldung.ollamachatbot.model; +package com.baeldung.springai.ollamachatbot.model; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/spring-ai-2/src/main/java/com/baeldung/ollamachatbot/model/HelpDeskResponse.java b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/ollamachatbot/model/HelpDeskResponse.java similarity index 72% rename from spring-ai-2/src/main/java/com/baeldung/ollamachatbot/model/HelpDeskResponse.java rename to spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/ollamachatbot/model/HelpDeskResponse.java index 72b9c99c42ca..717ee9132a09 100644 --- a/spring-ai-2/src/main/java/com/baeldung/ollamachatbot/model/HelpDeskResponse.java +++ b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/ollamachatbot/model/HelpDeskResponse.java @@ -1,4 +1,4 @@ -package com.baeldung.ollamachatbot.model; +package com.baeldung.springai.ollamachatbot.model; public class HelpDeskResponse { String result; diff --git a/spring-ai-2/src/main/java/com/baeldung/ollamachatbot/model/HistoryEntry.java b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/ollamachatbot/model/HistoryEntry.java similarity index 95% rename from spring-ai-2/src/main/java/com/baeldung/ollamachatbot/model/HistoryEntry.java rename to spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/ollamachatbot/model/HistoryEntry.java index a598c11cbd36..201df36507da 100644 --- a/spring-ai-2/src/main/java/com/baeldung/ollamachatbot/model/HistoryEntry.java +++ b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/ollamachatbot/model/HistoryEntry.java @@ -1,4 +1,4 @@ -package com.baeldung.ollamachatbot.model; +package com.baeldung.springai.ollamachatbot.model; import java.util.Objects; diff --git a/spring-ai-2/src/main/java/com/baeldung/ollamachatbot/service/HelpDeskChatbotAgentService.java b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/ollamachatbot/service/HelpDeskChatbotAgentService.java similarity index 97% rename from spring-ai-2/src/main/java/com/baeldung/ollamachatbot/service/HelpDeskChatbotAgentService.java rename to spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/ollamachatbot/service/HelpDeskChatbotAgentService.java index df87bcdbb5d3..02e3670dfb60 100644 --- a/spring-ai-2/src/main/java/com/baeldung/ollamachatbot/service/HelpDeskChatbotAgentService.java +++ b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/ollamachatbot/service/HelpDeskChatbotAgentService.java @@ -1,4 +1,4 @@ -package com.baeldung.ollamachatbot.service; +package com.baeldung.springai.ollamachatbot.service; import java.util.ArrayList; import java.util.HashMap; @@ -12,7 +12,7 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; -import com.baeldung.ollamachatbot.model.HistoryEntry; +import com.baeldung.springai.ollamachatbot.model.HistoryEntry; @Service public class HelpDeskChatbotAgentService { diff --git a/spring-ai-2/src/main/java/com/baeldung/spring/ai/om/OmAiAssistantConfiguration.java b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/om/OmAiAssistantConfiguration.java similarity index 93% rename from spring-ai-2/src/main/java/com/baeldung/spring/ai/om/OmAiAssistantConfiguration.java rename to spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/om/OmAiAssistantConfiguration.java index 394aae34d02c..0fca1728929c 100644 --- a/spring-ai-2/src/main/java/com/baeldung/spring/ai/om/OmAiAssistantConfiguration.java +++ b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/om/OmAiAssistantConfiguration.java @@ -8,6 +8,9 @@ import org.springframework.context.annotation.Description; import org.springframework.context.annotation.Profile; +import com.baeldung.springai.om.OrderInfo; +import com.baeldung.springai.om.OrderManagementService; + @Configuration @Profile("aiassistant") public class OmAiAssistantConfiguration { diff --git a/spring-ai-2/src/main/java/com/baeldung/spring/ai/om/OrderInfo.java b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/om/OrderInfo.java similarity index 96% rename from spring-ai-2/src/main/java/com/baeldung/spring/ai/om/OrderInfo.java rename to spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/om/OrderInfo.java index 2b3c29af273d..a588186dca2e 100644 --- a/spring-ai-2/src/main/java/com/baeldung/spring/ai/om/OrderInfo.java +++ b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/om/OrderInfo.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.ai.om; +package com.baeldung.springai.om; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/spring-ai-2/src/main/java/com/baeldung/spring/ai/om/OrderManagementAIAssistant.java b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/om/OrderManagementAIAssistant.java similarity index 95% rename from spring-ai-2/src/main/java/com/baeldung/spring/ai/om/OrderManagementAIAssistant.java rename to spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/om/OrderManagementAIAssistant.java index 8596d0f26681..3629b33b3895 100644 --- a/spring-ai-2/src/main/java/com/baeldung/spring/ai/om/OrderManagementAIAssistant.java +++ b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/om/OrderManagementAIAssistant.java @@ -1,6 +1,7 @@ -package com.baeldung.spring.ai.om; +package com.baeldung.springai.om; import java.util.Set; + import org.springframework.ai.chat.model.ChatModel; import org.springframework.ai.chat.model.ChatResponse; import org.springframework.ai.chat.prompt.Prompt; diff --git a/spring-ai-2/src/main/java/com/baeldung/spring/ai/om/OrderManagementApplication.java b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/om/OrderManagementApplication.java similarity index 97% rename from spring-ai-2/src/main/java/com/baeldung/spring/ai/om/OrderManagementApplication.java rename to spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/om/OrderManagementApplication.java index 0675b4324dc4..35d33fa87bfb 100644 --- a/spring-ai-2/src/main/java/com/baeldung/spring/ai/om/OrderManagementApplication.java +++ b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/om/OrderManagementApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.ai.om; +package com.baeldung.springai.om; import org.springframework.ai.autoconfigure.anthropic.AnthropicAutoConfiguration; import org.springframework.ai.autoconfigure.bedrock.converse.BedrockConverseProxyChatAutoConfiguration; diff --git a/spring-ai-2/src/main/java/com/baeldung/spring/ai/om/OrderManagementService.java b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/om/OrderManagementService.java similarity index 93% rename from spring-ai-2/src/main/java/com/baeldung/spring/ai/om/OrderManagementService.java rename to spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/om/OrderManagementService.java index 0b528a3183ce..537655b2e7f2 100644 --- a/spring-ai-2/src/main/java/com/baeldung/spring/ai/om/OrderManagementService.java +++ b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/om/OrderManagementService.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.ai.om; +package com.baeldung.springai.om; import java.util.List; import java.util.Optional; diff --git a/spring-ai-2/src/main/java/com/baeldung/spring/ai/om/OrderRepository.java b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/om/OrderRepository.java similarity index 91% rename from spring-ai-2/src/main/java/com/baeldung/spring/ai/om/OrderRepository.java rename to spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/om/OrderRepository.java index d345868dcdb9..30da16a47fce 100644 --- a/spring-ai-2/src/main/java/com/baeldung/spring/ai/om/OrderRepository.java +++ b/spring-ai-modules/spring-ai-conversational/src/main/java/com/baeldung/springai/om/OrderRepository.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.ai.om; +package com.baeldung.springai.om; import java.util.List; import java.util.Optional; diff --git a/spring-ai-2/src/main/resources/application-aiassistant.properties b/spring-ai-modules/spring-ai-conversational/src/main/resources/application-aiassistant.properties similarity index 100% rename from spring-ai-2/src/main/resources/application-aiassistant.properties rename to spring-ai-modules/spring-ai-conversational/src/main/resources/application-aiassistant.properties diff --git a/spring-ai-4/src/main/resources/application-memory.yml b/spring-ai-modules/spring-ai-conversational/src/main/resources/application-memory.yml similarity index 100% rename from spring-ai-4/src/main/resources/application-memory.yml rename to spring-ai-modules/spring-ai-conversational/src/main/resources/application-memory.yml diff --git a/spring-ai-2/src/main/resources/application.yml b/spring-ai-modules/spring-ai-conversational/src/main/resources/application.yml similarity index 100% rename from spring-ai-2/src/main/resources/application.yml rename to spring-ai-modules/spring-ai-conversational/src/main/resources/application.yml diff --git a/spring-ai-modules/spring-ai-conversational/src/main/resources/logback-spring.xml b/spring-ai-modules/spring-ai-conversational/src/main/resources/logback-spring.xml new file mode 100644 index 000000000000..6769a348700b --- /dev/null +++ b/spring-ai-modules/spring-ai-conversational/src/main/resources/logback-spring.xml @@ -0,0 +1,20 @@ + + + + + + [%d{yyyy-MM-dd HH:mm:ss}] [%p] [%c{1}] - %m%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-ai-2/src/main/resources/puml/function_calling_sequence.puml b/spring-ai-modules/spring-ai-conversational/src/main/resources/puml/function_calling_sequence.puml similarity index 100% rename from spring-ai-2/src/main/resources/puml/function_calling_sequence.puml rename to spring-ai-modules/spring-ai-conversational/src/main/resources/puml/function_calling_sequence.puml diff --git a/spring-ai-2/src/main/resources/puml/om-legacy-cld.puml b/spring-ai-modules/spring-ai-conversational/src/main/resources/puml/om-legacy-cld.puml similarity index 100% rename from spring-ai-2/src/main/resources/puml/om-legacy-cld.puml rename to spring-ai-modules/spring-ai-conversational/src/main/resources/puml/om-legacy-cld.puml diff --git a/spring-ai-2/src/main/resources/puml/om_function_calling_cld.puml b/spring-ai-modules/spring-ai-conversational/src/main/resources/puml/om_function_calling_cld.puml similarity index 100% rename from spring-ai-2/src/main/resources/puml/om_function_calling_cld.puml rename to spring-ai-modules/spring-ai-conversational/src/main/resources/puml/om_function_calling_cld.puml diff --git a/spring-ai-4/src/test/java/com/baeldung/springai/memory/ChatServiceLiveTest.java b/spring-ai-modules/spring-ai-conversational/src/test/java/com/baeldung/springai/memory/ChatServiceLiveTest.java similarity index 89% rename from spring-ai-4/src/test/java/com/baeldung/springai/memory/ChatServiceLiveTest.java rename to spring-ai-modules/spring-ai-conversational/src/test/java/com/baeldung/springai/memory/ChatServiceLiveTest.java index c96024846a92..cdfb5a0aa81a 100644 --- a/spring-ai-4/src/test/java/com/baeldung/springai/memory/ChatServiceLiveTest.java +++ b/spring-ai-modules/spring-ai-conversational/src/test/java/com/baeldung/springai/memory/ChatServiceLiveTest.java @@ -1,13 +1,13 @@ package com.baeldung.springai.memory; +import static org.assertj.core.api.Assertions.assertThat; + import org.junit.jupiter.api.Test; import org.springframework.ai.chat.memory.ChatMemory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; -import static org.assertj.core.api.Assertions.assertThat; - @SpringBootTest @ActiveProfiles("memory") class ChatServiceLiveTest { @@ -28,12 +28,12 @@ void whenChatServiceIsCalledTwice_thenChatMemoryHasCorrectNumberOfEntries() { // 1st request String response1 = chatService.chat(PROMPT_1ST); assertThat(response1).isNotEmpty(); - assertThat(chatMemory.get(conversationId)).hasSize(2); + assertThat(chatMemory.get(conversationId,-1)).hasSize(2); // 2nd request String response2 = chatService.chat(PROMPT_2ND); assertThat(response2).isNotEmpty(); - assertThat(chatMemory.get(conversationId)).hasSize(4); + assertThat(chatMemory.get(conversationId,-1)).hasSize(4); } } \ No newline at end of file diff --git a/spring-ai-2/src/test/java/com/baeldung/ollamachatbot/HelpDeskControllerLiveTest.java b/spring-ai-modules/spring-ai-conversational/src/test/java/com/baeldung/springai/ollamachatbot/HelpDeskControllerLiveTest.java similarity index 92% rename from spring-ai-2/src/test/java/com/baeldung/ollamachatbot/HelpDeskControllerLiveTest.java rename to spring-ai-modules/spring-ai-conversational/src/test/java/com/baeldung/springai/ollamachatbot/HelpDeskControllerLiveTest.java index f2565fb0a67c..38b7c38d5191 100644 --- a/spring-ai-2/src/test/java/com/baeldung/ollamachatbot/HelpDeskControllerLiveTest.java +++ b/spring-ai-modules/spring-ai-conversational/src/test/java/com/baeldung/springai/ollamachatbot/HelpDeskControllerLiveTest.java @@ -1,4 +1,4 @@ -package com.baeldung.ollamachatbot; +package com.baeldung.springai.ollamachatbot; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -18,9 +18,9 @@ import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; -import com.baeldung.ollamachatbot.model.HelpDeskRequest; -import com.baeldung.ollamachatbot.model.HistoryEntry; -import com.baeldung.ollamachatbot.service.HelpDeskChatbotAgentService; +import com.baeldung.springai.ollamachatbot.model.HelpDeskRequest; +import com.baeldung.springai.ollamachatbot.model.HistoryEntry; +import com.baeldung.springai.ollamachatbot.service.HelpDeskChatbotAgentService; import com.fasterxml.jackson.databind.ObjectMapper; @AutoConfigureMockMvc diff --git a/spring-ai-2/src/test/java/com/baeldung/spring/ai/om/AiOrderManagementLiveTest.java b/spring-ai-modules/spring-ai-conversational/src/test/java/com/baeldung/springai/om/AiOrderManagementLiveTest.java similarity index 99% rename from spring-ai-2/src/test/java/com/baeldung/spring/ai/om/AiOrderManagementLiveTest.java rename to spring-ai-modules/spring-ai-conversational/src/test/java/com/baeldung/springai/om/AiOrderManagementLiveTest.java index 7eaf6d8ee886..a68273fef0c7 100644 --- a/spring-ai-2/src/test/java/com/baeldung/spring/ai/om/AiOrderManagementLiveTest.java +++ b/spring-ai-modules/spring-ai-conversational/src/test/java/com/baeldung/springai/om/AiOrderManagementLiveTest.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.ai.om; +package com.baeldung.springai.om; import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.BEFORE_TEST_CLASS; diff --git a/spring-ai/src/test/resources/application-integrationtest.yml b/spring-ai-modules/spring-ai-conversational/src/test/resources/application-integrationtest.yml similarity index 100% rename from spring-ai/src/test/resources/application-integrationtest.yml rename to spring-ai-modules/spring-ai-conversational/src/test/resources/application-integrationtest.yml diff --git a/spring-ai-2/src/test/resources/order_mgmt.sql b/spring-ai-modules/spring-ai-conversational/src/test/resources/order_mgmt.sql similarity index 100% rename from spring-ai-2/src/test/resources/order_mgmt.sql rename to spring-ai-modules/spring-ai-conversational/src/test/resources/order_mgmt.sql diff --git a/spring-ai-modules/spring-ai-core/pom.xml b/spring-ai-modules/spring-ai-core/pom.xml new file mode 100644 index 000000000000..4be96433909f --- /dev/null +++ b/spring-ai-modules/spring-ai-core/pom.xml @@ -0,0 +1,128 @@ + + + 4.0.0 + spring-ai-core + spring-ai-core + war + + + com.baeldung + spring-ai-modules + 0.0.1 + ../pom.xml + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + false + + + + Central Portal Snapshots + central-portal-snapshots + https://central.sonatype.com/repository/maven-snapshots/ + + false + + + true + + + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + org.springframework.ai + spring-ai-bom + ${spring-ai.version} + pom + import + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.ai + spring-ai-openai-spring-boot-starter + + + org.springframework.ai + spring-ai-mistral-ai-spring-boot-starter + + + org.springframework.ai + spring-ai-redis-store-spring-boot-starter + + + org.springframework.ai + spring-ai-transformers-spring-boot-starter + + + org.springframework.ai + spring-ai-ollama-spring-boot-starter + + + org.springframework.ai + spring-ai-pgvector-store-spring-boot-starter + + + org.springframework.boot + spring-boot-docker-compose + + + org.springframework.ai + spring-ai-bedrock-converse-spring-boot-starter + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + com.baeldung.spring.ai.SpringAIProjectApplication + JAR + + + + org.apache.maven.plugins + maven-compiler-plugin + + 17 + 17 + + **/*ManualTest.java + + + + + + + + 1.0.0-M6 + 5.9.0 + + + + \ No newline at end of file diff --git a/spring-ai/postman/Spring_AI_Poetry.postman_environment.json b/spring-ai-modules/spring-ai-core/postman/Spring_AI_Poetry.postman_environment.json similarity index 100% rename from spring-ai/postman/Spring_AI_Poetry.postman_environment.json rename to spring-ai-modules/spring-ai-core/postman/Spring_AI_Poetry.postman_environment.json diff --git a/spring-ai/postman/chat-client.http b/spring-ai-modules/spring-ai-core/postman/chat-client.http similarity index 100% rename from spring-ai/postman/chat-client.http rename to spring-ai-modules/spring-ai-core/postman/chat-client.http diff --git a/spring-ai/postman/spring-ai.postman_collection.json b/spring-ai-modules/spring-ai-core/postman/spring-ai.postman_collection.json similarity index 100% rename from spring-ai/postman/spring-ai.postman_collection.json rename to spring-ai-modules/spring-ai-core/postman/spring-ai.postman_collection.json diff --git a/spring-ai/src/main/java/com/baeldung/SpringAIProjectApplication.java b/spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/SpringAIProjectApplication.java similarity index 100% rename from spring-ai/src/main/java/com/baeldung/SpringAIProjectApplication.java rename to spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/SpringAIProjectApplication.java diff --git a/spring-ai/src/main/java/com/baeldung/springai/chatclient/ChatClientApplication.java b/spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/chatclient/ChatClientApplication.java similarity index 94% rename from spring-ai/src/main/java/com/baeldung/springai/chatclient/ChatClientApplication.java rename to spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/chatclient/ChatClientApplication.java index 6cecb909283d..0536f340fe3a 100644 --- a/spring-ai/src/main/java/com/baeldung/springai/chatclient/ChatClientApplication.java +++ b/spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/chatclient/ChatClientApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.springai.chatclient; +package com.baeldung.chatclient; import org.springframework.ai.autoconfigure.mistralai.MistralAiAutoConfiguration; import org.springframework.ai.autoconfigure.vectorstore.mongo.MongoDBAtlasVectorStoreAutoConfiguration; diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/chatclient/rest/BlogsController.java b/spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/chatclient/rest/BlogsController.java similarity index 98% rename from spring-ai-3/src/main/java/com/baeldung/springai/chatclient/rest/BlogsController.java rename to spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/chatclient/rest/BlogsController.java index 8e2fe6fdffdc..dedb674ec41c 100644 --- a/spring-ai-3/src/main/java/com/baeldung/springai/chatclient/rest/BlogsController.java +++ b/spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/chatclient/rest/BlogsController.java @@ -1,4 +1,4 @@ -package com.baeldung.springai.chatclient.rest; +package com.baeldung.chatclient.rest; import java.io.IOException; import java.nio.file.Files; diff --git a/spring-ai/src/main/java/com/baeldung/springai/dto/PoetryDto.java b/spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springai/dto/PoetryDto.java similarity index 100% rename from spring-ai/src/main/java/com/baeldung/springai/dto/PoetryDto.java rename to spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springai/dto/PoetryDto.java diff --git a/spring-ai/src/main/java/com/baeldung/springai/service/PoetryService.java b/spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springai/service/PoetryService.java similarity index 100% rename from spring-ai/src/main/java/com/baeldung/springai/service/PoetryService.java rename to spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springai/service/PoetryService.java diff --git a/spring-ai/src/main/java/com/baeldung/springai/service/impl/PoetryServiceImpl.java b/spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springai/service/impl/PoetryServiceImpl.java similarity index 100% rename from spring-ai/src/main/java/com/baeldung/springai/service/impl/PoetryServiceImpl.java rename to spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springai/service/impl/PoetryServiceImpl.java diff --git a/spring-ai/src/main/java/com/baeldung/springai/web/ExceptionTranslator.java b/spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springai/web/ExceptionTranslator.java similarity index 100% rename from spring-ai/src/main/java/com/baeldung/springai/web/ExceptionTranslator.java rename to spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springai/web/ExceptionTranslator.java diff --git a/spring-ai/src/main/java/com/baeldung/springai/web/PoetryController.java b/spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springai/web/PoetryController.java similarity index 100% rename from spring-ai/src/main/java/com/baeldung/springai/web/PoetryController.java rename to spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springai/web/PoetryController.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springaistructuredoutput/DemoApplication.java b/spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springaistructuredoutput/DemoApplication.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springaistructuredoutput/DemoApplication.java rename to spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springaistructuredoutput/DemoApplication.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springaistructuredoutput/controller/CharacterController.java b/spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springaistructuredoutput/controller/CharacterController.java similarity index 99% rename from spring-ai-3/src/main/java/com/baeldung/springaistructuredoutput/controller/CharacterController.java rename to spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springaistructuredoutput/controller/CharacterController.java index b162e3546e05..44db8fbacb25 100644 --- a/spring-ai-3/src/main/java/com/baeldung/springaistructuredoutput/controller/CharacterController.java +++ b/spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springaistructuredoutput/controller/CharacterController.java @@ -1,14 +1,15 @@ package com.baeldung.springaistructuredoutput.controller; -import com.baeldung.springaistructuredoutput.service.CharacterService; +import java.util.List; +import java.util.Map; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; -import java.util.Map; +import com.baeldung.springaistructuredoutput.service.CharacterService; @RestController @RequestMapping("/character") diff --git a/spring-ai-3/src/main/java/com/baeldung/springaistructuredoutput/converters/GenericMapOutputConverter.java b/spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springaistructuredoutput/converters/GenericMapOutputConverter.java similarity index 90% rename from spring-ai-3/src/main/java/com/baeldung/springaistructuredoutput/converters/GenericMapOutputConverter.java rename to spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springaistructuredoutput/converters/GenericMapOutputConverter.java index fb082566c8a9..83aa50ad2475 100644 --- a/spring-ai-3/src/main/java/com/baeldung/springaistructuredoutput/converters/GenericMapOutputConverter.java +++ b/spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springaistructuredoutput/converters/GenericMapOutputConverter.java @@ -1,5 +1,11 @@ package com.baeldung.springaistructuredoutput.converters; +import java.util.HashMap; +import java.util.Map; + +import org.springframework.ai.converter.StructuredOutputConverter; +import org.springframework.lang.NonNull; + import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.util.DefaultIndenter; @@ -9,13 +15,12 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectWriter; import com.fasterxml.jackson.databind.json.JsonMapper; -import com.github.victools.jsonschema.generator.*; +import com.github.victools.jsonschema.generator.OptionPreset; +import com.github.victools.jsonschema.generator.SchemaGenerator; +import com.github.victools.jsonschema.generator.SchemaGeneratorConfig; +import com.github.victools.jsonschema.generator.SchemaGeneratorConfigBuilder; +import com.github.victools.jsonschema.generator.SchemaVersion; import com.github.victools.jsonschema.module.jackson.JacksonModule; -import org.springframework.ai.converter.StructuredOutputConverter; -import org.springframework.lang.NonNull; - -import java.util.HashMap; -import java.util.Map; public class GenericMapOutputConverter implements StructuredOutputConverter> { diff --git a/spring-ai-3/src/main/java/com/baeldung/springaistructuredoutput/dto/Character.java b/spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springaistructuredoutput/dto/Character.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springaistructuredoutput/dto/Character.java rename to spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springaistructuredoutput/dto/Character.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springaistructuredoutput/service/CharacterService.java b/spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springaistructuredoutput/service/CharacterService.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springaistructuredoutput/service/CharacterService.java rename to spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springaistructuredoutput/service/CharacterService.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springaistructuredoutput/service/CharacterServiceChatImpl.java b/spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springaistructuredoutput/service/CharacterServiceChatImpl.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springaistructuredoutput/service/CharacterServiceChatImpl.java rename to spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springaistructuredoutput/service/CharacterServiceChatImpl.java index 9ac79347a04e..e6e15a80ca25 100644 --- a/spring-ai-3/src/main/java/com/baeldung/springaistructuredoutput/service/CharacterServiceChatImpl.java +++ b/spring-ai-modules/spring-ai-core/src/main/java/com/baeldung/springaistructuredoutput/service/CharacterServiceChatImpl.java @@ -1,5 +1,8 @@ package com.baeldung.springaistructuredoutput.service; +import java.util.List; +import java.util.Map; + import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.model.ChatModel; import org.springframework.ai.chat.model.Generation; @@ -16,9 +19,6 @@ import com.baeldung.springaistructuredoutput.converters.GenericMapOutputConverter; -import java.util.List; -import java.util.Map; - @Service public class CharacterServiceChatImpl implements CharacterService { diff --git a/spring-ai/src/main/resources/application.yml b/spring-ai-modules/spring-ai-core/src/main/resources/application.yml similarity index 100% rename from spring-ai/src/main/resources/application.yml rename to spring-ai-modules/spring-ai-core/src/main/resources/application.yml diff --git a/spring-ai/src/main/resources/articles.txt b/spring-ai-modules/spring-ai-core/src/main/resources/articles.txt similarity index 100% rename from spring-ai/src/main/resources/articles.txt rename to spring-ai-modules/spring-ai-core/src/main/resources/articles.txt diff --git a/spring-ai/src/test/java/com/baeldung/springai/web/PoetryControllerManualTest.java b/spring-ai-modules/spring-ai-core/src/test/java/com/baeldung/springai/web/PoetryControllerManualTest.java similarity index 100% rename from spring-ai/src/test/java/com/baeldung/springai/web/PoetryControllerManualTest.java rename to spring-ai-modules/spring-ai-core/src/test/java/com/baeldung/springai/web/PoetryControllerManualTest.java diff --git a/spring-ai-modules/spring-ai-infrastructure/pom.xml b/spring-ai-modules/spring-ai-infrastructure/pom.xml new file mode 100644 index 000000000000..117761916675 --- /dev/null +++ b/spring-ai-modules/spring-ai-infrastructure/pom.xml @@ -0,0 +1,133 @@ + + + 4.0.0 + spring-ai-infrastructure + spring-ai-infrastructure + war + + + com.baeldung + spring-ai-modules + 0.0.1 + ../pom.xml + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + false + + + + Central Portal Snapshots + central-portal-snapshots + https://central.sonatype.com/repository/maven-snapshots/ + + false + + + true + + + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + org.springframework.ai + spring-ai-bom + ${spring-ai.version} + pom + import + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.ai + spring-ai-openai-spring-boot-starter + + + org.springframework.ai + spring-ai-mistral-ai-spring-boot-starter + + + org.springframework.ai + spring-ai-redis-store-spring-boot-starter + + + org.springframework.ai + spring-ai-transformers-spring-boot-starter + + + org.springframework.ai + spring-ai-ollama-spring-boot-starter + + + org.springframework.ai + spring-ai-pgvector-store-spring-boot-starter + + + org.springframework.boot + spring-boot-docker-compose + + + org.springframework.ai + spring-ai-bedrock-converse-spring-boot-starter + + + org.springframework.boot + spring-boot-starter-oauth2-resource-server + ${oauth2-resource-server.version} + + + org.springframework.boot + spring-boot-starter-oauth2-authorization-server + ${oauth2-authorization-server.version} + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.ai + spring-ai-spring-boot-testcontainers + test + + + org.testcontainers + junit-jupiter + test + + + + + 1.0.0-M6 + 5.9.0 + 3.5.0 + 1.0.0-M7 + 3.4.2 + 3.3.3 + true + + + \ No newline at end of file diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/docker/modelrunner/ModelRunnerApplication.java b/spring-ai-modules/spring-ai-infrastructure/src/main/java/com/baeldung/springai/docker/modelrunner/ModelRunnerApplication.java similarity index 72% rename from spring-ai-3/src/main/java/com/baeldung/springai/docker/modelrunner/ModelRunnerApplication.java rename to spring-ai-modules/spring-ai-infrastructure/src/main/java/com/baeldung/springai/docker/modelrunner/ModelRunnerApplication.java index b4b95faa0ced..2d36f69004d1 100644 --- a/spring-ai-3/src/main/java/com/baeldung/springai/docker/modelrunner/ModelRunnerApplication.java +++ b/spring-ai-modules/spring-ai-infrastructure/src/main/java/com/baeldung/springai/docker/modelrunner/ModelRunnerApplication.java @@ -2,7 +2,6 @@ import org.springframework.ai.autoconfigure.chat.client.ChatClientAutoConfiguration; import org.springframework.ai.autoconfigure.mistralai.MistralAiAutoConfiguration; -import org.springframework.ai.model.openai.autoconfigure.OpenAiAudioSpeechAutoConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration; @@ -13,9 +12,6 @@ ChatClientAutoConfiguration.class, MongoAutoConfiguration.class, MongoDataAutoConfiguration.class, - org.springframework.ai.autoconfigure.vectorstore.mongo.MongoDBAtlasVectorStoreAutoConfiguration.class, - org.springframework.ai.vectorstore.mongodb.autoconfigure.MongoDBAtlasVectorStoreAutoConfiguration.class, - OpenAiAudioSpeechAutoConfiguration.class, MistralAiAutoConfiguration.class }) class ModelRunnerApplication { diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/docker/modelrunner/ModelRunnerController.java b/spring-ai-modules/spring-ai-infrastructure/src/main/java/com/baeldung/springai/docker/modelrunner/ModelRunnerController.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/docker/modelrunner/ModelRunnerController.java rename to spring-ai-modules/spring-ai-infrastructure/src/main/java/com/baeldung/springai/docker/modelrunner/ModelRunnerController.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/mcp/oauth2/McpServerApplication.java b/spring-ai-modules/spring-ai-infrastructure/src/main/java/com/baeldung/springai/mcp/oauth2/McpServerApplication.java similarity index 72% rename from spring-ai-3/src/main/java/com/baeldung/springai/mcp/oauth2/McpServerApplication.java rename to spring-ai-modules/spring-ai-infrastructure/src/main/java/com/baeldung/springai/mcp/oauth2/McpServerApplication.java index 24d25f9ec9c7..d8dfd169e528 100644 --- a/spring-ai-3/src/main/java/com/baeldung/springai/mcp/oauth2/McpServerApplication.java +++ b/spring-ai-modules/spring-ai-infrastructure/src/main/java/com/baeldung/springai/mcp/oauth2/McpServerApplication.java @@ -3,7 +3,6 @@ import org.springframework.ai.autoconfigure.chat.client.ChatClientAutoConfiguration; import org.springframework.ai.autoconfigure.mistralai.MistralAiAutoConfiguration; import org.springframework.ai.autoconfigure.openai.OpenAiAutoConfiguration; -import org.springframework.ai.model.openai.autoconfigure.*; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration; @@ -15,14 +14,8 @@ MistralAiAutoConfiguration.class, MongoDataAutoConfiguration.class, org.springframework.ai.autoconfigure.vectorstore.mongo.MongoDBAtlasVectorStoreAutoConfiguration.class, - org.springframework.ai.vectorstore.mongodb.autoconfigure.MongoDBAtlasVectorStoreAutoConfiguration.class, - OpenAiAudioSpeechAutoConfiguration.class, OpenAiAutoConfiguration.class, - OpenAiAudioTranscriptionAutoConfiguration.class, - OpenAiChatAutoConfiguration.class, - OpenAiEmbeddingAutoConfiguration.class, - OpenAiImageAutoConfiguration.class, - OpenAiModerationAutoConfiguration.class}) +}) class McpServerApplication { public static void main(String[] args) { diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/mcp/oauth2/StockInformationHolder.java b/spring-ai-modules/spring-ai-infrastructure/src/main/java/com/baeldung/springai/mcp/oauth2/StockInformationHolder.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/mcp/oauth2/StockInformationHolder.java rename to spring-ai-modules/spring-ai-infrastructure/src/main/java/com/baeldung/springai/mcp/oauth2/StockInformationHolder.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/mcp/oauth2/configuration/McpServerConfiguration.java b/spring-ai-modules/spring-ai-infrastructure/src/main/java/com/baeldung/springai/mcp/oauth2/configuration/McpServerConfiguration.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/mcp/oauth2/configuration/McpServerConfiguration.java rename to spring-ai-modules/spring-ai-infrastructure/src/main/java/com/baeldung/springai/mcp/oauth2/configuration/McpServerConfiguration.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/mcp/oauth2/configuration/McpServerSecurityConfiguration.java b/spring-ai-modules/spring-ai-infrastructure/src/main/java/com/baeldung/springai/mcp/oauth2/configuration/McpServerSecurityConfiguration.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/mcp/oauth2/configuration/McpServerSecurityConfiguration.java rename to spring-ai-modules/spring-ai-infrastructure/src/main/java/com/baeldung/springai/mcp/oauth2/configuration/McpServerSecurityConfiguration.java diff --git a/spring-ai-3/src/main/resources/application-dockermodelrunner.properties b/spring-ai-modules/spring-ai-infrastructure/src/main/resources/application-dockermodelrunner.properties similarity index 100% rename from spring-ai-3/src/main/resources/application-dockermodelrunner.properties rename to spring-ai-modules/spring-ai-infrastructure/src/main/resources/application-dockermodelrunner.properties diff --git a/spring-ai-3/src/main/resources/application-mcp.yml b/spring-ai-modules/spring-ai-infrastructure/src/main/resources/application-mcp.yml similarity index 100% rename from spring-ai-3/src/main/resources/application-mcp.yml rename to spring-ai-modules/spring-ai-infrastructure/src/main/resources/application-mcp.yml diff --git a/spring-ai-3/src/main/resources/application.yml b/spring-ai-modules/spring-ai-infrastructure/src/main/resources/application.yml similarity index 100% rename from spring-ai-3/src/main/resources/application.yml rename to spring-ai-modules/spring-ai-infrastructure/src/main/resources/application.yml diff --git a/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/main/resources/logback-spring.xml b/spring-ai-modules/spring-ai-infrastructure/src/main/resources/logback-spring.xml similarity index 100% rename from spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/main/resources/logback-spring.xml rename to spring-ai-modules/spring-ai-infrastructure/src/main/resources/logback-spring.xml diff --git a/spring-ai-3/src/test/java/com/baeldung/springai/docker/modelrunner/ModelRunnerApplicationManualTest.java b/spring-ai-modules/spring-ai-infrastructure/src/test/java/com/baeldung/springai/docker/modelrunner/ModelRunnerApplicationManualTest.java similarity index 100% rename from spring-ai-3/src/test/java/com/baeldung/springai/docker/modelrunner/ModelRunnerApplicationManualTest.java rename to spring-ai-modules/spring-ai-infrastructure/src/test/java/com/baeldung/springai/docker/modelrunner/ModelRunnerApplicationManualTest.java diff --git a/spring-ai-3/src/test/java/com/baeldung/springai/docker/modelrunner/TestcontainersConfiguration.java b/spring-ai-modules/spring-ai-infrastructure/src/test/java/com/baeldung/springai/docker/modelrunner/TestcontainersConfiguration.java similarity index 100% rename from spring-ai-3/src/test/java/com/baeldung/springai/docker/modelrunner/TestcontainersConfiguration.java rename to spring-ai-modules/spring-ai-infrastructure/src/test/java/com/baeldung/springai/docker/modelrunner/TestcontainersConfiguration.java diff --git a/spring-ai-3/src/test/java/com/baeldung/springai/mcp/oauth2/McpServerOAuth2LiveTest.java b/spring-ai-modules/spring-ai-infrastructure/src/test/java/com/baeldung/springai/mcp/oauth2/McpServerOAuth2LiveTest.java similarity index 100% rename from spring-ai-3/src/test/java/com/baeldung/springai/mcp/oauth2/McpServerOAuth2LiveTest.java rename to spring-ai-modules/spring-ai-infrastructure/src/test/java/com/baeldung/springai/mcp/oauth2/McpServerOAuth2LiveTest.java diff --git a/spring-ai-modules/spring-ai-mcp/pom.xml b/spring-ai-modules/spring-ai-mcp/pom.xml deleted file mode 100644 index 1d124c0256d1..000000000000 --- a/spring-ai-modules/spring-ai-mcp/pom.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - 4.0.0 - - - com.baeldung - spring-ai-modules - 0.0.1 - ../pom.xml - - - com.baeldung - spring-ai-mcp - 0.0.1 - spring-ai-mcp - - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.ai - spring-ai-starter-model-anthropic - - - org.springframework.ai - spring-ai-starter-mcp-client - - - org.springframework.ai - spring-ai-starter-mcp-server-webmvc - - - - - org.springframework.boot - spring-boot-starter-test - test - - - - - 21 - 1.0.0 - - - - - mcp-server - - true - - - com.baeldung.springai.mcp.server.ServerApplication - - - - mcp-client - - com.baeldung.springai.mcp.client.ClientApplication - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - ${spring.boot.mainclass} - - - - - - - - - org.springframework.ai - spring-ai-bom - ${spring-ai.version} - pom - import - - - - - diff --git a/spring-ai-modules/spring-ai-mcp/src/main/resources/application-mcp-server.properties b/spring-ai-modules/spring-ai-mcp/src/main/resources/application-mcp-server.properties deleted file mode 100644 index bafddced850a..000000000000 --- a/spring-ai-modules/spring-ai-mcp/src/main/resources/application-mcp-server.properties +++ /dev/null @@ -1 +0,0 @@ -server.port=8081 \ No newline at end of file diff --git a/spring-ai/pom.xml b/spring-ai-modules/spring-ai-multimodal/pom.xml similarity index 82% rename from spring-ai/pom.xml rename to spring-ai-modules/spring-ai-multimodal/pom.xml index 645511cb1c97..9329ee1000b5 100644 --- a/spring-ai/pom.xml +++ b/spring-ai-modules/spring-ai-multimodal/pom.xml @@ -3,15 +3,15 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - spring-ai - spring-ai + spring-ai-multimodal + spring-ai-multimodal war com.baeldung - parent-boot-3 - 0.0.1-SNAPSHOT - ../parent-boot-3 + spring-ai-modules + 0.0.1 + ../pom.xml @@ -94,45 +94,32 @@ - - deepseek + transcribe + + com.baeldung.springai.transcribe.Application + true - - com.baeldung.springai.deepseek.Application - - - - pgvector - - com.baeldung.springai.semanticsearch.Application - - org.springframework.boot spring-boot-maven-plugin - com.baeldung.spring.ai.SpringAIProjectApplication - JAR + ${spring.boot.mainclass} org.apache.maven.plugins maven-compiler-plugin - 17 - 17 - - **/*ManualTest.java - + 21 diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/embeddings/Application.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/embeddings/Application.java similarity index 61% rename from spring-ai-3/src/main/java/com/baeldung/springai/embeddings/Application.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/embeddings/Application.java index 2a42f2584e73..81c6242db660 100644 --- a/spring-ai-3/src/main/java/com/baeldung/springai/embeddings/Application.java +++ b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/embeddings/Application.java @@ -1,19 +1,13 @@ package com.baeldung.springai.embeddings; import org.springframework.ai.autoconfigure.chat.client.ChatClientAutoConfiguration; -import org.springframework.ai.model.openai.autoconfigure.OpenAiAudioSpeechAutoConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration; import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; -@SpringBootApplication(exclude = { - ChatClientAutoConfiguration.class, - MongoAutoConfiguration.class, - MongoDataAutoConfiguration.class, - org.springframework.ai.autoconfigure.vectorstore.mongo.MongoDBAtlasVectorStoreAutoConfiguration.class, - org.springframework.ai.vectorstore.mongodb.autoconfigure.MongoDBAtlasVectorStoreAutoConfiguration.class, - OpenAiAudioSpeechAutoConfiguration.class}) +@SpringBootApplication(exclude = { ChatClientAutoConfiguration.class, MongoAutoConfiguration.class, MongoDataAutoConfiguration.class, + org.springframework.ai.autoconfigure.vectorstore.mongo.MongoDBAtlasVectorStoreAutoConfiguration.class }) class Application { public static void main(String[] args) { diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/embeddings/EmbeddingConfig.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/embeddings/EmbeddingConfig.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/embeddings/EmbeddingConfig.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/embeddings/EmbeddingConfig.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/embeddings/EmbeddingController.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/embeddings/EmbeddingController.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/embeddings/EmbeddingController.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/embeddings/EmbeddingController.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/embeddings/EmbeddingService.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/embeddings/EmbeddingService.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/embeddings/EmbeddingService.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/embeddings/EmbeddingService.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/embeddings/ManualEmbeddingService.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/embeddings/ManualEmbeddingService.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/embeddings/ManualEmbeddingService.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/embeddings/ManualEmbeddingService.java diff --git a/spring-ai-2/src/main/java/com/baeldung/image/CarColorCount.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/image/CarColorCount.java similarity index 91% rename from spring-ai-2/src/main/java/com/baeldung/image/CarColorCount.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/image/CarColorCount.java index c729d980900a..a582d08d5cf2 100644 --- a/spring-ai-2/src/main/java/com/baeldung/image/CarColorCount.java +++ b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/image/CarColorCount.java @@ -1,4 +1,4 @@ -package com.baeldung.image; +package com.baeldung.springai.image; public class CarColorCount { diff --git a/spring-ai-2/src/main/java/com/baeldung/image/CarCount.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/image/CarCount.java similarity index 93% rename from spring-ai-2/src/main/java/com/baeldung/image/CarCount.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/image/CarCount.java index 7eafd5a51a29..96444a36f362 100644 --- a/spring-ai-2/src/main/java/com/baeldung/image/CarCount.java +++ b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/image/CarCount.java @@ -1,4 +1,4 @@ -package com.baeldung.image; +package com.baeldung.springai.image; import java.util.List; diff --git a/spring-ai-2/src/main/java/com/baeldung/image/CarCountService.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/image/CarCountService.java similarity index 97% rename from spring-ai-2/src/main/java/com/baeldung/image/CarCountService.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/image/CarCountService.java index 6d444b3f5d66..e106a4868b3a 100644 --- a/spring-ai-2/src/main/java/com/baeldung/image/CarCountService.java +++ b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/image/CarCountService.java @@ -1,12 +1,12 @@ -package com.baeldung.image; +package com.baeldung.springai.image; + +import java.io.InputStream; import org.springframework.ai.chat.client.ChatClient; import org.springframework.core.io.InputStreamResource; import org.springframework.stereotype.Service; import org.springframework.util.MimeTypeUtils; -import java.io.InputStream; - @Service public class CarCountService { diff --git a/spring-ai-2/src/main/java/com/baeldung/image/ImageApplication.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/image/ImageApplication.java similarity index 96% rename from spring-ai-2/src/main/java/com/baeldung/image/ImageApplication.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/image/ImageApplication.java index 9899c1d4fb98..dacce1230dd9 100644 --- a/spring-ai-2/src/main/java/com/baeldung/image/ImageApplication.java +++ b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/image/ImageApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.image; +package com.baeldung.springai.image; import org.springframework.ai.autoconfigure.anthropic.AnthropicAutoConfiguration; import org.springframework.ai.autoconfigure.bedrock.converse.BedrockConverseProxyChatAutoConfiguration; diff --git a/spring-ai-2/src/main/java/com/baeldung/image/ImageController.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/image/ImageController.java similarity index 97% rename from spring-ai-2/src/main/java/com/baeldung/image/ImageController.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/image/ImageController.java index e5cbb05a36b9..da5f7e921f40 100644 --- a/spring-ai-2/src/main/java/com/baeldung/image/ImageController.java +++ b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/image/ImageController.java @@ -1,4 +1,7 @@ -package com.baeldung.image; +package com.baeldung.springai.image; + +import java.io.IOException; +import java.io.InputStream; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -9,9 +12,6 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import java.io.IOException; -import java.io.InputStream; - @RestController @RequestMapping("/image") public class ImageController { diff --git a/spring-ai-3/src/main/java/com/baeldung/imagegen/Application.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/imagegen/Application.java similarity index 95% rename from spring-ai-3/src/main/java/com/baeldung/imagegen/Application.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/imagegen/Application.java index 6ed04c8a2219..0cbd9283daab 100644 --- a/spring-ai-3/src/main/java/com/baeldung/imagegen/Application.java +++ b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/imagegen/Application.java @@ -1,4 +1,4 @@ -package com.baeldung.imagegen; +package com.baeldung.springai.imagegen; import org.springframework.ai.autoconfigure.vectorstore.mongo.MongoDBAtlasVectorStoreAutoConfiguration; import org.springframework.ai.autoconfigure.vectorstore.redis.RedisVectorStoreAutoConfiguration; diff --git a/spring-ai-3/src/main/java/com/baeldung/imagegen/ImageGenerationRequest.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/imagegen/ImageGenerationRequest.java similarity index 74% rename from spring-ai-3/src/main/java/com/baeldung/imagegen/ImageGenerationRequest.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/imagegen/ImageGenerationRequest.java index 4d352131b525..3340f5082148 100644 --- a/spring-ai-3/src/main/java/com/baeldung/imagegen/ImageGenerationRequest.java +++ b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/imagegen/ImageGenerationRequest.java @@ -1,4 +1,4 @@ -package com.baeldung.imagegen; +package com.baeldung.springai.imagegen; record ImageGenerationRequest( String prompt, diff --git a/spring-ai-3/src/main/java/com/baeldung/imagegen/ImageGenerator.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/imagegen/ImageGenerator.java similarity index 97% rename from spring-ai-3/src/main/java/com/baeldung/imagegen/ImageGenerator.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/imagegen/ImageGenerator.java index f91bfc45d6b6..09d41663e874 100644 --- a/spring-ai-3/src/main/java/com/baeldung/imagegen/ImageGenerator.java +++ b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/imagegen/ImageGenerator.java @@ -1,4 +1,4 @@ -package com.baeldung.imagegen; +package com.baeldung.springai.imagegen; import java.util.Optional; diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/transcribe/Application.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/transcribe/Application.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/transcribe/Application.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/transcribe/Application.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/transcribe/AudioTranscriber.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/transcribe/AudioTranscriber.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/transcribe/AudioTranscriber.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/transcribe/AudioTranscriber.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/transcribe/TranscriptionController.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/transcribe/TranscriptionController.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/transcribe/TranscriptionController.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/transcribe/TranscriptionController.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/transcribe/TranscriptionRequest.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/transcribe/TranscriptionRequest.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/transcribe/TranscriptionRequest.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/transcribe/TranscriptionRequest.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/transcribe/TranscriptionResponse.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/transcribe/TranscriptionResponse.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/transcribe/TranscriptionResponse.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/transcribe/TranscriptionResponse.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/transcribe/controllers/TextToSpeechController.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/transcribe/controllers/TextToSpeechController.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/transcribe/controllers/TextToSpeechController.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/transcribe/controllers/TextToSpeechController.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/transcribe/services/TextToSpeechService.java b/spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/transcribe/services/TextToSpeechService.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/transcribe/services/TextToSpeechService.java rename to spring-ai-modules/spring-ai-multimodal/src/main/java/com/baeldung/springai/transcribe/services/TextToSpeechService.java diff --git a/spring-ai-3/src/main/resources/application-embeddings.yml b/spring-ai-modules/spring-ai-multimodal/src/main/resources/application-embeddings.yml similarity index 100% rename from spring-ai-3/src/main/resources/application-embeddings.yml rename to spring-ai-modules/spring-ai-multimodal/src/main/resources/application-embeddings.yml diff --git a/spring-ai-2/src/main/resources/application-image.yml b/spring-ai-modules/spring-ai-multimodal/src/main/resources/application-image.yml similarity index 100% rename from spring-ai-2/src/main/resources/application-image.yml rename to spring-ai-modules/spring-ai-multimodal/src/main/resources/application-image.yml diff --git a/spring-ai-3/src/main/resources/application-imagegen.properties b/spring-ai-modules/spring-ai-multimodal/src/main/resources/application-imagegen.properties similarity index 100% rename from spring-ai-3/src/main/resources/application-imagegen.properties rename to spring-ai-modules/spring-ai-multimodal/src/main/resources/application-imagegen.properties diff --git a/spring-ai-3/src/main/resources/application-transcribe.properties b/spring-ai-modules/spring-ai-multimodal/src/main/resources/application-transcribe.properties similarity index 100% rename from spring-ai-3/src/main/resources/application-transcribe.properties rename to spring-ai-modules/spring-ai-multimodal/src/main/resources/application-transcribe.properties diff --git a/spring-ai-4/src/main/resources/logback.xml b/spring-ai-modules/spring-ai-multimodal/src/main/resources/logback-spring.xml similarity index 100% rename from spring-ai-4/src/main/resources/logback.xml rename to spring-ai-modules/spring-ai-multimodal/src/main/resources/logback-spring.xml diff --git a/spring-ai-3/src/test/java/com/baeldung/springai/embeddings/EmbeddingServiceLiveTest.java b/spring-ai-modules/spring-ai-multimodal/src/test/java/com/baeldung/springai/embeddings/EmbeddingServiceLiveTest.java similarity index 100% rename from spring-ai-3/src/test/java/com/baeldung/springai/embeddings/EmbeddingServiceLiveTest.java rename to spring-ai-modules/spring-ai-multimodal/src/test/java/com/baeldung/springai/embeddings/EmbeddingServiceLiveTest.java diff --git a/spring-ai-3/src/test/java/com/baeldung/springai/embeddings/ManualEmbeddingServiceLiveTest.java b/spring-ai-modules/spring-ai-multimodal/src/test/java/com/baeldung/springai/embeddings/ManualEmbeddingServiceLiveTest.java similarity index 100% rename from spring-ai-3/src/test/java/com/baeldung/springai/embeddings/ManualEmbeddingServiceLiveTest.java rename to spring-ai-modules/spring-ai-multimodal/src/test/java/com/baeldung/springai/embeddings/ManualEmbeddingServiceLiveTest.java diff --git a/spring-ai-2/src/test/java/com/baeldung/image/ImageControllerLiveTest.java b/spring-ai-modules/spring-ai-multimodal/src/test/java/com/baeldung/springai/image/ImageControllerLiveTest.java similarity index 98% rename from spring-ai-2/src/test/java/com/baeldung/image/ImageControllerLiveTest.java rename to spring-ai-modules/spring-ai-multimodal/src/test/java/com/baeldung/springai/image/ImageControllerLiveTest.java index 12145a3f7ef0..8a030676ea56 100644 --- a/spring-ai-2/src/test/java/com/baeldung/image/ImageControllerLiveTest.java +++ b/spring-ai-modules/spring-ai-multimodal/src/test/java/com/baeldung/springai/image/ImageControllerLiveTest.java @@ -1,4 +1,10 @@ -package com.baeldung.image; +package com.baeldung.springai.image; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -11,12 +17,6 @@ import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestClient; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; - -import static org.junit.jupiter.api.Assertions.assertTrue; - @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @ActiveProfiles("image") public class ImageControllerLiveTest { diff --git a/spring-ai-3/src/test/java/com/baeldung/imagegen/ImageGeneratorLiveTest.java b/spring-ai-modules/spring-ai-multimodal/src/test/java/com/baeldung/springai/imagegen/ImageGeneratorLiveTest.java similarity index 91% rename from spring-ai-3/src/test/java/com/baeldung/imagegen/ImageGeneratorLiveTest.java rename to spring-ai-modules/spring-ai-multimodal/src/test/java/com/baeldung/springai/imagegen/ImageGeneratorLiveTest.java index 222499169d53..b1544f1ed225 100644 --- a/spring-ai-3/src/test/java/com/baeldung/imagegen/ImageGeneratorLiveTest.java +++ b/spring-ai-modules/spring-ai-multimodal/src/test/java/com/baeldung/springai/imagegen/ImageGeneratorLiveTest.java @@ -1,4 +1,4 @@ -package com.baeldung.imagegen; +package com.baeldung.springai.imagegen; import static org.assertj.core.api.Assertions.assertThat; @@ -7,7 +7,7 @@ import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest( - classes = Application.class, + classes = Application.class, properties = "spring.ai.openai.image.options.response-format=b64_json" ) class ImageGeneratorLiveTest { diff --git a/spring-ai-3/src/test/java/com/baeldung/springai/transcribe/AudioTranscriberLiveTest.java b/spring-ai-modules/spring-ai-multimodal/src/test/java/com/baeldung/springai/transcribe/AudioTranscriberLiveTest.java similarity index 100% rename from spring-ai-3/src/test/java/com/baeldung/springai/transcribe/AudioTranscriberLiveTest.java rename to spring-ai-modules/spring-ai-multimodal/src/test/java/com/baeldung/springai/transcribe/AudioTranscriberLiveTest.java diff --git a/spring-ai-3/src/test/java/com/baeldung/springai/transcribe/TextToSpeechLiveTest.java b/spring-ai-modules/spring-ai-multimodal/src/test/java/com/baeldung/springai/transcribe/TextToSpeechLiveTest.java similarity index 100% rename from spring-ai-3/src/test/java/com/baeldung/springai/transcribe/TextToSpeechLiveTest.java rename to spring-ai-modules/spring-ai-multimodal/src/test/java/com/baeldung/springai/transcribe/TextToSpeechLiveTest.java diff --git a/spring-ai-3/src/test/resources/audio/baeldung-audio-description.mp3 b/spring-ai-modules/spring-ai-multimodal/src/test/resources/audio/baeldung-audio-description.mp3 similarity index 100% rename from spring-ai-3/src/test/resources/audio/baeldung-audio-description.mp3 rename to spring-ai-modules/spring-ai-multimodal/src/test/resources/audio/baeldung-audio-description.mp3 diff --git a/spring-ai-modules/spring-ai-text-to-sql/pom.xml b/spring-ai-modules/spring-ai-text-to-sql/pom.xml deleted file mode 100644 index 877da4806583..000000000000 --- a/spring-ai-modules/spring-ai-text-to-sql/pom.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - 4.0.0 - - - com.baeldung - spring-ai-modules - 0.0.1 - ../pom.xml - - - com.baeldung - spring-ai-text-to-sql - 0.0.1 - spring-ai-text-to-sql - - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.ai - spring-ai-starter-model-anthropic - ${spring-ai.version} - - - - - org.springframework.boot - spring-boot-starter-data-jpa - - - com.mysql - mysql-connector-j - - - org.flywaydb - flyway-mysql - - - - - org.springframework.boot - spring-boot-starter-test - test - - - org.springframework.boot - spring-boot-testcontainers - test - - - org.testcontainers - mysql - test - - - - - 21 - 1.0.0 - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - - \ No newline at end of file diff --git a/spring-ai-3/docker-compose.yml b/spring-ai-modules/spring-ai-vector-rag/docker-compose.yml similarity index 100% rename from spring-ai-3/docker-compose.yml rename to spring-ai-modules/spring-ai-vector-rag/docker-compose.yml diff --git a/spring-ai-modules/spring-ai-vector-rag/pom.xml b/spring-ai-modules/spring-ai-vector-rag/pom.xml new file mode 100644 index 000000000000..b417b70715e7 --- /dev/null +++ b/spring-ai-modules/spring-ai-vector-rag/pom.xml @@ -0,0 +1,158 @@ + + + 4.0.0 + spring-ai-vector-rag + spring-ai-vector-rag + war + + + com.baeldung + spring-ai-modules + 0.0.1 + ../pom.xml + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + false + + + + Central Portal Snapshots + central-portal-snapshots + https://central.sonatype.com/repository/maven-snapshots/ + + false + + + true + + + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + org.springframework.ai + spring-ai-bom + ${spring-ai.version} + pom + import + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.ai + spring-ai-openai-spring-boot-starter + + + org.springframework.ai + spring-ai-ollama-spring-boot-starter + + + org.springframework.ai + spring-ai-pgvector-store-spring-boot-starter + + + org.springframework.boot + spring-boot-docker-compose + + + org.springframework.ai + spring-ai-chroma-store-spring-boot-starter + + + org.springframework.ai + spring-ai-redis-store-spring-boot-starter + + + org.springframework.ai + spring-ai-pdf-document-reader + + + org.springframework.ai + spring-ai-starter-vector-store-mongodb-atlas + ${spring-ai-mongodb-atlas.version} + + + org.springframework.ai + spring-ai-starter-vector-store-oracle + 1.0.0 + + + org.springframework.ai + spring-ai-advisors-vector-store + 1.0.0 + + + org.springframework.ai + spring-ai-starter-model-openai + 1.0.0 + + + + org.testcontainers + chromadb + test + + + org.testcontainers + ollama + test + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.ai + spring-ai-spring-boot-testcontainers + test + + + org.testcontainers + oracle-free + test + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 21 + + + + + + + 1.0.0-M6 + 5.9.0 + 1.0.0-M7 + true + + + \ No newline at end of file diff --git a/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/SpringAIProjectApplication.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/SpringAIProjectApplication.java new file mode 100644 index 000000000000..cee154f61869 --- /dev/null +++ b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/SpringAIProjectApplication.java @@ -0,0 +1,12 @@ +package com.baeldung; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringAIProjectApplication { + public static void main(String[] args) { + SpringApplication.run(SpringAIProjectApplication.class, args); + } + +} diff --git a/spring-ai-2/src/main/java/com/baeldung/airag/SpringAiRagApplication.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/airag/SpringAiRagApplication.java similarity index 88% rename from spring-ai-2/src/main/java/com/baeldung/airag/SpringAiRagApplication.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/airag/SpringAiRagApplication.java index 141682d5300b..b91a7da28594 100644 --- a/spring-ai-2/src/main/java/com/baeldung/airag/SpringAiRagApplication.java +++ b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/airag/SpringAiRagApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.airag; +package com.baeldung.springai.airag; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-ai-2/src/main/java/com/baeldung/airag/controller/ChatBotController.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/airag/controller/ChatBotController.java similarity index 83% rename from spring-ai-2/src/main/java/com/baeldung/airag/controller/ChatBotController.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/airag/controller/ChatBotController.java index 0245c63886b6..a2f12a5d1d4d 100644 --- a/spring-ai-2/src/main/java/com/baeldung/airag/controller/ChatBotController.java +++ b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/airag/controller/ChatBotController.java @@ -1,4 +1,4 @@ -package com.baeldung.airag.controller; +package com.baeldung.springai.airag.controller; import java.util.Map; @@ -7,7 +7,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import com.baeldung.airag.service.ChatBotService; +import com.baeldung.springai.airag.service.ChatBotService; @RestController public class ChatBotController { diff --git a/spring-ai-2/src/main/java/com/baeldung/airag/service/ChatBotService.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/airag/service/ChatBotService.java similarity index 96% rename from spring-ai-2/src/main/java/com/baeldung/airag/service/ChatBotService.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/airag/service/ChatBotService.java index 884e47db355a..cdb474fd3f68 100644 --- a/spring-ai-2/src/main/java/com/baeldung/airag/service/ChatBotService.java +++ b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/airag/service/ChatBotService.java @@ -1,4 +1,4 @@ -package com.baeldung.airag.service; +package com.baeldung.springai.airag.service; import java.util.List; diff --git a/spring-ai-2/src/main/java/com/baeldung/airag/service/DataLoaderService.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/airag/service/DataLoaderService.java similarity index 98% rename from spring-ai-2/src/main/java/com/baeldung/airag/service/DataLoaderService.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/airag/service/DataLoaderService.java index 734a75481016..d82981a91137 100644 --- a/spring-ai-2/src/main/java/com/baeldung/airag/service/DataLoaderService.java +++ b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/airag/service/DataLoaderService.java @@ -1,4 +1,4 @@ -package com.baeldung.airag.service; +package com.baeldung.springai.airag.service; import java.util.List; @@ -8,8 +8,8 @@ import org.springframework.ai.reader.pdf.PagePdfDocumentReader; import org.springframework.ai.reader.pdf.config.PdfDocumentReaderConfig; import org.springframework.ai.transformer.splitter.TokenTextSplitter; -import org.springframework.ai.vectorstore.redis.RedisVectorStore; import org.springframework.ai.vectorstore.VectorStore; +import org.springframework.ai.vectorstore.redis.RedisVectorStore; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; diff --git a/spring-ai-2/src/main/java/com/baeldung/airag/service/DataRetrievalService.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/airag/service/DataRetrievalService.java similarity index 90% rename from spring-ai-2/src/main/java/com/baeldung/airag/service/DataRetrievalService.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/airag/service/DataRetrievalService.java index 495950a62169..418ea29c039b 100644 --- a/spring-ai-2/src/main/java/com/baeldung/airag/service/DataRetrievalService.java +++ b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/airag/service/DataRetrievalService.java @@ -1,4 +1,4 @@ -package com.baeldung.airag.service; +package com.baeldung.springai.airag.service; import java.util.List; diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/chromadb/Application.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/chromadb/Application.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/chromadb/Application.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/chromadb/Application.java diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/chromadb/Poem.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/chromadb/Poem.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/chromadb/Poem.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/chromadb/Poem.java diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/chromadb/PoetryFetcher.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/chromadb/PoetryFetcher.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/chromadb/PoetryFetcher.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/chromadb/PoetryFetcher.java diff --git a/spring-ai-2/src/main/java/com/baeldung/springai/chromadb/VectorStoreInitializer.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/chromadb/VectorStoreInitializer.java similarity index 100% rename from spring-ai-2/src/main/java/com/baeldung/springai/chromadb/VectorStoreInitializer.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/chromadb/VectorStoreInitializer.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/rag/mongodb/configuration/AdvisorConfiguration.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/rag/mongodb/configuration/AdvisorConfiguration.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/rag/mongodb/configuration/AdvisorConfiguration.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/rag/mongodb/configuration/AdvisorConfiguration.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/rag/mongodb/controller/WikiDocumentsController.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/rag/mongodb/controller/WikiDocumentsController.java similarity index 85% rename from spring-ai-3/src/main/java/com/baeldung/springai/rag/mongodb/controller/WikiDocumentsController.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/rag/mongodb/controller/WikiDocumentsController.java index a24c716a4bca..544c59e8d86c 100644 --- a/spring-ai-3/src/main/java/com/baeldung/springai/rag/mongodb/controller/WikiDocumentsController.java +++ b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/rag/mongodb/controller/WikiDocumentsController.java @@ -1,16 +1,20 @@ package com.baeldung.springai.rag.mongodb.controller; -import com.baeldung.springai.rag.mongodb.dto.WikiDocument; -import com.baeldung.springai.rag.mongodb.service.WikiDocumentsServiceImpl; +import java.util.List; + import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.client.advisor.QuestionAnswerAdvisor; import org.springframework.ai.chat.model.ChatModel; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; -import java.util.List; +import com.baeldung.springai.rag.mongodb.dto.WikiDocument; +import com.baeldung.springai.rag.mongodb.service.WikiDocumentsServiceImpl; @RestController @RequestMapping("/wiki") diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/rag/mongodb/dto/WikiDocument.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/rag/mongodb/dto/WikiDocument.java similarity index 100% rename from spring-ai-3/src/main/java/com/baeldung/springai/rag/mongodb/dto/WikiDocument.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/rag/mongodb/dto/WikiDocument.java diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/rag/mongodb/repository/WikiDocumentsRepository.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/rag/mongodb/repository/WikiDocumentsRepository.java similarity index 96% rename from spring-ai-3/src/main/java/com/baeldung/springai/rag/mongodb/repository/WikiDocumentsRepository.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/rag/mongodb/repository/WikiDocumentsRepository.java index 89cb9a568137..c13c3d48cd9f 100644 --- a/spring-ai-3/src/main/java/com/baeldung/springai/rag/mongodb/repository/WikiDocumentsRepository.java +++ b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/rag/mongodb/repository/WikiDocumentsRepository.java @@ -1,16 +1,16 @@ package com.baeldung.springai.rag.mongodb.repository; -import com.baeldung.springai.rag.mongodb.dto.WikiDocument; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import org.springframework.ai.document.Document; import org.springframework.ai.transformer.splitter.TokenTextSplitter; import org.springframework.ai.vectorstore.SearchRequest; import org.springframework.ai.vectorstore.VectorStore; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import com.baeldung.springai.rag.mongodb.dto.WikiDocument; @Component public class WikiDocumentsRepository { diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/rag/mongodb/service/WikiDocumentsServiceImpl.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/rag/mongodb/service/WikiDocumentsServiceImpl.java similarity index 95% rename from spring-ai-3/src/main/java/com/baeldung/springai/rag/mongodb/service/WikiDocumentsServiceImpl.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/rag/mongodb/service/WikiDocumentsServiceImpl.java index 48eaa6295cbf..4053d4e5d9ec 100644 --- a/spring-ai-3/src/main/java/com/baeldung/springai/rag/mongodb/service/WikiDocumentsServiceImpl.java +++ b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/rag/mongodb/service/WikiDocumentsServiceImpl.java @@ -1,15 +1,15 @@ package com.baeldung.springai.rag.mongodb.service; -import com.baeldung.springai.rag.mongodb.dto.WikiDocument; -import com.baeldung.springai.rag.mongodb.repository.WikiDocumentsRepository; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; +import org.springframework.stereotype.Service; + +import com.baeldung.springai.rag.mongodb.dto.WikiDocument; +import com.baeldung.springai.rag.mongodb.repository.WikiDocumentsRepository; + @Service public class WikiDocumentsServiceImpl { private final WikiDocumentsRepository wikiDocumentsRepository; diff --git a/spring-ai/src/main/java/com/baeldung/springai/semanticsearch/Application.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/semanticsearch/Application.java similarity index 100% rename from spring-ai/src/main/java/com/baeldung/springai/semanticsearch/Application.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/semanticsearch/Application.java diff --git a/spring-ai/src/main/java/com/baeldung/springai/semanticsearch/Book.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/semanticsearch/Book.java similarity index 100% rename from spring-ai/src/main/java/com/baeldung/springai/semanticsearch/Book.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/semanticsearch/Book.java diff --git a/spring-ai/src/main/java/com/baeldung/springai/semanticsearch/BookSearchController.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/semanticsearch/BookSearchController.java similarity index 100% rename from spring-ai/src/main/java/com/baeldung/springai/semanticsearch/BookSearchController.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/semanticsearch/BookSearchController.java diff --git a/spring-ai/src/main/java/com/baeldung/springai/semanticsearch/BooksIngestionPipeline.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/semanticsearch/BooksIngestionPipeline.java similarity index 100% rename from spring-ai/src/main/java/com/baeldung/springai/semanticsearch/BooksIngestionPipeline.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/semanticsearch/BooksIngestionPipeline.java diff --git a/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/main/java/com/baeldung/springai/vectorstore/oracle/Application.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/vectorstore/oracle/Application.java similarity index 100% rename from spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/main/java/com/baeldung/springai/vectorstore/oracle/Application.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/vectorstore/oracle/Application.java diff --git a/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/main/java/com/baeldung/springai/vectorstore/oracle/Quote.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/vectorstore/oracle/Quote.java similarity index 100% rename from spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/main/java/com/baeldung/springai/vectorstore/oracle/Quote.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/vectorstore/oracle/Quote.java diff --git a/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/main/java/com/baeldung/springai/vectorstore/oracle/QuoteFetcher.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/vectorstore/oracle/QuoteFetcher.java similarity index 100% rename from spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/main/java/com/baeldung/springai/vectorstore/oracle/QuoteFetcher.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/vectorstore/oracle/QuoteFetcher.java index f822a8d9c2fa..bb04ab82955a 100644 --- a/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/main/java/com/baeldung/springai/vectorstore/oracle/QuoteFetcher.java +++ b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/vectorstore/oracle/QuoteFetcher.java @@ -1,11 +1,11 @@ package com.baeldung.springai.vectorstore.oracle; -import org.springframework.core.ParameterizedTypeReference; -import org.springframework.web.client.RestClient; - import java.net.URI; import java.util.List; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.web.client.RestClient; + class QuoteFetcher { private static final String BASE_URL = "https://api.breakingbadquotes.xyz/v1/quotes/"; diff --git a/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/main/java/com/baeldung/springai/vectorstore/oracle/RAGChatbotConfiguration.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/vectorstore/oracle/RAGChatbotConfiguration.java similarity index 84% rename from spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/main/java/com/baeldung/springai/vectorstore/oracle/RAGChatbotConfiguration.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/vectorstore/oracle/RAGChatbotConfiguration.java index 036a7904990c..c994dd78c470 100644 --- a/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/main/java/com/baeldung/springai/vectorstore/oracle/RAGChatbotConfiguration.java +++ b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/vectorstore/oracle/RAGChatbotConfiguration.java @@ -1,5 +1,8 @@ package com.baeldung.springai.vectorstore.oracle; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.client.advisor.vectorstore.QuestionAnswerAdvisor; import org.springframework.ai.chat.model.ChatModel; @@ -12,9 +15,6 @@ import org.springframework.context.annotation.Configuration; import org.springframework.core.io.Resource; -import java.io.IOException; -import java.nio.charset.StandardCharsets; - @Configuration class RAGChatbotConfiguration { @@ -25,15 +25,16 @@ PromptTemplate promptTemplate( @Value("classpath:prompt-template.st") Resource promptTemplate ) throws IOException { String template = promptTemplate.getContentAsString(StandardCharsets.UTF_8); - return PromptTemplate - .builder() - .renderer(StTemplateRenderer - .builder() - .startDelimiterToken('<') - .endDelimiterToken('>') - .build()) - .template(template) - .build(); +// return PromptTemplate +// .builder() +// .renderer(StTemplateRenderer +// .builder() +// .startDelimiterToken('<') +// .endDelimiterToken('>') +// .build()) +// .template(template) +// .build(); + return null; } @Bean diff --git a/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/main/java/com/baeldung/springai/vectorstore/oracle/VectorStoreInitializer.java b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/vectorstore/oracle/VectorStoreInitializer.java similarity index 100% rename from spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/main/java/com/baeldung/springai/vectorstore/oracle/VectorStoreInitializer.java rename to spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/vectorstore/oracle/VectorStoreInitializer.java index d18d2c6d7329..a74bb8fbf228 100644 --- a/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/main/java/com/baeldung/springai/vectorstore/oracle/VectorStoreInitializer.java +++ b/spring-ai-modules/spring-ai-vector-rag/src/main/java/com/baeldung/springai/vectorstore/oracle/VectorStoreInitializer.java @@ -1,14 +1,14 @@ package com.baeldung.springai.vectorstore.oracle; +import java.util.List; +import java.util.Map; + import org.springframework.ai.document.Document; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; -import java.util.List; -import java.util.Map; - @Component class VectorStoreInitializer implements ApplicationRunner { diff --git a/spring-ai-2/src/main/resources/application-airag.yml b/spring-ai-modules/spring-ai-vector-rag/src/main/resources/application-airag.yml similarity index 100% rename from spring-ai-2/src/main/resources/application-airag.yml rename to spring-ai-modules/spring-ai-vector-rag/src/main/resources/application-airag.yml diff --git a/spring-ai-2/src/main/resources/application-chromadb.properties b/spring-ai-modules/spring-ai-vector-rag/src/main/resources/application-chromadb.properties similarity index 100% rename from spring-ai-2/src/main/resources/application-chromadb.properties rename to spring-ai-modules/spring-ai-vector-rag/src/main/resources/application-chromadb.properties diff --git a/spring-ai-2/src/main/resources/application-semantic-search.properties b/spring-ai-modules/spring-ai-vector-rag/src/main/resources/application-semantic-search.properties similarity index 100% rename from spring-ai-2/src/main/resources/application-semantic-search.properties rename to spring-ai-modules/spring-ai-vector-rag/src/main/resources/application-semantic-search.properties diff --git a/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/main/resources/application.yaml b/spring-ai-modules/spring-ai-vector-rag/src/main/resources/application.yaml similarity index 100% rename from spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/main/resources/application.yaml rename to spring-ai-modules/spring-ai-vector-rag/src/main/resources/application.yaml diff --git a/spring-ai/src/main/resources/data/Employee_Handbook.pdf b/spring-ai-modules/spring-ai-vector-rag/src/main/resources/data/Employee_Handbook.pdf similarity index 100% rename from spring-ai/src/main/resources/data/Employee_Handbook.pdf rename to spring-ai-modules/spring-ai-vector-rag/src/main/resources/data/Employee_Handbook.pdf diff --git a/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/main/resources/prompt-template.st b/spring-ai-modules/spring-ai-vector-rag/src/main/resources/prompt-template.st similarity index 100% rename from spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/main/resources/prompt-template.st rename to spring-ai-modules/spring-ai-vector-rag/src/main/resources/prompt-template.st diff --git a/spring-ai/src/main/resources/rag-loader-cld.puml b/spring-ai-modules/spring-ai-vector-rag/src/main/resources/rag-loader-cld.puml similarity index 100% rename from spring-ai/src/main/resources/rag-loader-cld.puml rename to spring-ai-modules/spring-ai-vector-rag/src/main/resources/rag-loader-cld.puml diff --git a/spring-ai/src/main/resources/rag-retriever-cld.puml b/spring-ai-modules/spring-ai-vector-rag/src/main/resources/rag-retriever-cld.puml similarity index 100% rename from spring-ai/src/main/resources/rag-retriever-cld.puml rename to spring-ai-modules/spring-ai-vector-rag/src/main/resources/rag-retriever-cld.puml diff --git a/spring-ai-3/src/test/docker/mongodb/docker-compose.yml b/spring-ai-modules/spring-ai-vector-rag/src/test/docker/mongodb/docker-compose.yml similarity index 100% rename from spring-ai-3/src/test/docker/mongodb/docker-compose.yml rename to spring-ai-modules/spring-ai-vector-rag/src/test/docker/mongodb/docker-compose.yml diff --git a/spring-ai-2/src/test/java/com/baeldung/airag/SpringAiRagApplicationLiveTest.java b/spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/airag/SpringAiRagApplicationLiveTest.java similarity index 90% rename from spring-ai-2/src/test/java/com/baeldung/airag/SpringAiRagApplicationLiveTest.java rename to spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/airag/SpringAiRagApplicationLiveTest.java index 3f63eb1db5ef..82d9b7e99bb6 100644 --- a/spring-ai-2/src/test/java/com/baeldung/airag/SpringAiRagApplicationLiveTest.java +++ b/spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/airag/SpringAiRagApplicationLiveTest.java @@ -1,4 +1,4 @@ -package com.baeldung.airag; +package com.baeldung.springai.airag; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -14,12 +14,12 @@ import org.springframework.ai.document.Document; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; - -import com.baeldung.airag.service.ChatBotService; -import com.baeldung.airag.service.DataLoaderService; -import com.baeldung.airag.service.DataRetrievalService; import org.springframework.context.annotation.Profile; +import com.baeldung.springai.airag.service.ChatBotService; +import com.baeldung.springai.airag.service.DataLoaderService; +import com.baeldung.springai.airag.service.DataRetrievalService; + @Profile("airag") @SpringBootTest(classes = SpringAiRagApplication.class) @TestInstance(TestInstance.Lifecycle.PER_CLASS) diff --git a/spring-ai-2/src/test/java/com/baeldung/springai/chromadb/SemanticSearchLiveTest.java b/spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/chromadb/SemanticSearchLiveTest.java similarity index 100% rename from spring-ai-2/src/test/java/com/baeldung/springai/chromadb/SemanticSearchLiveTest.java rename to spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/chromadb/SemanticSearchLiveTest.java index 5c22edcd4cfb..37fbd1b0be39 100644 --- a/spring-ai-2/src/test/java/com/baeldung/springai/chromadb/SemanticSearchLiveTest.java +++ b/spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/chromadb/SemanticSearchLiveTest.java @@ -2,6 +2,8 @@ import static org.assertj.core.api.Assertions.assertThat; +import java.util.List; + import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import org.springframework.ai.document.Document; @@ -11,8 +13,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Import; -import java.util.List; - @SpringBootTest @Import(TestcontainersConfiguration.class) class SemanticSearchLiveTest { diff --git a/spring-ai-2/src/test/java/com/baeldung/springai/chromadb/TestApplication.java b/spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/chromadb/TestApplication.java similarity index 100% rename from spring-ai-2/src/test/java/com/baeldung/springai/chromadb/TestApplication.java rename to spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/chromadb/TestApplication.java diff --git a/spring-ai-2/src/test/java/com/baeldung/springai/chromadb/TestcontainersConfiguration.java b/spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/chromadb/TestcontainersConfiguration.java similarity index 100% rename from spring-ai-2/src/test/java/com/baeldung/springai/chromadb/TestcontainersConfiguration.java rename to spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/chromadb/TestcontainersConfiguration.java diff --git a/spring-ai-3/src/test/java/com/baeldung/springai/rag/mongodb/RAGMongoDBApplicationManualTest.java b/spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/rag/mongodb/RAGMongoDBApplicationManualTest.java similarity index 99% rename from spring-ai-3/src/test/java/com/baeldung/springai/rag/mongodb/RAGMongoDBApplicationManualTest.java rename to spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/rag/mongodb/RAGMongoDBApplicationManualTest.java index a1c9397a0b73..42fe1f621240 100644 --- a/spring-ai-3/src/test/java/com/baeldung/springai/rag/mongodb/RAGMongoDBApplicationManualTest.java +++ b/spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/rag/mongodb/RAGMongoDBApplicationManualTest.java @@ -1,6 +1,10 @@ package com.baeldung.springai.rag.mongodb; -import com.baeldung.springai.rag.mongodb.config.VectorStoreConfig; +import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.slf4j.Logger; @@ -14,10 +18,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.web.servlet.MockMvc; -import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import com.baeldung.springai.rag.mongodb.config.VectorStoreConfig; /* * To set the test environment: diff --git a/spring-ai-3/src/test/java/com/baeldung/springai/rag/mongodb/config/VectorStoreConfig.java b/spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/rag/mongodb/config/VectorStoreConfig.java similarity index 100% rename from spring-ai-3/src/test/java/com/baeldung/springai/rag/mongodb/config/VectorStoreConfig.java rename to spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/rag/mongodb/config/VectorStoreConfig.java diff --git a/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/test/java/com/baeldung/springai/vectorstore/oracle/OracleDatabaseContainerConnectionDetailsFactory.java b/spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/vectorstore/oracle/OracleDatabaseContainerConnectionDetailsFactory.java similarity index 100% rename from spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/test/java/com/baeldung/springai/vectorstore/oracle/OracleDatabaseContainerConnectionDetailsFactory.java rename to spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/vectorstore/oracle/OracleDatabaseContainerConnectionDetailsFactory.java diff --git a/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/test/java/com/baeldung/springai/vectorstore/oracle/RAGChatbotLiveTest.java b/spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/vectorstore/oracle/RAGChatbotLiveTest.java similarity index 100% rename from spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/test/java/com/baeldung/springai/vectorstore/oracle/RAGChatbotLiveTest.java rename to spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/vectorstore/oracle/RAGChatbotLiveTest.java index f70c85cd2833..6fe125ac3173 100644 --- a/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/test/java/com/baeldung/springai/vectorstore/oracle/RAGChatbotLiveTest.java +++ b/spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/vectorstore/oracle/RAGChatbotLiveTest.java @@ -1,5 +1,7 @@ package com.baeldung.springai.vectorstore.oracle; +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.junit.jupiter.params.ParameterizedTest; @@ -9,8 +11,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Import; -import static org.assertj.core.api.AssertionsForClassTypes.assertThat; - @SpringBootTest @Import(TestcontainersConfiguration.class) @EnabledIfEnvironmentVariable(named = "OPENAI_API_KEY", matches = ".*") diff --git a/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/test/java/com/baeldung/springai/vectorstore/oracle/SimilaritySearchLiveTest.java b/spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/vectorstore/oracle/SimilaritySearchLiveTest.java similarity index 100% rename from spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/test/java/com/baeldung/springai/vectorstore/oracle/SimilaritySearchLiveTest.java rename to spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/vectorstore/oracle/SimilaritySearchLiveTest.java index 2be8a8add34f..ef78acbe9df2 100644 --- a/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/test/java/com/baeldung/springai/vectorstore/oracle/SimilaritySearchLiveTest.java +++ b/spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/vectorstore/oracle/SimilaritySearchLiveTest.java @@ -1,5 +1,9 @@ package com.baeldung.springai.vectorstore.oracle; +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.List; + import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; @@ -11,10 +15,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Import; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; - @SpringBootTest @Import(TestcontainersConfiguration.class) @EnabledIfEnvironmentVariable(named = "OPENAI_API_KEY", matches = ".*") diff --git a/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/test/java/com/baeldung/springai/vectorstore/oracle/TestcontainersConfiguration.java b/spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/vectorstore/oracle/TestcontainersConfiguration.java similarity index 100% rename from spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/src/test/java/com/baeldung/springai/vectorstore/oracle/TestcontainersConfiguration.java rename to spring-ai-modules/spring-ai-vector-rag/src/test/java/com/baeldung/springai/vectorstore/oracle/TestcontainersConfiguration.java diff --git a/spring-ai-3/src/test/resources/application.yml b/spring-ai-modules/spring-ai-vector-rag/src/test/resources/application.yml similarity index 100% rename from spring-ai-3/src/test/resources/application.yml rename to spring-ai-modules/spring-ai-vector-rag/src/test/resources/application.yml diff --git a/spring-ai/src/test/resources/documentation/owl-documentation.md b/spring-ai-modules/spring-ai-vector-rag/src/test/resources/documentation/owl-documentation.md similarity index 100% rename from spring-ai/src/test/resources/documentation/owl-documentation.md rename to spring-ai-modules/spring-ai-vector-rag/src/test/resources/documentation/owl-documentation.md diff --git a/spring-ai/src/test/resources/documentation/rag-documentation.md b/spring-ai-modules/spring-ai-vector-rag/src/test/resources/documentation/rag-documentation.md similarity index 100% rename from spring-ai/src/test/resources/documentation/rag-documentation.md rename to spring-ai-modules/spring-ai-vector-rag/src/test/resources/documentation/rag-documentation.md diff --git a/spring-ai-modules/spring-ai-vector-stores/pom.xml b/spring-ai-modules/spring-ai-vector-stores/pom.xml deleted file mode 100644 index f88fd70ced48..000000000000 --- a/spring-ai-modules/spring-ai-vector-stores/pom.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - 4.0.0 - - - com.baeldung - spring-ai-modules - 0.0.1 - ../pom.xml - - - spring-ai-vector-stores - 0.0.1 - pom - spring-ai-vector-stores - - - spring-ai-oracle - - - diff --git a/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/pom.xml b/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/pom.xml deleted file mode 100644 index 3852f07ff3c9..000000000000 --- a/spring-ai-modules/spring-ai-vector-stores/spring-ai-oracle/pom.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - 4.0.0 - - - com.baeldung - spring-ai-vector-stores - 0.0.1 - ../pom.xml - - - com.baeldung - spring-ai-oracle - 0.0.1 - spring-ai-oracle - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.ai - spring-ai-starter-vector-store-oracle - - - org.springframework.ai - spring-ai-advisors-vector-store - - - org.springframework.ai - spring-ai-starter-model-openai - - - org.springframework.boot - spring-boot-starter-test - test - - - org.springframework.ai - spring-ai-spring-boot-testcontainers - test - - - org.testcontainers - oracle-free - test - - - - - 21 - 1.0.0 - 3.5.4 - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - - - - - org.springframework.ai - spring-ai-bom - ${spring-ai.version} - pom - import - - - - - \ No newline at end of file diff --git a/spring-ai/.gitignore b/spring-ai/.gitignore deleted file mode 100644 index f475e4f82bcd..000000000000 --- a/spring-ai/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -#folders# -.idea -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* - -# Packaged files # -*.jar -*.war -*.ear diff --git a/spring-ai/README.md b/spring-ai/README.md deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/spring-ai/docker-compose.yml b/spring-ai/docker-compose.yml deleted file mode 100644 index 2b4b28761035..000000000000 --- a/spring-ai/docker-compose.yml +++ /dev/null @@ -1,29 +0,0 @@ -services: - postgres: - image: pgvector/pgvector:pg17 - environment: - POSTGRES_DB: vectordb - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - ports: - - "5434:5432" - healthcheck: - test: [ "CMD-SHELL", "pg_isready -U postgres" ] - interval: 10s - timeout: 5s - retries: 5 - - ollama: - image: ollama/ollama:latest - ports: - - "11435:11434" - volumes: - - ollama_data:/root/.ollama - healthcheck: - test: [ "CMD", "curl", "-f", "http://localhost:11435/api/health" ] - interval: 10s - timeout: 5s - retries: 10 - -volumes: - ollama_data: \ No newline at end of file