Skip to content

Commit b338544

Browse files
feat(genai): Add Grounding with Enterprise Web Search and Google Maps Samples (#13403)
* feat(genai): Add Grounding with Enterprise Web Search and Google Maps Samples * Update genai/tools/tools_google_maps_with_txt.py Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Fix formatting * Add example output for Maps --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
1 parent 5eafc4c commit b338544

File tree

4 files changed

+125
-2
lines changed

4 files changed

+125
-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: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,16 @@
1515
#
1616
# Using Google Cloud Vertex AI to test the code samples.
1717
#
18-
1918
import os
2019

20+
import pytest
21+
2122
import tools_code_exec_with_txt
2223
import tools_code_exec_with_txt_local_img
24+
import tools_enterprise_web_search_with_txt
2325
import tools_func_def_with_txt
2426
import tools_func_desc_with_txt
27+
import tools_google_maps_with_txt
2528
import tools_google_search_with_txt
2629
import tools_vais_with_txt
2730

@@ -41,6 +44,11 @@ def test_tools_code_exec_with_txt_local_img() -> None:
4144
assert response
4245

4346

47+
def test_tools_enterprise_web_search_with_txt() -> None:
48+
response = tools_enterprise_web_search_with_txt.generate_content()
49+
assert response
50+
51+
4452
def test_tools_func_def_with_txt() -> None:
4553
response = tools_func_def_with_txt.generate_content()
4654
assert response
@@ -51,6 +59,14 @@ def test_tools_func_desc_with_txt() -> None:
5159
assert response
5260

5361

62+
@pytest.mark.skip(
63+
reason="Google Maps Grounding allowlisting is not set up for the test project."
64+
)
65+
def test_tools_google_maps_with_txt() -> None:
66+
response = tools_google_maps_with_txt.generate_content()
67+
assert response
68+
69+
5470
def test_tools_google_search_with_txt() -> None:
5571
response = tools_google_search_with_txt.generate_content()
5672
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+
# 'San Francisco boasts a vibrant culinary scene...'
55+
# [END googlegenaisdk_tools_google_maps_with_txt]
56+
return response.text
57+
58+
59+
if __name__ == "__main__":
60+
generate_content()

0 commit comments

Comments
 (0)