Skip to content

Commit 097a372

Browse files
committed
feat(genai): Add Grounding with Enterprise Web Search and Google Maps Samples
1 parent 26d6aa4 commit 097a372

File tree

4 files changed

+124
-2
lines changed

4 files changed

+124
-2
lines changed

genai/tools/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
google-genai==1.16.1
1+
google-genai==1.18.0
22
# PIl is required for tools_code_execution_with_txt_img.py
33
pillow==11.1.0

genai/tools/test_tools_examples.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,15 @@
1515
#
1616
# Using Google Cloud Vertex AI to test the code samples.
1717
#
18-
1918
import os
2019

20+
import pytest
2121
import tools_code_exec_with_txt
2222
import tools_code_exec_with_txt_local_img
23+
import tools_enterprise_web_search_with_txt
2324
import tools_func_def_with_txt
2425
import tools_func_desc_with_txt
26+
import tools_google_maps_with_txt
2527
import tools_google_search_with_txt
2628
import tools_vais_with_txt
2729

@@ -41,6 +43,11 @@ def test_tools_code_exec_with_txt_local_img() -> None:
4143
assert response
4244

4345

46+
def test_tools_enterprise_web_search_with_txt() -> None:
47+
response = tools_enterprise_web_search_with_txt.generate_content()
48+
assert response
49+
50+
4451
def test_tools_func_def_with_txt() -> None:
4552
response = tools_func_def_with_txt.generate_content()
4653
assert response
@@ -51,6 +58,14 @@ def test_tools_func_desc_with_txt() -> None:
5158
assert response
5259

5360

61+
@pytest.mark.skip(
62+
reason="Google Maps Grounding allowlisting is not set up for the test project."
63+
)
64+
def test_tools_google_maps_with_txt() -> None:
65+
response = tools_google_maps_with_txt.generate_content()
66+
assert response
67+
68+
5469
def test_tools_google_search_with_txt() -> None:
5570
response = tools_google_search_with_txt.generate_content()
5671
assert response
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Copyright 2025 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# https://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
16+
def generate_content() -> str:
17+
# [START googlegenaisdk_tools_enterprise_web_search_with_txt]
18+
from google import genai
19+
from google.genai.types import (
20+
EnterpriseWebSearch,
21+
GenerateContentConfig,
22+
HttpOptions,
23+
Tool,
24+
)
25+
26+
client = genai.Client(http_options=HttpOptions(api_version="v1"))
27+
28+
response = client.models.generate_content(
29+
model="gemini-2.5-flash-preview-05-20",
30+
contents="When is the next total solar eclipse in the United States?",
31+
config=GenerateContentConfig(
32+
tools=[
33+
# Use Enterprise Web Search Tool
34+
Tool(enterprise_web_search=EnterpriseWebSearch())
35+
],
36+
),
37+
)
38+
39+
print(response.text)
40+
# Example response:
41+
# 'The next total solar eclipse in the United States will occur on ...'
42+
# [END googlegenaisdk_tools_enterprise_web_search_with_txt]
43+
return response.text
44+
45+
46+
if __name__ == "__main__":
47+
generate_content()
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# Copyright 2025 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# https://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
16+
def generate_content() -> str:
17+
# [START googlegenaisdk_tools_google_maps_with_txt]
18+
from google import genai
19+
from google.genai.types import (
20+
ApiKeyConfig,
21+
AuthConfig,
22+
GenerateContentConfig,
23+
GoogleMaps,
24+
HttpOptions,
25+
Tool,
26+
)
27+
28+
# TODO(developer): Update below line with your Google Maps API key
29+
GOOGLE_MAPS_API_KEY = "YOUR_GOOGLE_MAPS_API_KEY"
30+
31+
client = genai.Client(http_options=HttpOptions(api_version="v1"))
32+
33+
response = client.models.generate_content(
34+
model="gemini-2.5-flash-preview-05-20",
35+
contents="Recommend a good restaurant in San Francisco",
36+
config=GenerateContentConfig(
37+
tools=[
38+
# Use Google Maps Tool
39+
Tool(
40+
google_maps=GoogleMaps(
41+
auth_config=AuthConfig(
42+
api_key_config=ApiKeyConfig(
43+
api_key_string=GOOGLE_MAPS_API_KEY,
44+
)
45+
)
46+
)
47+
)
48+
],
49+
),
50+
)
51+
52+
print(response.text)
53+
# Example response:
54+
# 'The next total solar eclipse in the United States will occur on ...'
55+
# [END googlegenaisdk_tools_enterprise_web_search_with_txt]
56+
return response.text
57+
58+
59+
if __name__ == "__main__":
60+
generate_content()

0 commit comments

Comments
 (0)