Skip to content

Commit e607d98

Browse files
committed
Fix: Allow -latest model aliases in GoogleSearchTool
1 parent fc95ce7 commit e607d98

2 files changed

Lines changed: 37 additions & 1 deletion

File tree

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public Completable processLlmRequest(
6262
updatedToolsBuilder.addAll(existingTools);
6363

6464
String model = llmRequestBuilder.build().model().orElse(null);
65-
if (model != null && (model.startsWith("gemini-2") || model.startsWith("gemini-3"))) {
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 || !model.startsWith("gemini-")) {
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
@@ -166,6 +166,33 @@ public void processLlmRequestWithGoogleSearchToolAddsToolToConfig() {
166166
Tool.builder().googleSearch(GoogleSearch.builder().build()).build());
167167
}
168168

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

0 commit comments

Comments
 (0)