From 3f6665b2734d6c3a610c069f30fa305ea137f35a Mon Sep 17 00:00:00 2001 From: ddobrin Date: Thu, 25 Jun 2026 08:30:49 -0400 Subject: [PATCH] feat: Updated Spring AI to 2.0.0, ECJ, build works with Java 25 Removed unused dependencies. --- contrib/spring-ai/pom.xml | 12 +----- .../GeminiApiIntegrationTest.java | 10 ++--- .../OpenAiApiIntegrationTest.java | 42 ++++++++++++++----- .../ollama/LocalModelIntegrationTest.java | 2 +- dev/pom.xml | 4 -- pom.xml | 14 ++++--- 6 files changed, 46 insertions(+), 38 deletions(-) diff --git a/contrib/spring-ai/pom.xml b/contrib/spring-ai/pom.xml index e079d8cc9..988239fb4 100644 --- a/contrib/spring-ai/pom.xml +++ b/contrib/spring-ai/pom.xml @@ -29,7 +29,7 @@ Spring AI integration for the Agent Development Kit. - 2.0.0-M3 + 2.0.0 1.21.3 @@ -124,21 +124,11 @@ spring-ai-anthropic test - - org.springframework.ai - spring-ai-vertex-ai-gemini - test - org.springframework.ai spring-ai-google-genai test - - org.springframework.ai - spring-ai-azure-openai - test - org.springframework.ai spring-ai-ollama diff --git a/contrib/spring-ai/src/test/java/com/google/adk/models/springai/integrations/GeminiApiIntegrationTest.java b/contrib/spring-ai/src/test/java/com/google/adk/models/springai/integrations/GeminiApiIntegrationTest.java index 5414cdf99..b6438f365 100644 --- a/contrib/spring-ai/src/test/java/com/google/adk/models/springai/integrations/GeminiApiIntegrationTest.java +++ b/contrib/spring-ai/src/test/java/com/google/adk/models/springai/integrations/GeminiApiIntegrationTest.java @@ -62,7 +62,7 @@ void testSimpleAgentWithRealGeminiApi() throws InterruptedException { GoogleGenAiChatOptions options = GoogleGenAiChatOptions.builder().model(GEMINI_MODEL).build(); GoogleGenAiChatModel geminiModel = - GoogleGenAiChatModel.builder().genAiClient(genAiClient).defaultOptions(options).build(); + GoogleGenAiChatModel.builder().genAiClient(genAiClient).options(options).build(); // Wrap with SpringAI SpringAI springAI = new SpringAI(geminiModel, GEMINI_MODEL); @@ -104,7 +104,7 @@ void testStreamingWithRealGeminiApi() throws InterruptedException { GoogleGenAiChatOptions options = GoogleGenAiChatOptions.builder().model(GEMINI_MODEL).build(); GoogleGenAiChatModel geminiModel = - GoogleGenAiChatModel.builder().genAiClient(genAiClient).defaultOptions(options).build(); + GoogleGenAiChatModel.builder().genAiClient(genAiClient).options(options).build(); SpringAI springAI = new SpringAI(geminiModel, GEMINI_MODEL); @@ -149,7 +149,7 @@ void testAgentWithToolsAndRealApi() { GoogleGenAiChatOptions options = GoogleGenAiChatOptions.builder().model(GEMINI_MODEL).build(); GoogleGenAiChatModel geminiModel = - GoogleGenAiChatModel.builder().genAiClient(genAiClient).defaultOptions(options).build(); + GoogleGenAiChatModel.builder().genAiClient(genAiClient).options(options).build(); LlmAgent agent = LlmAgent.builder() @@ -193,7 +193,7 @@ void testDirectComparisonNonStreamingVsStreaming() throws InterruptedException { GoogleGenAiChatOptions options = GoogleGenAiChatOptions.builder().model(GEMINI_MODEL).build(); GoogleGenAiChatModel geminiModel = - GoogleGenAiChatModel.builder().genAiClient(genAiClient).defaultOptions(options).build(); + GoogleGenAiChatModel.builder().genAiClient(genAiClient).options(options).build(); SpringAI springAI = new SpringAI(geminiModel, GEMINI_MODEL); @@ -298,7 +298,7 @@ void testConfigurationOptions() { Client.builder().apiKey(System.getenv("GOOGLE_API_KEY")).vertexAI(false).build(); GoogleGenAiChatModel geminiModel = - GoogleGenAiChatModel.builder().genAiClient(genAiClient).defaultOptions(options).build(); + GoogleGenAiChatModel.builder().genAiClient(genAiClient).options(options).build(); SpringAI springAI = new SpringAI(geminiModel, GEMINI_MODEL); diff --git a/contrib/spring-ai/src/test/java/com/google/adk/models/springai/integrations/OpenAiApiIntegrationTest.java b/contrib/spring-ai/src/test/java/com/google/adk/models/springai/integrations/OpenAiApiIntegrationTest.java index eb956f828..4fa3a4943 100644 --- a/contrib/spring-ai/src/test/java/com/google/adk/models/springai/integrations/OpenAiApiIntegrationTest.java +++ b/contrib/spring-ai/src/test/java/com/google/adk/models/springai/integrations/OpenAiApiIntegrationTest.java @@ -34,7 +34,6 @@ import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.springframework.ai.openai.OpenAiChatModel; import org.springframework.ai.openai.OpenAiChatOptions; -import org.springframework.ai.openai.api.OpenAiApi; /** * Integration tests with real OpenAI API. @@ -50,8 +49,14 @@ class OpenAiApiIntegrationTest { @Test void testSimpleAgentWithRealOpenAiApi() { // Create OpenAI model using Spring AI's builder pattern - OpenAiApi openAiApi = OpenAiApi.builder().apiKey(System.getenv("OPENAI_API_KEY")).build(); - OpenAiChatModel openAiModel = OpenAiChatModel.builder().openAiApi(openAiApi).build(); + OpenAiChatModel openAiModel = + OpenAiChatModel.builder() + .options( + OpenAiChatOptions.builder() + .apiKey(System.getenv("OPENAI_API_KEY")) + .model(GPT_MODEL) + .build()) + .build(); // Wrap with SpringAI SpringAI springAI = new SpringAI(openAiModel, GPT_MODEL); @@ -84,8 +89,14 @@ void testSimpleAgentWithRealOpenAiApi() { @Test void testStreamingWithRealOpenAiApi() { - OpenAiApi openAiApi = OpenAiApi.builder().apiKey(System.getenv("OPENAI_API_KEY")).build(); - OpenAiChatModel openAiModel = OpenAiChatModel.builder().openAiApi(openAiApi).build(); + OpenAiChatModel openAiModel = + OpenAiChatModel.builder() + .options( + OpenAiChatOptions.builder() + .apiKey(System.getenv("OPENAI_API_KEY")) + .model(GPT_MODEL) + .build()) + .build(); SpringAI springAI = new SpringAI(openAiModel, GPT_MODEL); @@ -124,8 +135,14 @@ void testStreamingWithRealOpenAiApi() { @Test void testAgentWithToolsAndRealApi() { - OpenAiApi openAiApi = OpenAiApi.builder().apiKey(System.getenv("OPENAI_API_KEY")).build(); - OpenAiChatModel openAiModel = OpenAiChatModel.builder().openAiApi(openAiApi).build(); + OpenAiChatModel openAiModel = + OpenAiChatModel.builder() + .options( + OpenAiChatOptions.builder() + .apiKey(System.getenv("OPENAI_API_KEY")) + .model(GPT_MODEL) + .build()) + .build(); LlmAgent agent = LlmAgent.builder() @@ -164,11 +181,14 @@ void testAgentWithToolsAndRealApi() { void testConfigurationOptions() { // Test with custom configuration OpenAiChatOptions options = - OpenAiChatOptions.builder().model(GPT_MODEL).temperature(0.7).maxTokens(100).build(); + OpenAiChatOptions.builder() + .apiKey(System.getenv("OPENAI_API_KEY")) + .model(GPT_MODEL) + .temperature(0.7) + .maxTokens(100) + .build(); - OpenAiApi openAiApi = OpenAiApi.builder().apiKey(System.getenv("OPENAI_API_KEY")).build(); - OpenAiChatModel openAiModel = - OpenAiChatModel.builder().openAiApi(openAiApi).defaultOptions(options).build(); + OpenAiChatModel openAiModel = OpenAiChatModel.builder().options(options).build(); SpringAI springAI = new SpringAI(openAiModel, GPT_MODEL); diff --git a/contrib/spring-ai/src/test/java/com/google/adk/models/springai/ollama/LocalModelIntegrationTest.java b/contrib/spring-ai/src/test/java/com/google/adk/models/springai/ollama/LocalModelIntegrationTest.java index ab3d0f903..1c8e020be 100644 --- a/contrib/spring-ai/src/test/java/com/google/adk/models/springai/ollama/LocalModelIntegrationTest.java +++ b/contrib/spring-ai/src/test/java/com/google/adk/models/springai/ollama/LocalModelIntegrationTest.java @@ -51,7 +51,7 @@ static void setUpBeforeClass() { OllamaChatOptions.builder().model(ollamaContainer.getModelName()).build(); OllamaChatModel chatModel = - OllamaChatModel.builder().ollamaApi(ollamaApi).defaultOptions(options).build(); + OllamaChatModel.builder().ollamaApi(ollamaApi).options(options).build(); springAI = new SpringAI(chatModel, ollamaContainer.getModelName()); } diff --git a/dev/pom.xml b/dev/pom.xml index fb5443981..f0f0c3bff 100644 --- a/dev/pom.xml +++ b/dev/pom.xml @@ -81,10 +81,6 @@ guru.nidi graphviz-java - - org.eclipse.jdt - ecj - io.opentelemetry opentelemetry-sdk-common diff --git a/pom.xml b/pom.xml index 5cb8d5987..c06a75880 100644 --- a/pom.xml +++ b/pom.xml @@ -61,7 +61,6 @@ 5.3.2 3.7.0 0.18.1 - 3.41.0 3.9.0 1.12.2 2.0.17 @@ -264,11 +263,6 @@ graphviz-java ${graphviz.version} - - org.eclipse.jdt - ecj - ${ecj.version} - org.apache.maven maven-plugin-api @@ -328,6 +322,14 @@ ${java.version} ${maven.compiler.release} true + + false com.google.auto.value