From 04814e7784f3cb8f83d5fcb012d91ec3b6acd1d2 Mon Sep 17 00:00:00 2001 From: mmeckes Date: Fri, 6 Jun 2025 15:14:38 +0100 Subject: [PATCH 1/3] Added missing vectorstore dependency --- samples/spring-ai-agent/pom.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/samples/spring-ai-agent/pom.xml b/samples/spring-ai-agent/pom.xml index 86ea36db..36f686d2 100644 --- a/samples/spring-ai-agent/pom.xml +++ b/samples/spring-ai-agent/pom.xml @@ -48,6 +48,10 @@ org.springframework.ai spring-ai-starter-vector-store-pgvector + + org.springframework.ai + spring-ai-advisors-vector-store + From 32fbdd2815ead66661698dba9141140737cbd779 Mon Sep 17 00:00:00 2001 From: mmeckes Date: Fri, 6 Jun 2025 15:50:03 +0100 Subject: [PATCH 2/3] Added missing bedrock embedding dependency. Created test main and added pgvector test container config. --- samples/spring-ai-agent/pom.xml | 14 ++++++ .../ai/agent/TestAiAgentApplication.java | 46 +++++++++++++++++++ .../src/test/resources/application-test.yaml | 14 ++++++ 3 files changed, 74 insertions(+) create mode 100644 samples/spring-ai-agent/src/test/java/com/aws/workshop/ai/agent/TestAiAgentApplication.java create mode 100644 samples/spring-ai-agent/src/test/resources/application-test.yaml diff --git a/samples/spring-ai-agent/pom.xml b/samples/spring-ai-agent/pom.xml index 36f686d2..5bc84d4a 100644 --- a/samples/spring-ai-agent/pom.xml +++ b/samples/spring-ai-agent/pom.xml @@ -42,6 +42,10 @@ org.springframework.ai spring-ai-starter-model-bedrock-converse + + org.springframework.ai + spring-ai-starter-model-bedrock + @@ -87,11 +91,21 @@ ${testcontainers.version} test + + org.springframework.boot + spring-boot-testcontainers + test + org.springframework.boot spring-boot-starter-test test + + org.springframework.boot + spring-boot-devtools + test + diff --git a/samples/spring-ai-agent/src/test/java/com/aws/workshop/ai/agent/TestAiAgentApplication.java b/samples/spring-ai-agent/src/test/java/com/aws/workshop/ai/agent/TestAiAgentApplication.java new file mode 100644 index 00000000..5eaf7847 --- /dev/null +++ b/samples/spring-ai-agent/src/test/java/com/aws/workshop/ai/agent/TestAiAgentApplication.java @@ -0,0 +1,46 @@ + +import com.aws.workshop.ai.agent.AiAgentApplication; +import org.springframework.ai.document.Document; +import org.springframework.ai.vectorstore.VectorStore; +import org.springframework.boot.ApplicationRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.devtools.restart.RestartScope; +import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; + +import java.util.List; +import java.util.Map; + +public class TestAiAgentApplication { + + + public static void main(String[] args) { + System.out.println("!!!!!Starting test application"); + System.setProperty("spring.sql.init.mode", "always"); + SpringApplication.from(AiAgentApplication::main) + .with(TestContainersConfiguration.class) + .run(args); + } +} + + +@Configuration +@Testcontainers +class TestContainersConfiguration { + + @Bean + @ServiceConnection + @RestartScope + PostgreSQLContainer postgreSQLContainer() { + System.out.println("Starting postgreSQL container"); + var image = DockerImageName.parse("pgvector/pgvector:pg16") + .asCompatibleSubstituteFor("postgres"); + return new PostgreSQLContainer<>(image); + } +} + + diff --git a/samples/spring-ai-agent/src/test/resources/application-test.yaml b/samples/spring-ai-agent/src/test/resources/application-test.yaml new file mode 100644 index 00000000..f37fdbe1 --- /dev/null +++ b/samples/spring-ai-agent/src/test/resources/application-test.yaml @@ -0,0 +1,14 @@ +spring: + sql: + init: + mode: always + jpa: + hibernate: + ddl-auto: none + datasource: + driver-class-name: org.postgresql.Driver + ai: + vectorstore: + pgvector: + dimensions: 1024 + initialize-schema: true From 62c23dde81d9d7df35c551badb3a00217330c75a Mon Sep 17 00:00:00 2001 From: mmeckes Date: Fri, 6 Jun 2025 16:00:43 +0100 Subject: [PATCH 3/3] Updated readme with test-run command --- samples/spring-ai-agent/README.md | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/samples/spring-ai-agent/README.md b/samples/spring-ai-agent/README.md index 06805ec5..fd742b5c 100644 --- a/samples/spring-ai-agent/README.md +++ b/samples/spring-ai-agent/README.md @@ -6,19 +6,8 @@ ## Examples HTTP requests chat-requests.http -## Prerequisite for external memory: PostgreSQL, for application started locally without container -``` -docker run --name my-postgres \ ✘ 125 --e POSTGRES_DB=ai-agent-db \ --e POSTGRES_USER=chatuser \ --e POSTGRES_PASSWORD=chatpass \ --p 5432:5432 \ --d pgvector/pgvector:pg16 -``` +## Run locally +Run with test run to connect a pg-vector test containers for local dev -## Build Docker Image with JIB plugin -- mvn compile jib:dockerBuild - -## Run postgres and spring-ai-agent containers -docker-compose up +`mvn spring-boot:test-run`