Skip to content

Commit dc3b639

Browse files
vertex-sdk-botcopybara-github
authored andcommitted
feat: GenAI Client(evals): Add allow_cross_region_model to generate_conversation_scenarios to enable cross region support for gemini 3 based model
PiperOrigin-RevId: 906517900
1 parent 3bd0b25 commit dc3b639

3 files changed

Lines changed: 39 additions & 1 deletion

File tree

tests/unit/vertexai/genai/test_evals.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3674,12 +3674,16 @@ def test_run_inference_with_litellm_openai_request_format(
36743674
mock_api_client_fixture,
36753675
):
36763676
"""Tests inference with LiteLLM where the row contains a chat completion request body."""
3677+
# fmt: off
36773678
with (
3678-
mock.patch("vertexai._genai._evals_common.litellm") as mock_litellm,
3679+
mock.patch(
3680+
"vertexai._genai._evals_common.litellm"
3681+
) as mock_litellm,
36793682
mock.patch(
36803683
"vertexai._genai._evals_common._call_litellm_completion"
36813684
) as mock_call_litellm_completion,
36823685
):
3686+
# fmt: on
36833687
mock_litellm.get_llm_provider.return_value = (
36843688
"gpt-4o",
36853689
"openai",
@@ -8452,6 +8456,7 @@ def test_generate_conversation_scenarios(self):
84528456
root_agent_id="agent_1",
84538457
),
84548458
config={"count": 2},
8459+
allow_cross_region_model=True,
84558460
)
84568461
assert isinstance(eval_dataset, vertexai_genai_types.EvaluationDataset)
84578462
assert len(eval_dataset.eval_cases) == 2
@@ -8468,6 +8473,9 @@ def test_generate_conversation_scenarios(self):
84688473
assert eval_dataset.eval_dataset_df.iloc[1]["conversation_plan"] == "Plan 2"
84698474

84708475
self.mock_api_client.request.assert_called_once()
8476+
call_args = self.mock_api_client.request.call_args
8477+
request_body = call_args[0][2] # Third positional arg is the request dict
8478+
assert request_body.get("allowCrossRegionModel") is True
84718479

84728480
@pytest.mark.asyncio
84738481
async def test_async_generate_conversation_scenarios(self):
@@ -8484,6 +8492,7 @@ async def test_async_generate_conversation_scenarios(self):
84848492
root_agent_id="agent_1",
84858493
),
84868494
config={"count": 2},
8495+
allow_cross_region_model=True,
84878496
)
84888497
assert isinstance(eval_dataset, vertexai_genai_types.EvaluationDataset)
84898498
assert len(eval_dataset.eval_cases) == 2
@@ -8497,6 +8506,9 @@ async def test_async_generate_conversation_scenarios(self):
84978506
assert eval_dataset.eval_dataset_df.iloc[1]["conversation_plan"] == "Plan 2"
84988507

84998508
self.mock_api_client.async_request.assert_called_once()
8509+
call_args = self.mock_api_client.async_request.call_args
8510+
request_body = call_args[0][2] # Third positional arg is the request dict
8511+
assert request_body.get("allowCrossRegionModel") is True
85008512

85018513

85028514
class TestTransformDataframe:

vertexai/_genai/evals.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -683,6 +683,13 @@ def _GenerateUserScenariosParameters_to_vertex(
683683
if getv(from_object, ["config"]) is not None:
684684
setv(to_object, ["config"], getv(from_object, ["config"]))
685685

686+
if getv(from_object, ["allow_cross_region_model"]) is not None:
687+
setv(
688+
to_object,
689+
["allowCrossRegionModel"],
690+
getv(from_object, ["allow_cross_region_model"]),
691+
)
692+
686693
return to_object
687694

688695

@@ -1473,6 +1480,7 @@ def _generate_user_scenarios(
14731480
evals_types.UserScenarioGenerationConfigOrDict
14741481
] = None,
14751482
config: Optional[types.GenerateUserScenariosConfigOrDict] = None,
1483+
allow_cross_region_model: Optional[bool] = None,
14761484
) -> types.GenerateUserScenariosResponse:
14771485
"""
14781486
Generates user scenarios for agent evaluation.
@@ -1484,6 +1492,7 @@ def _generate_user_scenarios(
14841492
root_agent_id=root_agent_id,
14851493
user_scenario_generation_config=user_scenario_generation_config,
14861494
config=config,
1495+
allow_cross_region_model=allow_cross_region_model,
14871496
)
14881497

14891498
request_url_dict: Optional[dict[str, str]]
@@ -2852,6 +2861,7 @@ def generate_conversation_scenarios(
28522861
*,
28532862
agent_info: evals_types.AgentInfoOrDict,
28542863
config: evals_types.UserScenarioGenerationConfigOrDict,
2864+
allow_cross_region_model: Optional[bool] = None,
28552865
) -> types.EvaluationDataset:
28562866
"""Generates an evaluation dataset with user scenarios,
28572867
which helps to generate conversations between a simulated user
@@ -2860,6 +2870,8 @@ def generate_conversation_scenarios(
28602870
Args:
28612871
agent_info: The agent info to generate user scenarios for.
28622872
config: Configuration for generating user scenarios.
2873+
allow_cross_region_model: Opt-in flag to authorize cross-region
2874+
routing for model inference.
28632875
28642876
Returns:
28652877
An EvaluationDataset containing the generated user scenarios.
@@ -2873,6 +2885,7 @@ def generate_conversation_scenarios(
28732885
agents=parsed_agent_info.agents,
28742886
root_agent_id=parsed_agent_info.root_agent_id,
28752887
user_scenario_generation_config=config,
2888+
allow_cross_region_model=allow_cross_region_model,
28762889
)
28772890
return _evals_utils._postprocess_user_scenarios_response(response)
28782891

@@ -3592,6 +3605,7 @@ async def _generate_user_scenarios(
35923605
evals_types.UserScenarioGenerationConfigOrDict
35933606
] = None,
35943607
config: Optional[types.GenerateUserScenariosConfigOrDict] = None,
3608+
allow_cross_region_model: Optional[bool] = None,
35953609
) -> types.GenerateUserScenariosResponse:
35963610
"""
35973611
Generates user scenarios for agent evaluation.
@@ -3603,6 +3617,7 @@ async def _generate_user_scenarios(
36033617
root_agent_id=root_agent_id,
36043618
user_scenario_generation_config=user_scenario_generation_config,
36053619
config=config,
3620+
allow_cross_region_model=allow_cross_region_model,
36063621
)
36073622

36083623
request_url_dict: Optional[dict[str, str]]
@@ -4622,6 +4637,7 @@ async def generate_conversation_scenarios(
46224637
*,
46234638
agent_info: evals_types.AgentInfoOrDict,
46244639
config: evals_types.UserScenarioGenerationConfigOrDict,
4640+
allow_cross_region_model: Optional[bool] = None,
46254641
) -> types.EvaluationDataset:
46264642
"""Generates an evaluation dataset with user scenarios,
46274643
which helps to generate conversations between a simulated user
@@ -4630,6 +4646,8 @@ async def generate_conversation_scenarios(
46304646
Args:
46314647
agent_info: The agent info to generate user scenarios for.
46324648
config: Configuration for generating user scenarios.
4649+
allow_cross_region_model: Opt-in flag to authorize cross-region
4650+
routing for model inference.
46334651
46344652
Returns:
46354653
An EvaluationDataset containing the generated user scenarios.
@@ -4643,6 +4661,7 @@ async def generate_conversation_scenarios(
46434661
agents=parsed_agent_info.agents,
46444662
root_agent_id=parsed_agent_info.root_agent_id,
46454663
user_scenario_generation_config=config,
4664+
allow_cross_region_model=allow_cross_region_model,
46464665
)
46474666
return _evals_utils._postprocess_user_scenarios_response(response)
46484667

vertexai/_genai/types/common.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5012,6 +5012,10 @@ class _GenerateUserScenariosParameters(_common.BaseModel):
50125012
config: Optional[GenerateUserScenariosConfig] = Field(
50135013
default=None, description=""""""
50145014
)
5015+
allow_cross_region_model: Optional[bool] = Field(
5016+
default=None,
5017+
description="""Opt-in flag to authorize cross-region routing for LLM models.""",
5018+
)
50155019

50165020

50175021
class _GenerateUserScenariosParametersDict(TypedDict, total=False):
@@ -5032,6 +5036,9 @@ class _GenerateUserScenariosParametersDict(TypedDict, total=False):
50325036
config: Optional[GenerateUserScenariosConfigDict]
50335037
""""""
50345038

5039+
allow_cross_region_model: Optional[bool]
5040+
"""Opt-in flag to authorize cross-region routing for LLM models."""
5041+
50355042

50365043
_GenerateUserScenariosParametersOrDict = Union[
50375044
_GenerateUserScenariosParameters, _GenerateUserScenariosParametersDict

0 commit comments

Comments
 (0)