Skip to content

Commit 24a64f0

Browse files
committed
Fix: Allow -latest model aliases in GoogleSearchTool
1 parent 69638df commit 24a64f0

2 files changed

Lines changed: 38 additions & 2 deletions

File tree

core/src/main/java/com/google/adk/tools/GoogleSearchTool.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ public Completable processLlmRequest(
6161
ImmutableList.Builder<Tool> updatedToolsBuilder = ImmutableList.builder();
6262
updatedToolsBuilder.addAll(existingTools);
6363

64-
String model = llmRequestBuilder.build().model().get();
65-
if (model != null && (model.startsWith("gemini-2") || model.startsWith("gemini-3"))) {
64+
String model = llmRequestBuilder.build().model().orElse(null);
65+
if (isSupportedModel(model)) {
6666

6767
updatedToolsBuilder.add(Tool.builder().googleSearch(GoogleSearch.builder().build()).build());
6868
configBuilder.tools(updatedToolsBuilder.build());
@@ -74,4 +74,13 @@ public Completable processLlmRequest(
7474
llmRequestBuilder.config(configBuilder.build());
7575
return Completable.complete();
7676
}
77+
78+
private boolean isSupportedModel(String model) {
79+
if (model == null) {
80+
return false;
81+
}
82+
return model.startsWith("gemini-2")
83+
|| model.startsWith("gemini-3")
84+
|| model.endsWith("-latest");
85+
}
7786
}

core/src/test/java/com/google/adk/tools/BaseToolTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,33 @@ public void processLlmRequestWithGoogleSearchToolAddsToolToConfig() {
164164
Tool.builder().googleSearch(GoogleSearch.builder().build()).build());
165165
}
166166

167+
@Test
168+
public void processLlmRequestWithLatestAliasAddsToolToConfig() {
169+
final GoogleSearchTool googleSearchTool = new GoogleSearchTool();
170+
LlmRequest.Builder builder =
171+
LlmRequest.builder().model("gemini-flash-latest").build().toBuilder();
172+
Completable result = googleSearchTool.processLlmRequest(builder, null);
173+
result.test().assertComplete();
174+
assertThat(builder.build().config().get().tools().get())
175+
.contains(Tool.builder().googleSearch(GoogleSearch.builder().build()).build());
176+
}
177+
178+
@Test
179+
public void processLlmRequestWithUnsupportedModelReturnsError() {
180+
final GoogleSearchTool googleSearchTool = new GoogleSearchTool();
181+
LlmRequest.Builder builder = LlmRequest.builder().model("text-bison-001").build().toBuilder();
182+
Completable result = googleSearchTool.processLlmRequest(builder, null);
183+
result.test().assertError(IllegalArgumentException.class);
184+
}
185+
186+
@Test
187+
public void processLlmRequest_WithNullModel_ReturnsError() {
188+
final GoogleSearchTool googleSearchTool = new GoogleSearchTool();
189+
LlmRequest.Builder builder = LlmRequest.builder().build().toBuilder();
190+
Completable result = googleSearchTool.processLlmRequest(builder, null);
191+
result.test().assertError(IllegalArgumentException.class);
192+
}
193+
167194
@Test
168195
public void processLlmRequestWithUrlContextToolAddsToolToConfig() {
169196
FunctionDeclaration functionDeclaration =

0 commit comments

Comments
 (0)