From c7dcd4507701f3b1040fc6f0fe049eda77f4542d Mon Sep 17 00:00:00 2001 From: David del Real Sifuentes Date: Tue, 21 Jul 2026 22:55:03 +0000 Subject: [PATCH 1/2] refactor(genai/labels): replace vertexai.generative_models with genai Update the codebase to use the new `genai` SDK replacement for all legacy `vertexai.generative_models` imports and usage. --- genai/labels/labels_example.py | 50 ++++++++++++++++++++++++++++ genai/labels/noxfile_config.py | 42 +++++++++++++++++++++++ genai/labels/requirements-test.txt | 2 ++ genai/labels/requirements.txt | 1 + genai/labels/test_labels_examples.py | 20 +++++++++++ 5 files changed, 115 insertions(+) create mode 100644 genai/labels/labels_example.py create mode 100644 genai/labels/noxfile_config.py create mode 100644 genai/labels/requirements-test.txt create mode 100644 genai/labels/requirements.txt create mode 100644 genai/labels/test_labels_examples.py diff --git a/genai/labels/labels_example.py b/genai/labels/labels_example.py new file mode 100644 index 00000000000..6a0a5ebc8cd --- /dev/null +++ b/genai/labels/labels_example.py @@ -0,0 +1,50 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# [START aiplatform_genai_gemini_set_labels] + +import os + +from google import genai + +PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT") +LOCATION = os.getenv("LOCATION_ID") +GEMINI_MODEL = os.getenv("GEMINI_MODEL_ID", "gemini-2.5-flash") + + +def generate_content() -> genai.types.GenerateContentResponse: + + genai_client = genai.Client(enterprise=True, project=PROJECT_ID, location=LOCATION) + + labels = { + "environment": "testing", + "feature": "genai", + "model": "gemini", + } + + config = genai.types.GenerateContentConfig(temperature=0.4, labels=labels) + + response = genai_client.models.generate_content( + model=GEMINI_MODEL, contents="What is Generative AI?", config=config + ) + + print(response.text) + return response + + +# [END aiplatform_genai_gemini_set_labels] + + +if __name__ == "__main__": + generate_content() diff --git a/genai/labels/noxfile_config.py b/genai/labels/noxfile_config.py new file mode 100644 index 00000000000..0973c8621c7 --- /dev/null +++ b/genai/labels/noxfile_config.py @@ -0,0 +1,42 @@ +# Copyright 2021 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Default TEST_CONFIG_OVERRIDE for python repos. + +# You can copy this file into your directory, then it will be imported from +# the noxfile.py. + +# The source of truth: +# https://github.com/GoogleCloudPlatform/python-docs-samples/blob/main/noxfile_config.py + +TEST_CONFIG_OVERRIDE = { + # You can opt out from the test for specific Python versions. + "ignored_versions": ["3.8", "3.9", "3.11", "3.12", "3.13"], + # Old samples are opted out of enforcing Python type hints + # All new samples should feature them + "enforce_type_hints": True, + # An envvar key for determining the project id to use. Change it + # to 'BUILD_SPECIFIC_GCLOUD_PROJECT' if you want to opt in using a + # build specific Cloud project. You can also use your own string + # to use your own Cloud project. + "gcloud_project_env": "GOOGLE_CLOUD_PROJECT", + # 'gcloud_project_env': 'BUILD_SPECIFIC_GCLOUD_PROJECT', + # If you need to use a specific version of pip, + # change pip_version_override to the string representation + # of the version number, for example, "20.2.4" + "pip_version_override": None, + # A dictionary you want to inject into your test. Don't put any + # secrets here. These values will override predefined values. + "envs": {}, +} diff --git a/genai/labels/requirements-test.txt b/genai/labels/requirements-test.txt new file mode 100644 index 00000000000..b47809aab43 --- /dev/null +++ b/genai/labels/requirements-test.txt @@ -0,0 +1,2 @@ +google-api-core==2.32.0 +pytest==9.0.3 diff --git a/genai/labels/requirements.txt b/genai/labels/requirements.txt new file mode 100644 index 00000000000..b523bb9b53d --- /dev/null +++ b/genai/labels/requirements.txt @@ -0,0 +1 @@ +google-genai==2.12.1 diff --git a/genai/labels/test_labels_examples.py b/genai/labels/test_labels_examples.py new file mode 100644 index 00000000000..52a21689861 --- /dev/null +++ b/genai/labels/test_labels_examples.py @@ -0,0 +1,20 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import labels_example + + +def test_set_labels() -> None: + response = labels_example.generate_content() + assert response From 281af97093e20a9fb9d8c52f7ad3c34c1b715805 Mon Sep 17 00:00:00 2001 From: David del Real Sifuentes Date: Tue, 21 Jul 2026 23:10:34 +0000 Subject: [PATCH 2/2] Address gemini recomendation to assert presence of text attribute. --- genai/labels/test_labels_examples.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/genai/labels/test_labels_examples.py b/genai/labels/test_labels_examples.py index 52a21689861..12eeac452f5 100644 --- a/genai/labels/test_labels_examples.py +++ b/genai/labels/test_labels_examples.py @@ -17,4 +17,4 @@ def test_set_labels() -> None: response = labels_example.generate_content() - assert response + assert response.text