diff --git a/README.md b/README.md index 107a6967b..d778c2749 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ import com.google.adk.tools.GoogleSearchTool; LlmAgent rootAgent = LlmAgent.builder() .name("search_assistant") .description("An assistant that can search the web.") - .model("gemini-2.0-flash") // Or your preferred models + .model("gemini-2.5-flash") // Or your preferred models .instruction("You are a helpful assistant. Answer user questions using Google Search when needed.") .tools(new GoogleSearchTool()) .build(); diff --git a/TRANSCRIPTION_CAPABILITY.md b/TRANSCRIPTION_CAPABILITY.md index 02b5770a2..bc9fdc85a 100644 --- a/TRANSCRIPTION_CAPABILITY.md +++ b/TRANSCRIPTION_CAPABILITY.md @@ -94,7 +94,7 @@ FunctionTool transcriptionTool = TranscriptionTool.create(); if (transcriptionTool != null) { LlmAgent agent = LlmAgent.builder() .name("audio_agent") - .model("gemini-2.0-flash") + .model("gemini-2.5-flash") .instruction("Analyze audio files. Use transcribe_audio tool when needed.") .addTool(transcriptionTool) .build(); diff --git a/contrib/langchain4j/src/test/java/com/google/adk/models/langchain4j/LangChain4jIntegrationTest.java b/contrib/langchain4j/src/test/java/com/google/adk/models/langchain4j/LangChain4jIntegrationTest.java index 5b6d3f3ad..76078504c 100644 --- a/contrib/langchain4j/src/test/java/com/google/adk/models/langchain4j/LangChain4jIntegrationTest.java +++ b/contrib/langchain4j/src/test/java/com/google/adk/models/langchain4j/LangChain4jIntegrationTest.java @@ -45,7 +45,7 @@ class LangChain4jIntegrationTest { public static final String CLAUDE_4_6_SONNET = "claude-sonnet-4-6"; - public static final String GEMINI_2_0_FLASH = "gemini-2.0-flash"; + public static final String GEMINI_2_0_FLASH = "gemini-2.5-flash"; public static final String GPT_4_O_MINI = "gpt-4o-mini"; @Test @@ -404,7 +404,7 @@ void testStreamingRunConfig() { // GoogleAiGeminiStreamingChatModel streamingModel = // GoogleAiGeminiStreamingChatModel.builder() // .apiKey(System.getenv("GOOGLE_API_KEY")) - // .modelName("gemini-2.0-flash") + // .modelName("gemini-2.5-flash") // .build(); LlmAgent agent = diff --git a/contrib/samples/a2a_basic/A2AAgent.java b/contrib/samples/a2a_basic/A2AAgent.java index e08a87a67..03b0933f3 100644 --- a/contrib/samples/a2a_basic/A2AAgent.java +++ b/contrib/samples/a2a_basic/A2AAgent.java @@ -34,7 +34,7 @@ public static ImmutableMap rollDie(int sides, ToolContext toolCo public static final LlmAgent ROLL_AGENT = LlmAgent.builder() .name("roll_agent") - .model("gemini-2.0-flash") + .model("gemini-2.5-flash") .description("Handles rolling dice of different sizes.") .instruction( """ @@ -48,7 +48,7 @@ public static LlmAgent createRootAgent(String primeAgentBaseUrl) { BaseAgent primeAgent = createRemoteAgent(primeAgentBaseUrl); return LlmAgent.builder() .name("root_agent") - .model("gemini-2.0-flash") + .model("gemini-2.5-flash") .instruction( """ You can roll dice locally and delegate prime-checking to the remote prime_agent. diff --git a/contrib/samples/configagent/core_callback_config/root_agent.yaml b/contrib/samples/configagent/core_callback_config/root_agent.yaml index 634b7abfb..9921bb771 100644 --- a/contrib/samples/configagent/core_callback_config/root_agent.yaml +++ b/contrib/samples/configagent/core_callback_config/root_agent.yaml @@ -1,6 +1,6 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/google/adk-python/refs/heads/main/src/google/adk/agents/config_schemas/AgentConfig.json name: hello_world_agent -model: gemini-2.0-flash +model: gemini-2.5-flash description: hello world agent that can roll a dice and check prime numbers. instruction: | You roll dice and answer questions about the outcome of the dice rolls. diff --git a/contrib/samples/configagent/core_generate_content_config_config/root_agent.yaml b/contrib/samples/configagent/core_generate_content_config_config/root_agent.yaml index 6c1085392..b49219d91 100644 --- a/contrib/samples/configagent/core_generate_content_config_config/root_agent.yaml +++ b/contrib/samples/configagent/core_generate_content_config_config/root_agent.yaml @@ -1,6 +1,6 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/google/adk-python/refs/heads/main/src/google/adk/agents/config_schemas/AgentConfig.json name: search_agent -model: gemini-2.0-flash +model: gemini-2.5-flash description: 'an agent whose job it is to perform Google search queries and answer questions about the results.' instruction: You are an agent whose job is to perform Google search queries and answer questions about the results. tools: diff --git a/contrib/samples/configagent/sub_agents_config/root_agent.yaml b/contrib/samples/configagent/sub_agents_config/root_agent.yaml index ede913332..b36ae50da 100644 --- a/contrib/samples/configagent/sub_agents_config/root_agent.yaml +++ b/contrib/samples/configagent/sub_agents_config/root_agent.yaml @@ -1,6 +1,6 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/google/adk-python/refs/heads/main/src/google/adk/agents/config_schemas/AgentConfig.json name: root_agent -model: gemini-2.0-flash +model: gemini-2.5-flash description: Root agent instruction: | If the user query is about life, you should route it to the life sub-agent. diff --git a/contrib/samples/configagent/tool_builtin_config/root_agent.yaml b/contrib/samples/configagent/tool_builtin_config/root_agent.yaml index 6986fe4c8..a37bc02cc 100644 --- a/contrib/samples/configagent/tool_builtin_config/root_agent.yaml +++ b/contrib/samples/configagent/tool_builtin_config/root_agent.yaml @@ -1,6 +1,6 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/google/adk-python/refs/heads/main/src/google/adk/agents/config_schemas/AgentConfig.json name: search_agent -model: gemini-2.0-flash +model: gemini-2.5-flash description: 'an agent whose job it is to perform Google search queries and answer questions about the results.' instruction: You are an agent whose job is to perform Google search queries and answer questions about the results. tools: diff --git a/contrib/samples/configagent/tool_functions_config/root_agent.yaml b/contrib/samples/configagent/tool_functions_config/root_agent.yaml index 61ae47c4e..bcb296edf 100644 --- a/contrib/samples/configagent/tool_functions_config/root_agent.yaml +++ b/contrib/samples/configagent/tool_functions_config/root_agent.yaml @@ -1,6 +1,6 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/google/adk-python/refs/heads/main/src/google/adk/agents/config_schemas/AgentConfig.json name: hello_world_agent -model: gemini-2.0-flash +model: gemini-2.5-flash description: 'hello world agent that can roll a dice and check prime numbers.' instruction: | You roll dice and answer questions about the outcome of the dice rolls. diff --git a/contrib/samples/configagent/tool_mcp_stdio_file_system_config/root_agent.yaml b/contrib/samples/configagent/tool_mcp_stdio_file_system_config/root_agent.yaml index f8415234a..32adedae7 100644 --- a/contrib/samples/configagent/tool_mcp_stdio_file_system_config/root_agent.yaml +++ b/contrib/samples/configagent/tool_mcp_stdio_file_system_config/root_agent.yaml @@ -1,6 +1,6 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/google/adk-python/refs/heads/main/src/google/adk/agents/config_schemas/AgentConfig.json name: filesystem_agent -model: gemini-2.0-flash +model: gemini-2.5-flash instruction: | You are a file system assistant. Use the provided tools to read, write, search, and manage files and directories. Ask clarifying questions when unsure about file operations. diff --git a/contrib/samples/helloworld/HelloWorldAgent.java b/contrib/samples/helloworld/HelloWorldAgent.java index cb949620f..c06812af5 100644 --- a/contrib/samples/helloworld/HelloWorldAgent.java +++ b/contrib/samples/helloworld/HelloWorldAgent.java @@ -29,7 +29,7 @@ public class HelloWorldAgent { LlmAgent.builder() .name("data_processing_agent") .description("hello world agent that can roll a dice and check prime numbers.") - .model("gemini-2.0-flash") + .model("gemini-2.5-flash") .instruction( """ You roll dice and answer questions about the outcome of the dice rolls. diff --git a/contrib/samples/mcpfilesystem/McpFilesystemAgent.java b/contrib/samples/mcpfilesystem/McpFilesystemAgent.java index fd35792b8..581c56769 100644 --- a/contrib/samples/mcpfilesystem/McpFilesystemAgent.java +++ b/contrib/samples/mcpfilesystem/McpFilesystemAgent.java @@ -25,7 +25,7 @@ public final class McpFilesystemAgent { LlmAgent.builder() .name("filesystem_agent") .description("Assistant that performs file operations through the MCP filesystem server.") - .model("gemini-2.0-flash") + .model("gemini-2.5-flash") .instruction( """ You are a file system assistant. Use the provided tools to read, write, search, and manage diff --git a/contrib/spring-ai/README.md b/contrib/spring-ai/README.md index 0ce7de4fe..229ec4f46 100644 --- a/contrib/spring-ai/README.md +++ b/contrib/spring-ai/README.md @@ -558,7 +558,7 @@ The library works with any Spring AI provider: #### Gemini - **System Messages:** Only one system message allowed - library automatically combines multiple system messages -- **Model Names:** Use `gemini-2.0-flash`, `gemini-1.5-pro` +- **Model Names:** Use `gemini-2.5-flash`, `gemini-1.5-pro` - **API Key:** Requires `GOOGLE_API_KEY` environment variable #### Anthropic diff --git a/contrib/spring-ai/src/test/java/com/google/adk/models/springai/SpringAIIntegrationTest.java b/contrib/spring-ai/src/test/java/com/google/adk/models/springai/SpringAIIntegrationTest.java index 328df0415..898f7b338 100644 --- a/contrib/spring-ai/src/test/java/com/google/adk/models/springai/SpringAIIntegrationTest.java +++ b/contrib/spring-ai/src/test/java/com/google/adk/models/springai/SpringAIIntegrationTest.java @@ -43,7 +43,7 @@ */ class SpringAIIntegrationTest { - public static final String GEMINI_2_5_FLASH = "gemini-2.0-flash"; + public static final String GEMINI_2_5_FLASH = "gemini-2.5-flash"; @Test void testSimpleAgentWithDummyChatModel() { 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..0a27d6b11 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 @@ -31,6 +31,8 @@ import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; +import org.junit.jupiter.api.Assumptions; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.springframework.ai.google.genai.GoogleGenAiChatModel; @@ -48,10 +50,30 @@ @EnabledIfEnvironmentVariable(named = "GOOGLE_API_KEY", matches = "\\S+") class GeminiApiIntegrationTest { - private static final String GEMINI_MODEL = "gemini-2.0-flash"; + private static final String GEMINI_MODEL = "gemini-2.5-flash"; + + private void handlePotentialRateLimit(Throwable t) throws Throwable { + Throwable current = t; + while (current != null) { + if (current.getMessage() != null + && (current.getMessage().contains("429") + || current.getMessage().contains("Resource exhausted") + || current.getMessage().contains("Quota"))) { + Assumptions.assumeTrue(false, "Rate limit exceeded, skipping test"); + } + current = current.getCause(); + } + throw t; + } + + @BeforeEach + void setUp() throws InterruptedException { + // Add delay before each test to avoid rate limiting (429 Resource Exhausted) + Thread.sleep(10000); + } @Test - void testSimpleAgentWithRealGeminiApi() throws InterruptedException { + void testSimpleAgentWithRealGeminiApi() throws Throwable { // Add delay to avoid rapid requests Thread.sleep(2000); @@ -77,7 +99,13 @@ void testSimpleAgentWithRealGeminiApi() throws InterruptedException { .build(); // Test the agent - List events = TestUtils.askAgent(agent, false, "What is a photon?"); + List events; + try { + events = TestUtils.askAgent(agent, false, "What is a photon?"); + } catch (Exception e) { + handlePotentialRateLimit(e); + return; + } // Verify response assertThat(events).hasSize(1); @@ -94,7 +122,7 @@ void testSimpleAgentWithRealGeminiApi() throws InterruptedException { } @Test - void testStreamingWithRealGeminiApi() throws InterruptedException { + void testStreamingWithRealGeminiApi() throws Throwable { // Add delay to avoid rapid requests Thread.sleep(2000); @@ -121,8 +149,13 @@ void testStreamingWithRealGeminiApi() throws InterruptedException { // Wait for completion testSubscriber.awaitDone(30, TimeUnit.SECONDS); - testSubscriber.assertComplete(); - testSubscriber.assertNoErrors(); + try { + testSubscriber.assertComplete(); + testSubscriber.assertNoErrors(); + } catch (AssertionError e) { + handlePotentialRateLimit(e); + throw e; + } // Verify streaming responses List responses = testSubscriber.values(); @@ -142,7 +175,7 @@ void testStreamingWithRealGeminiApi() throws InterruptedException { } @Test - void testAgentWithToolsAndRealApi() { + void testAgentWithToolsAndRealApi() throws Throwable { Client genAiClient = Client.builder().apiKey(System.getenv("GOOGLE_API_KEY")).vertexAI(false).build(); @@ -163,8 +196,13 @@ void testAgentWithToolsAndRealApi() { .tools(FunctionTool.create(WeatherTools.class, "getWeatherInfo")) .build(); - List events = - TestUtils.askAgent(agent, false, "What's the weather like in San Francisco?"); + List events; + try { + events = TestUtils.askAgent(agent, false, "What's the weather like in San Francisco?"); + } catch (Exception e) { + handlePotentialRateLimit(e); + return; + } // Should have multiple events: function call, function response, final answer assertThat(events).hasSizeGreaterThanOrEqualTo(1); @@ -185,7 +223,7 @@ void testAgentWithToolsAndRealApi() { } @Test - void testDirectComparisonNonStreamingVsStreaming() throws InterruptedException { + void testDirectComparisonNonStreamingVsStreaming() throws Throwable { // Test both non-streaming and streaming with the same model to compare behavior Client genAiClient = Client.builder().apiKey(System.getenv("GOOGLE_API_KEY")).vertexAI(false).build(); @@ -209,8 +247,13 @@ void testDirectComparisonNonStreamingVsStreaming() throws InterruptedException { TestSubscriber nonStreamingSubscriber = springAI.generateContent(request, false).test(); nonStreamingSubscriber.awaitDone(30, TimeUnit.SECONDS); - nonStreamingSubscriber.assertComplete(); - nonStreamingSubscriber.assertNoErrors(); + try { + nonStreamingSubscriber.assertComplete(); + nonStreamingSubscriber.assertNoErrors(); + } catch (AssertionError e) { + handlePotentialRateLimit(e); + throw e; + } // Add assertions for non-streaming response List nonStreamingResponses = nonStreamingSubscriber.values(); @@ -240,8 +283,13 @@ void testDirectComparisonNonStreamingVsStreaming() throws InterruptedException { TestSubscriber streamingSubscriber = springAI.generateContent(request, true).test(); streamingSubscriber.awaitDone(30, TimeUnit.SECONDS); - streamingSubscriber.assertComplete(); - streamingSubscriber.assertNoErrors(); + try { + streamingSubscriber.assertComplete(); + streamingSubscriber.assertNoErrors(); + } catch (AssertionError e) { + handlePotentialRateLimit(e); + throw e; + } // Add assertions for streaming responses List streamingResponses = streamingSubscriber.values(); @@ -284,7 +332,7 @@ void testDirectComparisonNonStreamingVsStreaming() throws InterruptedException { } @Test - void testConfigurationOptions() { + void testConfigurationOptions() throws Throwable { // Test with custom configuration GoogleGenAiChatOptions options = GoogleGenAiChatOptions.builder() @@ -314,8 +362,13 @@ void testConfigurationOptions() { TestSubscriber testSubscriber = springAI.generateContent(request, false).test(); testSubscriber.awaitDone(15, TimeUnit.SECONDS); - testSubscriber.assertComplete(); - testSubscriber.assertNoErrors(); + try { + testSubscriber.assertComplete(); + testSubscriber.assertNoErrors(); + } catch (AssertionError e) { + handlePotentialRateLimit(e); + throw e; + } List responses = testSubscriber.values(); assertThat(responses).hasSize(1); diff --git a/core/src/main/java/com/google/adk/agents/LlmAgent.java b/core/src/main/java/com/google/adk/agents/LlmAgent.java index 5aa5f2e3b..388651a3e 100644 --- a/core/src/main/java/com/google/adk/agents/LlmAgent.java +++ b/core/src/main/java/com/google/adk/agents/LlmAgent.java @@ -614,7 +614,7 @@ public LlmAgent build() { *
{@code
      * LlmAgent.builder()
      *     .name("MyAgent")
-     *     .model("gemini-2.0-flash-exp")
+     *     .model("gemini-2.5-flash-exp")
      *     .instruction("You are helpful")
      *     .toA2aServerAndStart();
      * }
@@ -639,7 +639,7 @@ public void toA2aServerAndStart() throws IOException, InterruptedException { *
{@code
      * LlmAgent.builder()
      *     .name("MyAgent")
-     *     .model("gemini-2.0-flash-exp")
+     *     .model("gemini-2.5-flash-exp")
      *     .instruction("You are helpful")
      *     .toA2aServerAndStart(5066);
      * }
@@ -666,7 +666,7 @@ public void toA2aServerAndStart(int port) throws IOException, InterruptedExcepti *
{@code
      * LlmAgent.builder()
      *     .name("MyAgent")
-     *     .model("gemini-2.0-flash-exp")
+     *     .model("gemini-2.5-flash-exp")
      *     .instruction("You are helpful")
      *     .toA2a()
      *     .port(5066)
diff --git a/core/src/main/java/com/google/adk/artifacts/PostgresArtifactService.java b/core/src/main/java/com/google/adk/artifacts/PostgresArtifactService.java
index 872367f49..74c60bd8e 100644
--- a/core/src/main/java/com/google/adk/artifacts/PostgresArtifactService.java
+++ b/core/src/main/java/com/google/adk/artifacts/PostgresArtifactService.java
@@ -266,4 +266,4 @@ private String extractMimeTypeFromPart(Part part) {
   public void close() {
     dbHelper.close();
   }
-}
\ No newline at end of file
+}
diff --git a/core/src/main/java/com/google/adk/models/Gemini.java b/core/src/main/java/com/google/adk/models/Gemini.java
index 6f145e1de..0082148bc 100644
--- a/core/src/main/java/com/google/adk/models/Gemini.java
+++ b/core/src/main/java/com/google/adk/models/Gemini.java
@@ -67,7 +67,7 @@ public class Gemini extends BaseLlm {
   /**
    * Constructs a new Gemini instance.
    *
-   * @param modelName The name of the Gemini model to use (e.g., "gemini-2.0-flash").
+   * @param modelName The name of the Gemini model to use (e.g., "gemini-2.5-flash").
    * @param apiClient The genai {@link com.google.genai.Client} instance for making API calls.
    */
   public Gemini(String modelName, Client apiClient) {
@@ -78,7 +78,7 @@ public Gemini(String modelName, Client apiClient) {
   /**
    * Constructs a new Gemini instance with a Google Gemini API key.
    *
-   * @param modelName The name of the Gemini model to use (e.g., "gemini-2.0-flash").
+   * @param modelName The name of the Gemini model to use (e.g., "gemini-2.5-flash").
    * @param apiKey The Google Gemini API key.
    */
   public Gemini(String modelName, String apiKey) {
@@ -94,7 +94,7 @@ public Gemini(String modelName, String apiKey) {
   /**
    * Constructs a new Gemini instance with a Google Gemini API key.
    *
-   * @param modelName The name of the Gemini model to use (e.g., "gemini-2.0-flash").
+   * @param modelName The name of the Gemini model to use (e.g., "gemini-2.5-flash").
    * @param vertexCredentials The Vertex AI credentials to access the Gemini model.
    */
   public Gemini(String modelName, VertexCredentials vertexCredentials) {
@@ -131,7 +131,7 @@ private Builder() {}
     /**
      * Sets the name of the Gemini model to use.
      *
-     * @param modelName The model name (e.g., "gemini-2.0-flash").
+     * @param modelName The model name (e.g., "gemini-2.5-flash").
      * @return This builder.
      */
     @CanIgnoreReturnValue
diff --git a/core/src/main/java/com/google/adk/models/GeminiLlmConnection.java b/core/src/main/java/com/google/adk/models/GeminiLlmConnection.java
index 16523793f..9becaa0b2 100644
--- a/core/src/main/java/com/google/adk/models/GeminiLlmConnection.java
+++ b/core/src/main/java/com/google/adk/models/GeminiLlmConnection.java
@@ -75,7 +75,7 @@ public final class GeminiLlmConnection implements BaseLlmConnection {
    * Establishes a new connection.
    *
    * @param apiClient The API client for communication.
-   * @param modelName The specific Gemini model endpoint (e.g., "gemini-2.0-flash).
+   * @param modelName The specific Gemini model endpoint (e.g., "gemini-2.5-flash).
    * @param connectConfig Configuration parameters for the live session.
    */
   GeminiLlmConnection(Client apiClient, String modelName, LiveConnectConfig connectConfig) {
diff --git a/core/src/main/java/com/google/adk/store/PostgresArtifactStore.java b/core/src/main/java/com/google/adk/store/PostgresArtifactStore.java
index d472bccac..d31be8676 100644
--- a/core/src/main/java/com/google/adk/store/PostgresArtifactStore.java
+++ b/core/src/main/java/com/google/adk/store/PostgresArtifactStore.java
@@ -678,4 +678,4 @@ public ArtifactData(
       this.metadata = metadata;
     }
   }
-}
\ No newline at end of file
+}
diff --git a/core/src/main/java/com/google/adk/utils/ModelNameUtils.java b/core/src/main/java/com/google/adk/utils/ModelNameUtils.java
index 56fd6dd95..02f228ac7 100644
--- a/core/src/main/java/com/google/adk/utils/ModelNameUtils.java
+++ b/core/src/main/java/com/google/adk/utils/ModelNameUtils.java
@@ -110,7 +110,7 @@ public static boolean canUseOutputSchemaWithTools(String modelString) {
    * Extract the actual model name from either simple or path-based format.
    *
    * @param modelString Either a simple model name like "gemini-2.5-pro" or a path-based model name
-   *     like "projects/.../models/gemini-2.0-flash-001"
+   *     like "projects/.../models/gemini-2.5-flash-001"
    * @return The extracted model name (e.g., "gemini-2.5-pro")
    */
   private static String extractModelName(String modelString) {
diff --git a/core/src/test/java/com/google/adk/agents/ConfigAgentUtilsTest.java b/core/src/test/java/com/google/adk/agents/ConfigAgentUtilsTest.java
index 4f6ea6104..4eb2a3b09 100644
--- a/core/src/test/java/com/google/adk/agents/ConfigAgentUtilsTest.java
+++ b/core/src/test/java/com/google/adk/agents/ConfigAgentUtilsTest.java
@@ -797,7 +797,7 @@ public void fromConfig_withOutputKey_setsOutputKeyOnAgent()
         """
         agent_class: LlmAgent
         name: InitialWriterAgent
-        model: gemini-2.0-flash
+        model: gemini-2.5-flash
         description: Writes the initial document draft based on the topic
         instruction: |
           You are a Creative Writing Assistant tasked with starting a story.
@@ -844,7 +844,7 @@ public void fromConfig_withOutputKeyAndOtherFields_parsesAllFields()
         """
         agent_class: LlmAgent
         name: CompleteAgentWithOutputKey
-        model: gemini-2.0-flash
+        model: gemini-2.5-flash
         description: Agent with output key and other configurations
         instruction: Process and store output
         output_key: result_data
@@ -935,7 +935,7 @@ class TestRegistry extends ComponentRegistry {
         description: Agent with examples configured via tool
         instruction: You are a test agent
         agent_class: LlmAgent
-        model: gemini-2.0-flash
+        model: gemini-2.5-flash
         tools:
           - name: multi_agent_llm_config.example_tool
         """);
@@ -952,7 +952,7 @@ class TestRegistry extends ComponentRegistry {
     LlmAgent llmAgent = (LlmAgent) agent;
 
     // Process tools to verify ExampleTool appends the examples to the request
-    LlmRequest.Builder requestBuilder = LlmRequest.builder().model("gemini-2.0-flash");
+    LlmRequest.Builder requestBuilder = LlmRequest.builder().model("gemini-2.5-flash");
     InvocationContext context = TestUtils.createInvocationContext(agent);
     llmAgent
         .canonicalTools(new ReadonlyContext(context))
@@ -1020,7 +1020,7 @@ public void resolveSubAgents_withLifeAgentUsingCode_resolvesSuccessfully()
         mainAgentFile.toPath(),
         """
         name: root_agent
-        model: gemini-2.0-flash
+        model: gemini-2.5-flash
         description: Root agent
         instruction: |
           If the user query is about life, you should route it to the life sub-agent.
diff --git a/core/src/test/java/com/google/adk/agents/YamlPreprocessorTest.java b/core/src/test/java/com/google/adk/agents/YamlPreprocessorTest.java
index cecaa4532..c29dc2f24 100644
--- a/core/src/test/java/com/google/adk/agents/YamlPreprocessorTest.java
+++ b/core/src/test/java/com/google/adk/agents/YamlPreprocessorTest.java
@@ -60,7 +60,7 @@ public void testNestedObjectConversion() throws Exception {
     String input =
         """
         name: test_agent
-        model: gemini-2.0-flash
+        model: gemini-2.5-flash
         disallow_transfer_to_parent: false
         disallow_transfer_to_peers: true
         generate_content_config:
@@ -346,7 +346,7 @@ public void testCompleteAgentConfigExample() throws Exception {
     String input =
         """
         name: search_agent
-        model: gemini-2.0-flash
+        model: gemini-2.5-flash
         disallow_transfer_to_parent: false
         disallow_transfer_to_peers: true
         system_prompt: You are a helpful assistant
@@ -378,7 +378,7 @@ public void testCompleteAgentConfigExample() throws Exception {
         YAML_MAPPER.readValue(result, new TypeReference>() {});
 
     assertEquals("search_agent", parsed.get("name"));
-    assertEquals("gemini-2.0-flash", parsed.get("model"));
+    assertEquals("gemini-2.5-flash", parsed.get("model"));
     assertTrue(parsed.containsKey("disallowTransferToParent"));
     assertTrue(parsed.containsKey("disallowTransferToPeers"));
     assertTrue(parsed.containsKey("systemPrompt"));
diff --git a/core/src/test/java/com/google/adk/artifacts/PostgresArtifactServiceTest.java b/core/src/test/java/com/google/adk/artifacts/PostgresArtifactServiceTest.java
index caf6e129e..53e6d1e20 100644
--- a/core/src/test/java/com/google/adk/artifacts/PostgresArtifactServiceTest.java
+++ b/core/src/test/java/com/google/adk/artifacts/PostgresArtifactServiceTest.java
@@ -362,4 +362,4 @@ public void testMultiTenancy_IsolatedByAppNameUserIdSessionId() throws Exception
         .saveArtifact(
             eq(appName2), eq(userId2), eq(sessionId2), eq(filename), any(), anyString(), isNull());
   }
-}
\ No newline at end of file
+}
diff --git a/core/src/test/java/com/google/adk/flows/llmflows/OutputSchemaTest.java b/core/src/test/java/com/google/adk/flows/llmflows/OutputSchemaTest.java
index ffd56de6c..b567b19f5 100644
--- a/core/src/test/java/com/google/adk/flows/llmflows/OutputSchemaTest.java
+++ b/core/src/test/java/com/google/adk/flows/llmflows/OutputSchemaTest.java
@@ -61,7 +61,7 @@ public final class OutputSchemaTest {
   public void setUp() {
     outputSchemaProcessor = new OutputSchema();
     testLlm = createTestLlm(LlmResponse.builder().build());
-    initialRequest = LlmRequest.builder().model("gemini-2.0-pro").build();
+    initialRequest = LlmRequest.builder().model("gemini-2.5-pro").build();
   }
 
   public static class TestTool extends BaseTool {
diff --git a/core/src/test/java/com/google/adk/tools/ExampleToolTest.java b/core/src/test/java/com/google/adk/tools/ExampleToolTest.java
index e56afe60b..429f0896e 100644
--- a/core/src/test/java/com/google/adk/tools/ExampleToolTest.java
+++ b/core/src/test/java/com/google/adk/tools/ExampleToolTest.java
@@ -59,7 +59,7 @@ public void processLlmRequest_withInlineExamples_appendsFewShot() {
     ExampleTool tool = ExampleTool.builder().addExample(makeExample("qin", "qout")).build();
 
     InvocationContext ctx = buildInvocationContext();
-    LlmRequest.Builder builder = LlmRequest.builder().model("gemini-2.0-flash");
+    LlmRequest.Builder builder = LlmRequest.builder().model("gemini-2.5-flash");
 
     tool.processLlmRequest(builder, ToolContext.builder(ctx).build()).blockingAwait();
     LlmRequest updated = builder.build();
@@ -76,7 +76,7 @@ public void processLlmRequest_withProvider_appendsFewShot() {
     ExampleTool tool = ExampleTool.builder().exampleProvider(ProviderHolder.EXAMPLES).build();
 
     InvocationContext ctx = buildInvocationContext();
-    LlmRequest.Builder builder = LlmRequest.builder().model("gemini-2.0-flash");
+    LlmRequest.Builder builder = LlmRequest.builder().model("gemini-2.5-flash");
 
     tool.processLlmRequest(builder, ToolContext.builder(ctx).build()).blockingAwait();
     LlmRequest updated = builder.build();
@@ -101,7 +101,7 @@ public void processLlmRequest_withEmptyUserContent_doesNotAppendFewShot() {
             .userContent(Content.fromParts(Part.fromText("")))
             .runConfig(ctxWithContent.runConfig())
             .build();
-    LlmRequest.Builder builder = LlmRequest.builder().model("gemini-2.0-flash");
+    LlmRequest.Builder builder = LlmRequest.builder().model("gemini-2.5-flash");
 
     tool.processLlmRequest(builder, ToolContext.builder(ctx).build()).blockingAwait();
     LlmRequest updated = builder.build();
@@ -122,7 +122,7 @@ public void fromConfig_withInlineExamples_buildsTool() throws Exception {
 
     ExampleTool tool = ExampleTool.fromConfig(args);
     InvocationContext ctx = buildInvocationContext();
-    LlmRequest.Builder builder = LlmRequest.builder().model("gemini-2.0-flash");
+    LlmRequest.Builder builder = LlmRequest.builder().model("gemini-2.5-flash");
     tool.processLlmRequest(builder, ToolContext.builder(ctx).build()).blockingAwait();
 
     String si = String.join("\n", builder.build().getSystemInstructions());
@@ -146,7 +146,7 @@ public void fromConfig_withProviderReference_buildsTool() throws Exception {
 
     ExampleTool tool = ExampleTool.fromConfig(args);
     InvocationContext ctx = buildInvocationContext();
-    LlmRequest.Builder builder = LlmRequest.builder().model("gemini-2.0-flash");
+    LlmRequest.Builder builder = LlmRequest.builder().model("gemini-2.5-flash");
     tool.processLlmRequest(builder, ToolContext.builder(ctx).build()).blockingAwait();
 
     String si = String.join("\n", builder.build().getSystemInstructions());
@@ -316,7 +316,7 @@ public void declaration_isEmpty() {
   public void processLlmRequest_doesNotAddFunctionDeclarations() {
     ExampleTool tool = ExampleTool.builder().addExample(makeExample("qin", "qout")).build();
     InvocationContext ctx = buildInvocationContext();
-    LlmRequest.Builder builder = LlmRequest.builder().model("gemini-2.0-flash");
+    LlmRequest.Builder builder = LlmRequest.builder().model("gemini-2.5-flash");
 
     tool.processLlmRequest(builder, ToolContext.builder(ctx).build()).blockingAwait();
     LlmRequest updated = builder.build();
diff --git a/core/src/test/java/com/google/adk/utils/ModelNameUtilsTest.java b/core/src/test/java/com/google/adk/utils/ModelNameUtilsTest.java
index 86bf126f6..e941bc92a 100644
--- a/core/src/test/java/com/google/adk/utils/ModelNameUtilsTest.java
+++ b/core/src/test/java/com/google/adk/utils/ModelNameUtilsTest.java
@@ -78,7 +78,7 @@ public void isGemini2OrAbove_withGemini3Model_returnsTrue() {
 
   @Test
   public void isGemini2OrAbove_withGemini2Model_returnsTrue() {
-    assertThat(ModelNameUtils.isGemini2OrAbove("gemini-2.0-pro")).isTrue();
+    assertThat(ModelNameUtils.isGemini2OrAbove("gemini-2.5-pro")).isTrue();
   }
 
   @Test
diff --git a/dev/src/main/java/com/redbus/adk/examples/audiovideo/GoogleAudioVideoStreamWithTrig.java b/dev/src/main/java/com/redbus/adk/examples/audiovideo/GoogleAudioVideoStreamWithTrig.java
index 390d0b7b2..b0645bef7 100644
--- a/dev/src/main/java/com/redbus/adk/examples/audiovideo/GoogleAudioVideoStreamWithTrig.java
+++ b/dev/src/main/java/com/redbus/adk/examples/audiovideo/GoogleAudioVideoStreamWithTrig.java
@@ -38,7 +38,7 @@ public static BaseAgent initAgent() {
     }
     return LlmAgent.builder()
         .name(NAME)
-        .model(new Gemini("gemini-2.0-flash-exp", apiKey))
+        .model(new Gemini("gemini-2.5-flash-exp", apiKey))
         .description(
             "A voice agent that can use tools to answer questions about stocks and perform trigonometry calculations.")
         .instruction(
diff --git a/dev/src/test/java/com/google/adk/plugins/LlmRequestComparatorTest.java b/dev/src/test/java/com/google/adk/plugins/LlmRequestComparatorTest.java
index 7273486d9..738e56eac 100644
--- a/dev/src/test/java/com/google/adk/plugins/LlmRequestComparatorTest.java
+++ b/dev/src/test/java/com/google/adk/plugins/LlmRequestComparatorTest.java
@@ -35,7 +35,7 @@ class LlmRequestComparatorTest {
   // Standard base request used by all tests
   private static final LlmRequest BASE_REQUEST =
       LlmRequest.builder()
-          .model("gemini-2.0-flash")
+          .model("gemini-2.5-flash")
           .contents(ImmutableList.of(userContent("Hello")))
           .config(GenerateContentConfig.builder().temperature(0.5f).build())
           .build();
diff --git a/dev/src/test/java/com/google/adk/plugins/ReplayPluginTest.java b/dev/src/test/java/com/google/adk/plugins/ReplayPluginTest.java
index 8e89c2567..8d17ed577 100644
--- a/dev/src/test/java/com/google/adk/plugins/ReplayPluginTest.java
+++ b/dev/src/test/java/com/google/adk/plugins/ReplayPluginTest.java
@@ -78,7 +78,7 @@ void beforeModelCallback_withMatchingRecording_returnsRecordedResponse() throws
             agent_name: "test_agent"
             llm_recording:
               llm_request:
-                model: "gemini-2.0-flash"
+                model: "gemini-2.5-flash"
                 contents:
                   - role: "user"
                     parts:
@@ -109,7 +109,7 @@ void beforeModelCallback_withMatchingRecording_returnsRecordedResponse() throws
 
     var request =
         LlmRequest.builder()
-            .model("gemini-2.0-flash")
+            .model("gemini-2.5-flash")
             .contents(
                 ImmutableList.of(
                     Content.builder()
@@ -163,7 +163,7 @@ void beforeModelCallback_requestMismatch_returnsEmpty() throws Exception {
 
     var request =
         LlmRequest.builder()
-            .model("gemini-2.0-flash") // Different model
+            .model("gemini-2.5-flash") // Different model
             .contents(
                 ImmutableList.of(
                     Content.builder()
diff --git a/dev/src/test/java/com/google/adk/web/AgentStaticLoaderTest.java b/dev/src/test/java/com/google/adk/web/AgentStaticLoaderTest.java
index 37516cebd..974046e64 100644
--- a/dev/src/test/java/com/google/adk/web/AgentStaticLoaderTest.java
+++ b/dev/src/test/java/com/google/adk/web/AgentStaticLoaderTest.java
@@ -14,7 +14,7 @@ public void testAgentStaticLoaderApproach() {
     BaseAgent testAgent =
         LlmAgent.builder()
             .name("test_agent")
-            .model("gemini-2.0-flash-lite")
+            .model("gemini-2.5-flash-lite")
             .description("Test agent for demonstrating AgentStaticLoader")
             .instruction("You are a test agent.")
             .build();
diff --git a/maven_plugin/README.md b/maven_plugin/README.md
index 448f297c3..f8cd466f9 100644
--- a/maven_plugin/README.md
+++ b/maven_plugin/README.md
@@ -66,7 +66,7 @@ public class MyAgentLoader implements AgentLoader {
         return LlmAgent.builder()
             .name("chat_bot")
             .description("A helpful chat bot")
-            .model("gemini-2.0-flash")
+            .model("gemini-2.5-flash")
             .instruction("You are a helpful assistant.")
             .build();
     }
@@ -75,7 +75,7 @@ public class MyAgentLoader implements AgentLoader {
         return LlmAgent.builder()
             .name("code_assistant")
             .description("A code assistance agent")
-            .model("gemini-2.0-flash")
+            .model("gemini-2.5-flash")
             .instruction("You are a coding assistant. Help users with programming questions.")
             .build();
     }
@@ -130,7 +130,7 @@ public class SimpleAgentLoader implements AgentLoader {
         return LlmAgent.builder()
             .name("simple_agent")
             .description("A simple agent")
-            .model("gemini-2.0-flash")
+            .model("gemini-2.5-flash")
             .instruction("You are a helpful assistant.")
             .build();
     }
@@ -177,7 +177,7 @@ public class MultipleLoaders implements AgentLoader {
         return LlmAgent.builder()
             .name("basic_agent")
             .description("A basic agent")
-            .model("gemini-2.0-flash")
+            .model("gemini-2.5-flash")
             .instruction("You are a basic helpful assistant.")
             .build();
     }
@@ -186,7 +186,7 @@ public class MultipleLoaders implements AgentLoader {
         return LlmAgent.builder()
             .name("advanced_agent")
             .description("An advanced agent with more capabilities")
-            .model("gemini-2.0-flash")
+            .model("gemini-2.5-flash")
             .instruction("You are an advanced assistant with enhanced capabilities.")
             .build();
     }
@@ -245,7 +245,7 @@ mvn google-adk:web -Dagents=my-agents -DhotReloading=false
 ```yaml
 name: "chat_assistant"
 description: "A friendly chat assistant"
-model: "gemini-2.0-flash"
+model: "gemini-2.5-flash"
 instruction: |
   You are a helpful and friendly assistant.
   Answer questions clearly and concisely.
diff --git a/maven_plugin/examples/custom_tools/config_agents/function_die_agent/root_agent.yaml b/maven_plugin/examples/custom_tools/config_agents/function_die_agent/root_agent.yaml
index 1e705e0a2..6c14e6ff1 100644
--- a/maven_plugin/examples/custom_tools/config_agents/function_die_agent/root_agent.yaml
+++ b/maven_plugin/examples/custom_tools/config_agents/function_die_agent/root_agent.yaml
@@ -1,6 +1,6 @@
 # yaml-language-server: $schema=https://raw.githubusercontent.com/google/adk-python/refs/heads/main/src/google/adk/agents/config_schemas/AgentConfig.json
 name: function_die_agent
-model: gemini-2.0-flash
+model: gemini-2.5-flash
 description: 'hello world agent that can roll a dice and check prime numbers.'
 instruction: |
  You roll dice and answer questions about the outcome of the dice rolls.
diff --git a/maven_plugin/examples/custom_tools/config_agents/registry_die_agent/root_agent.yaml b/maven_plugin/examples/custom_tools/config_agents/registry_die_agent/root_agent.yaml
index cd20271e6..cf8e3d7e9 100644
--- a/maven_plugin/examples/custom_tools/config_agents/registry_die_agent/root_agent.yaml
+++ b/maven_plugin/examples/custom_tools/config_agents/registry_die_agent/root_agent.yaml
@@ -1,6 +1,6 @@
 # yaml-language-server: $schema=https://raw.githubusercontent.com/google/adk-python/refs/heads/main/src/google/adk/agents/config_schemas/AgentConfig.json
 name: registry_die_agent
-model: gemini-2.0-flash
+model: gemini-2.5-flash
 description: 'hello world agent that can roll a dice and check prime numbers.'
 instruction: |
   You roll dice and answer questions about the outcome of the dice rolls.
diff --git a/maven_plugin/examples/simple-agent/src/main/java/com/example/SimpleAgentLoader.java b/maven_plugin/examples/simple-agent/src/main/java/com/example/SimpleAgentLoader.java
index 4fb9d949f..8a30aeb05 100644
--- a/maven_plugin/examples/simple-agent/src/main/java/com/example/SimpleAgentLoader.java
+++ b/maven_plugin/examples/simple-agent/src/main/java/com/example/SimpleAgentLoader.java
@@ -63,7 +63,7 @@ private BaseAgent createChatAssistant() {
     return LlmAgent.builder()
         .name("chat_assistant")
         .description("A friendly chat assistant")
-        .model("gemini-2.0-flash")
+        .model("gemini-2.5-flash")
         .instruction(
             "You are a helpful and friendly assistant. "
                 + "Answer questions clearly and concisely. "
@@ -75,7 +75,7 @@ private BaseAgent createSearchAgent() {
     return LlmAgent.builder()
         .name("search_agent")
         .description("An agent that can search the web")
-        .model("gemini-2.0-flash")
+        .model("gemini-2.5-flash")
         .instruction(
             "You are a search assistant. "
                 + "Use Google Search to find current information when users ask questions. "
@@ -88,7 +88,7 @@ private BaseAgent createCodeHelper() {
     return LlmAgent.builder()
         .name("code_helper")
         .description("A coding assistant")
-        .model("gemini-2.0-flash")
+        .model("gemini-2.5-flash")
         .instruction(
             "You are a coding assistant. "
                 + "Help users with programming questions, code reviews, and debugging. "
diff --git a/tutorials/city-time-weather/src/main/java/com/google/adk/tutorials/CityTimeWeather.java b/tutorials/city-time-weather/src/main/java/com/google/adk/tutorials/CityTimeWeather.java
index 18c8f8786..4f0074e0f 100644
--- a/tutorials/city-time-weather/src/main/java/com/google/adk/tutorials/CityTimeWeather.java
+++ b/tutorials/city-time-weather/src/main/java/com/google/adk/tutorials/CityTimeWeather.java
@@ -31,7 +31,7 @@ public class CityTimeWeather {
   public static final BaseAgent ROOT_AGENT =
       LlmAgent.builder()
           .name("multi_tool_agent")
-          .model("gemini-2.0-flash-lite")
+          .model("gemini-2.5-flash-lite")
           .description("Agent to answer questions about the time and weather in a city.")
           .instruction(
               "You are a helpful agent who can answer user questions about the time and weather in"
diff --git a/tutorials/jbang/AI.java b/tutorials/jbang/AI.java
index 0545542d7..c355b9d32 100644
--- a/tutorials/jbang/AI.java
+++ b/tutorials/jbang/AI.java
@@ -9,5 +9,5 @@
 import com.google.adk.web.AdkWebServer;
 
 void main() {
-    AdkWebServer.start(LlmAgent.builder().name("AI").model("gemini-2.0-flash").instruction("Be very grumpy!").build());
+    AdkWebServer.start(LlmAgent.builder().name("AI").model("gemini-2.5-flash").instruction("Be very grumpy!").build());
 }
diff --git a/tutorials/live-audio-single-agent/README.md b/tutorials/live-audio-single-agent/README.md
index 50626fa1c..86c155374 100644
--- a/tutorials/live-audio-single-agent/README.md
+++ b/tutorials/live-audio-single-agent/README.md
@@ -40,7 +40,7 @@ Start the server:
 mvn exec:java
 ```
 
-This starts the ADK web server with a single weather agent (`weather_agent`) that supports live audio using the `gemini-2.0-flash-live-001` model.
+This starts the ADK web server with a single weather agent (`weather_agent`) that supports live audio using the `gemini-2.5-flash-live-001` model.
 
 ## Usage
 
diff --git a/tutorials/live-audio-single-agent/src/main/java/com/google/adk/tutorials/LiveAudioSingleAgent.java b/tutorials/live-audio-single-agent/src/main/java/com/google/adk/tutorials/LiveAudioSingleAgent.java
index a1342a936..965622b60 100644
--- a/tutorials/live-audio-single-agent/src/main/java/com/google/adk/tutorials/LiveAudioSingleAgent.java
+++ b/tutorials/live-audio-single-agent/src/main/java/com/google/adk/tutorials/LiveAudioSingleAgent.java
@@ -27,7 +27,7 @@ public class LiveAudioSingleAgent {
   public static final BaseAgent WEATHER_AGENT =
       LlmAgent.builder()
           .name("weather_agent")
-          .model("gemini-2.0-flash-live-001")
+          .model("gemini-2.5-flash-live-001")
           .description("A helpful weather assistant that provides weather information.")
           .instruction(
               "You are a friendly weather assistant. When users ask about weather, you MUST call"