diff --git a/core/src/main/java/com/google/adk/tools/GoogleSearchTool.java b/core/src/main/java/com/google/adk/tools/GoogleSearchTool.java index b4f298c21..0c26427d3 100644 --- a/core/src/main/java/com/google/adk/tools/GoogleSearchTool.java +++ b/core/src/main/java/com/google/adk/tools/GoogleSearchTool.java @@ -61,8 +61,8 @@ public Completable processLlmRequest( ImmutableList.Builder updatedToolsBuilder = ImmutableList.builder(); updatedToolsBuilder.addAll(existingTools); - String model = llmRequestBuilder.build().model().get(); - if (model != null && (model.startsWith("gemini-2") || model.startsWith("gemini-3"))) { + String model = llmRequestBuilder.build().model().orElse(null); + if (isSupportedModel(model)) { updatedToolsBuilder.add(Tool.builder().googleSearch(GoogleSearch.builder().build()).build()); configBuilder.tools(updatedToolsBuilder.build()); @@ -74,4 +74,13 @@ public Completable processLlmRequest( llmRequestBuilder.config(configBuilder.build()); return Completable.complete(); } + + private boolean isSupportedModel(String model) { + if (model == null) { + return false; + } + return model.startsWith("gemini-2") + || model.startsWith("gemini-3") + || model.endsWith("-latest"); + } } diff --git a/core/src/test/java/com/google/adk/tools/BaseToolTest.java b/core/src/test/java/com/google/adk/tools/BaseToolTest.java index d3c8da5aa..a7b3a09e6 100644 --- a/core/src/test/java/com/google/adk/tools/BaseToolTest.java +++ b/core/src/test/java/com/google/adk/tools/BaseToolTest.java @@ -164,6 +164,33 @@ public void processLlmRequestWithGoogleSearchToolAddsToolToConfig() { Tool.builder().googleSearch(GoogleSearch.builder().build()).build()); } + @Test + public void processLlmRequestWithLatestAliasAddsToolToConfig() { + final GoogleSearchTool googleSearchTool = new GoogleSearchTool(); + LlmRequest.Builder builder = + LlmRequest.builder().model("gemini-flash-latest").build().toBuilder(); + Completable result = googleSearchTool.processLlmRequest(builder, null); + result.test().assertComplete(); + assertThat(builder.build().config().get().tools().get()) + .contains(Tool.builder().googleSearch(GoogleSearch.builder().build()).build()); + } + + @Test + public void processLlmRequestWithUnsupportedModelReturnsError() { + final GoogleSearchTool googleSearchTool = new GoogleSearchTool(); + LlmRequest.Builder builder = LlmRequest.builder().model("text-bison-001").build().toBuilder(); + Completable result = googleSearchTool.processLlmRequest(builder, null); + result.test().assertError(IllegalArgumentException.class); + } + + @Test + public void processLlmRequest_WithNullModel_ReturnsError() { + final GoogleSearchTool googleSearchTool = new GoogleSearchTool(); + LlmRequest.Builder builder = LlmRequest.builder().build().toBuilder(); + Completable result = googleSearchTool.processLlmRequest(builder, null); + result.test().assertError(IllegalArgumentException.class); + } + @Test public void processLlmRequestWithUrlContextToolAddsToolToConfig() { FunctionDeclaration functionDeclaration =