Skip to content

Commit d8adeac

Browse files
google-genai-botcopybara-github
authored andcommitted
fix: ApigeeLLM support for Built-in tools like GoogleSearch, BuiltInCodeExecutor when calling Gemini models through Apigee
PiperOrigin-RevId: 839428403
1 parent e6755a2 commit d8adeac

File tree

2 files changed

+78
-0
lines changed

2 files changed

+78
-0
lines changed

core/src/main/java/com/google/adk/utils/ModelNameUtils.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ public class ModelNameUtils {
77
private static final Pattern GEMINI_2_PATTERN = Pattern.compile("^gemini-2\\..*");
88
private static final Pattern PATH_PATTERN =
99
Pattern.compile("^projects/[^/]+/locations/[^/]+/publishers/[^/]+/models/(.+)$");
10+
private static final Pattern APIGEE_PATTERN =
11+
Pattern.compile("^apigee/(?:[^/]+/)?(?:[^/]+/)?(.+)$");
1012

1113
public static boolean isGemini2Model(String modelString) {
1214
if (modelString == null) {
@@ -28,6 +30,10 @@ private static String extractModelName(String modelString) {
2830
if (matcher.matches()) {
2931
return matcher.group(1);
3032
}
33+
Matcher apigeeMatcher = APIGEE_PATTERN.matcher(modelString);
34+
if (apigeeMatcher.matches()) {
35+
return apigeeMatcher.group(1);
36+
}
3137
return modelString;
3238
}
3339

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package com.google.adk.utils;
2+
3+
import static com.google.common.truth.Truth.assertThat;
4+
5+
import org.junit.Test;
6+
import org.junit.runner.RunWith;
7+
import org.junit.runners.JUnit4;
8+
9+
@RunWith(JUnit4.class)
10+
public class ModelNameUtilsTest {
11+
12+
@Test
13+
public void isGemini2Model_withGemini2Model_returnsTrue() {
14+
assertThat(ModelNameUtils.isGemini2Model("gemini-2.5-flash")).isTrue();
15+
}
16+
17+
@Test
18+
public void isGemini2Model_withNonGemini2Model_returnsFalse() {
19+
assertThat(ModelNameUtils.isGemini2Model("gemini-1.5-pro")).isFalse();
20+
}
21+
22+
@Test
23+
public void isGemini2Model_withPathBasedGemini2Model_returnsTrue() {
24+
assertThat(
25+
ModelNameUtils.isGemini2Model(
26+
"projects/test-project/locations/us-central1/publishers/google/models/gemini-2.5-flash"))
27+
.isTrue();
28+
}
29+
30+
@Test
31+
public void isGemini2Model_withPathBasedNonGemini2Model_returnsFalse() {
32+
assertThat(
33+
ModelNameUtils.isGemini2Model(
34+
"projects/test-project/locations/us-central1/publishers/google/models/gemini-1.5-pro"))
35+
.isFalse();
36+
}
37+
38+
@Test
39+
public void isGemini2Model_withApigeeGemini2Model_returnsTrue() {
40+
assertThat(ModelNameUtils.isGemini2Model("apigee/gemini-2.5-flash")).isTrue();
41+
}
42+
43+
@Test
44+
public void isGemini2Model_withApigeeV1Gemini2Model_returnsTrue() {
45+
assertThat(ModelNameUtils.isGemini2Model("apigee/v1/gemini-2.5-flash")).isTrue();
46+
}
47+
48+
@Test
49+
public void isGemini2Model_withApigeeProviderGemini2Model_returnsTrue() {
50+
assertThat(ModelNameUtils.isGemini2Model("apigee/gemini/gemini-2.5-flash")).isTrue();
51+
}
52+
53+
@Test
54+
public void isGemini2Model_withApigeeProviderVertexGemini2Model_returnsTrue() {
55+
assertThat(ModelNameUtils.isGemini2Model("apigee/vertex_ai/gemini-2.5-flash")).isTrue();
56+
}
57+
58+
@Test
59+
public void isGemini2Model_withApigeeProviderV1Gemini2Model_returnsTrue() {
60+
assertThat(ModelNameUtils.isGemini2Model("apigee/gemini/v1/gemini-2.5-flash")).isTrue();
61+
}
62+
63+
@Test
64+
public void isGemini2Model_withApigeeProviderV1BetaGemini2Model_returnsTrue() {
65+
assertThat(ModelNameUtils.isGemini2Model("apigee/vertex_ai/v1beta/gemini-2.5-flash")).isTrue();
66+
}
67+
68+
@Test
69+
public void isGemini2Model_withNullModel_returnsFalse() {
70+
assertThat(ModelNameUtils.isGemini2Model(null)).isFalse();
71+
}
72+
}

0 commit comments

Comments
 (0)