Skip to content

Commit 4ca9fcc

Browse files
vertex-sdk-botcopybara-github
authored andcommitted
feat: GenAI SDK client(evals) Update data model for agent evaluation
PiperOrigin-RevId: 816927504
1 parent 21dac70 commit 4ca9fcc

File tree

2 files changed

+66
-36
lines changed

2 files changed

+66
-36
lines changed

tests/unit/vertexai/genai/test_evals.py

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2297,10 +2297,10 @@ def test_convert_tool_call_parts(self):
22972297
)
22982298

22992299

2300-
class TestAgentMetadata:
2301-
"""Unit tests for the AgentMetadata class."""
2300+
class TestAgentInfo:
2301+
"""Unit tests for the AgentInfo class."""
23022302

2303-
def test_agent_metadata_creation(self):
2303+
def test_agent_info_creation(self):
23042304
tool = genai_types.Tool(
23052305
function_declarations=[
23062306
genai_types.FunctionDeclaration(
@@ -2313,18 +2313,16 @@ def test_agent_metadata_creation(self):
23132313
)
23142314
]
23152315
)
2316-
agent_metadata = vertexai_genai_types.AgentMetadata(
2316+
agent_info = vertexai_genai_types.AgentInfo(
23172317
name="agent1",
23182318
instruction="instruction1",
23192319
description="description1",
23202320
tool_declarations=[tool],
2321-
sub_agent_names=["sub_agent1"],
23222321
)
2323-
assert agent_metadata.name == "agent1"
2324-
assert agent_metadata.instruction == "instruction1"
2325-
assert agent_metadata.description == "description1"
2326-
assert agent_metadata.tool_declarations == [tool]
2327-
assert agent_metadata.sub_agent_names == ["sub_agent1"]
2322+
assert agent_info.name == "agent1"
2323+
assert agent_info.instruction == "instruction1"
2324+
assert agent_info.description == "description1"
2325+
assert agent_info.tool_declarations == [tool]
23282326

23292327

23302328
class TestEvent:
@@ -2359,13 +2357,11 @@ def test_eval_case_with_agent_eval_fields(self):
23592357
)
23602358
]
23612359
)
2362-
agent_metadata = {
2363-
"agent1": vertexai_genai_types.AgentMetadata(
2364-
name="agent1",
2365-
instruction="instruction1",
2366-
tool_declarations=[tool],
2367-
)
2368-
}
2360+
agent_info = vertexai_genai_types.AgentInfo(
2361+
name="agent1",
2362+
instruction="instruction1",
2363+
tool_declarations=[tool],
2364+
)
23692365
intermediate_events = [
23702366
vertexai_genai_types.Event(
23712367
event_id="event1",
@@ -2381,14 +2377,26 @@ def test_eval_case_with_agent_eval_fields(self):
23812377
response=genai_types.Content(parts=[genai_types.Part(text="Hi")])
23822378
)
23832379
],
2384-
agent_metadata=agent_metadata,
2380+
agent_info=agent_info,
23852381
intermediate_events=intermediate_events,
23862382
)
23872383

2388-
assert eval_case.agent_metadata == agent_metadata
2384+
assert eval_case.agent_info == agent_info
23892385
assert eval_case.intermediate_events == intermediate_events
23902386

23912387

2388+
class TestSessionInput:
2389+
"""Unit tests for the SessionInput class."""
2390+
2391+
def test_session_input_creation(self):
2392+
session_input = vertexai_genai_types.SessionInput(
2393+
user_id="user1",
2394+
state={"key": "value"},
2395+
)
2396+
assert session_input.user_id == "user1"
2397+
assert session_input.state == {"key": "value"}
2398+
2399+
23922400
class TestMetric:
23932401
"""Unit tests for the Metric class."""
23942402

vertexai/_genai/types.py

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10398,8 +10398,8 @@ class EvalRunInferenceConfigDict(TypedDict, total=False):
1039810398
EvalRunInferenceConfigOrDict = Union[EvalRunInferenceConfig, EvalRunInferenceConfigDict]
1039910399

1040010400

10401-
class AgentMetadata(_common.BaseModel):
10402-
"""AgentMetadata for agent eval."""
10401+
class AgentInfo(_common.BaseModel):
10402+
"""The agent info of an agent, used for agent eval."""
1040310403

1040410404
name: Optional[str] = Field(
1040510405
default=None, description="""Agent name, used as an identifier."""
@@ -10413,13 +10413,10 @@ class AgentMetadata(_common.BaseModel):
1041310413
tool_declarations: Optional[genai_types.ToolListUnion] = Field(
1041410414
default=None, description="""List of tools used by the Agent."""
1041510415
)
10416-
sub_agent_names: Optional[list[str]] = Field(
10417-
default=None, description="""List of sub-agent names."""
10418-
)
1041910416

1042010417

10421-
class AgentMetadataDict(TypedDict, total=False):
10422-
"""AgentMetadata for agent eval."""
10418+
class AgentInfoDict(TypedDict, total=False):
10419+
"""The agent info of an agent, used for agent eval."""
1042310420

1042410421
name: Optional[str]
1042510422
"""Agent name, used as an identifier."""
@@ -10433,11 +10430,8 @@ class AgentMetadataDict(TypedDict, total=False):
1043310430
tool_declarations: Optional[genai_types.ToolListUnionDict]
1043410431
"""List of tools used by the Agent."""
1043510432

10436-
sub_agent_names: Optional[list[str]]
10437-
"""List of sub-agent names."""
10438-
1043910433

10440-
AgentMetadataOrDict = Union[AgentMetadata, AgentMetadataDict]
10434+
AgentInfoOrDict = Union[AgentInfo, AgentInfoDict]
1044110435

1044210436

1044310437
class ContentMapContents(_common.BaseModel):
@@ -10669,11 +10663,11 @@ class EvalCase(_common.BaseModel):
1066910663
)
1067010664
intermediate_events: Optional[list[Event]] = Field(
1067110665
default=None,
10672-
description="""Intermediate events of a single turn in agent eval or intermediate events of the last turn for multi-turn agent eval.""",
10666+
description="""This field is experimental and may change in future versions. Intermediate events of a single turn in an agent run or intermediate events of the last turn for multi-turn an agent run.""",
1067310667
)
10674-
agent_metadata: Optional[dict[str, AgentMetadata]] = Field(
10668+
agent_info: Optional[AgentInfo] = Field(
1067510669
default=None,
10676-
description="""Agent metadata for agent eval, keyed by agent name. This can be extended for multi-agent evaluation.""",
10670+
description="""This field is experimental and may change in future versions. The agent info of the agent under evaluation. This can be extended for multi-agent evaluation.""",
1067710671
)
1067810672
# Allow extra fields to support custom metric prompts and stay backward compatible.
1067910673
model_config = ConfigDict(frozen=True, extra="allow")
@@ -10704,10 +10698,10 @@ class EvalCaseDict(TypedDict, total=False):
1070410698
"""Unique identifier for the evaluation case."""
1070510699

1070610700
intermediate_events: Optional[list[EventDict]]
10707-
"""Intermediate events of a single turn in agent eval or intermediate events of the last turn for multi-turn agent eval."""
10701+
"""This field is experimental and may change in future versions. Intermediate events of a single turn in an agent run or intermediate events of the last turn for multi-turn an agent run."""
1070810702

10709-
agent_metadata: Optional[dict[str, AgentMetadataDict]]
10710-
"""Agent metadata for agent eval, keyed by agent name. This can be extended for multi-agent evaluation."""
10703+
agent_info: Optional[AgentInfoDict]
10704+
"""This field is experimental and may change in future versions. The agent info of the agent under evaluation. This can be extended for multi-agent evaluation."""
1071110705

1071210706

1071310707
EvalCaseOrDict = Union[EvalCase, EvalCaseDict]
@@ -11076,6 +11070,34 @@ class EvaluationResultDict(TypedDict, total=False):
1107611070
EvaluationResultOrDict = Union[EvaluationResult, EvaluationResultDict]
1107711071

1107811072

11073+
class SessionInput(_common.BaseModel):
11074+
"""This field is experimental and may change in future versions.
11075+
11076+
Input to initialize a session and run an agent, used for agent evaluation.
11077+
"""
11078+
11079+
user_id: Optional[str] = Field(default=None, description="""The user id.""")
11080+
state: Optional[dict[str, str]] = Field(
11081+
default=None, description="""The state of the session."""
11082+
)
11083+
11084+
11085+
class SessionInputDict(TypedDict, total=False):
11086+
"""This field is experimental and may change in future versions.
11087+
11088+
Input to initialize a session and run an agent, used for agent evaluation.
11089+
"""
11090+
11091+
user_id: Optional[str]
11092+
"""The user id."""
11093+
11094+
state: Optional[dict[str, str]]
11095+
"""The state of the session."""
11096+
11097+
11098+
SessionInputOrDict = Union[SessionInput, SessionInputDict]
11099+
11100+
1107911101
class WinRateStats(_common.BaseModel):
1108011102
"""Statistics for win rates for a single metric."""
1108111103

0 commit comments

Comments
 (0)