Skip to content

Commit 09bf9a9

Browse files
vertex-sdk-botcopybara-github
authored andcommitted
fix: GenAI Client(evals) - Update send online eval service request default value and avoid None value
PiperOrigin-RevId: 825754697
1 parent 4216790 commit 09bf9a9

File tree

2 files changed

+90
-17
lines changed

2 files changed

+90
-17
lines changed

tests/unit/vertexai/genai/test_evals.py

Lines changed: 81 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3749,7 +3749,7 @@ def test_eval_case_to_agent_data_events_only(self):
37493749
assert agent_data.agent_config is None
37503750
assert agent_data.events.event[0].parts[0].text == "intermediate event"
37513751

3752-
def test_eval_case_to_agent_data_empty_events(self):
3752+
def test_eval_case_to_agent_data_empty_event_content(self):
37533753
intermediate_events = [
37543754
vertexai_genai_types.Event(
37553755
event_id="event1",
@@ -3774,8 +3774,86 @@ def test_eval_case_to_agent_data_empty_events(self):
37743774
)
37753775

37763776
assert agent_data.agent_config is None
3777-
assert agent_data.events is None
3778-
assert not agent_data.events_text
3777+
assert not agent_data.events.event
3778+
3779+
def test_eval_case_to_agent_data_empty_intermediate_events_list(self):
3780+
agent_info = vertexai_genai_types.evals.AgentInfo(
3781+
name="agent1",
3782+
instruction="instruction1",
3783+
tool_declarations=[],
3784+
)
3785+
3786+
eval_case = vertexai_genai_types.EvalCase(
3787+
prompt=genai_types.Content(parts=[genai_types.Part(text="Hello")]),
3788+
responses=[
3789+
vertexai_genai_types.ResponseCandidate(
3790+
response=genai_types.Content(parts=[genai_types.Part(text="Hi")])
3791+
)
3792+
],
3793+
agent_info=agent_info,
3794+
)
3795+
3796+
agent_data = (
3797+
_evals_metric_handlers.PredefinedMetricHandler._eval_case_to_agent_data(
3798+
eval_case
3799+
)
3800+
)
3801+
3802+
assert not agent_data.events.event
3803+
3804+
def test_eval_case_to_agent_data_agent_info_empty_tools(self):
3805+
agent_info = vertexai_genai_types.evals.AgentInfo(
3806+
name="agent1",
3807+
instruction="instruction1",
3808+
tool_declarations=[],
3809+
)
3810+
eval_case = vertexai_genai_types.EvalCase(
3811+
prompt=genai_types.Content(parts=[genai_types.Part(text="Hello")]),
3812+
responses=[
3813+
vertexai_genai_types.ResponseCandidate(
3814+
response=genai_types.Content(parts=[genai_types.Part(text="Hi")])
3815+
)
3816+
],
3817+
agent_info=agent_info,
3818+
intermediate_events=None,
3819+
)
3820+
3821+
agent_data = (
3822+
_evals_metric_handlers.PredefinedMetricHandler._eval_case_to_agent_data(
3823+
eval_case
3824+
)
3825+
)
3826+
3827+
assert agent_data.agent_config.developer_instruction.text == "instruction1"
3828+
assert not agent_data.agent_config.tools.tool
3829+
3830+
def test_eval_case_to_agent_data_agent_info_empty(self):
3831+
intermediate_events = [
3832+
vertexai_genai_types.Event(
3833+
event_id="event1",
3834+
content=genai_types.Content(
3835+
parts=[genai_types.Part(text="intermediate event")]
3836+
),
3837+
)
3838+
]
3839+
eval_case = vertexai_genai_types.EvalCase(
3840+
prompt=genai_types.Content(parts=[genai_types.Part(text="Hello")]),
3841+
responses=[
3842+
vertexai_genai_types.ResponseCandidate(
3843+
response=genai_types.Content(parts=[genai_types.Part(text="Hi")])
3844+
)
3845+
],
3846+
agent_info=None,
3847+
intermediate_events=intermediate_events,
3848+
)
3849+
3850+
agent_data = (
3851+
_evals_metric_handlers.PredefinedMetricHandler._eval_case_to_agent_data(
3852+
eval_case
3853+
)
3854+
)
3855+
3856+
assert agent_data.agent_config is None
37793857

37803858

37813859
@pytest.mark.usefixtures("google_auth_mock")

vertexai/_genai/_evals_metric_handlers.py

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -854,8 +854,9 @@ def _eval_case_to_agent_data(
854854
return None
855855
tools = None
856856
developer_instruction = None
857-
events = None
858857
agent_config = None
858+
tool_declarations = []
859+
event_contents = []
859860

860861
if eval_case.agent_info:
861862
agent_info = eval_case.agent_info
@@ -865,7 +866,8 @@ def _eval_case_to_agent_data(
865866
)
866867
if agent_info.tool_declarations:
867868
tool_declarations = agent_info.tool_declarations
868-
tools = types.evals.Tools(tool=tool_declarations)
869+
tools = types.evals.Tools(tool=tool_declarations)
870+
869871
if tools or developer_instruction:
870872
agent_config = types.evals.AgentConfig(
871873
tools=tools,
@@ -878,19 +880,12 @@ def _eval_case_to_agent_data(
878880
for event in eval_case.intermediate_events
879881
if event.content
880882
]
881-
if event_contents:
882-
events = types.evals.Events(event=event_contents)
883+
events = types.evals.Events(event=event_contents)
883884

884-
if events:
885-
return types.evals.AgentData(
886-
agent_config=agent_config,
887-
events=events,
888-
)
889-
else:
890-
return types.evals.AgentData(
891-
agent_config=agent_config,
892-
events_text="",
893-
)
885+
return types.evals.AgentData(
886+
agent_config=agent_config,
887+
events=events,
888+
)
894889

895890
def _build_request_payload(
896891
self, eval_case: types.EvalCase, response_index: int

0 commit comments

Comments
 (0)