Skip to content

Commit d0399ef

Browse files
vertex-sdk-botcopybara-github
authored andcommitted
feat: GenAI Client(evals): Patch agent config map to agent data
PiperOrigin-RevId: 877596772
1 parent fba5350 commit d0399ef

File tree

2 files changed

+45
-4
lines changed

2 files changed

+45
-4
lines changed

tests/unit/vertexai/genai/test_evals.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1387,6 +1387,11 @@ def test_run_inference_with_local_agent(
13871387
)
13881388

13891389
mock_agent_instance = mock.Mock()
1390+
mock_agent_instance.name = "mock_agent"
1391+
mock_agent_instance.description = "mock description"
1392+
mock_agent_instance.instruction = "mock instruction"
1393+
mock_agent_instance.tools = []
1394+
mock_agent_instance.sub_agents = []
13901395
mock_llm_agent.return_value = mock_agent_instance
13911396
mock_session_service.return_value.create_session = mock.AsyncMock()
13921397
mock_runner_instance = mock_runner.return_value
@@ -1914,6 +1919,35 @@ def test_run_agent_internal_multi_turn_success(self, mock_run_agent):
19141919
{"turn_index": 1, "turn_id": "t2", "events": []},
19151920
]
19161921

1922+
@mock.patch.object(_evals_common, "_run_agent")
1923+
def test_run_agent_internal_multi_turn_with_agent(self, mock_run_agent):
1924+
mock_run_agent.return_value = [
1925+
[
1926+
{"turn_index": 0, "turn_id": "t1", "events": []},
1927+
]
1928+
]
1929+
prompt_dataset = pd.DataFrame({"prompt": ["p1"], "conversation_plan": ["plan"]})
1930+
mock_agent = mock.Mock()
1931+
mock_agent.name = "mock_agent"
1932+
mock_agent.description = "mock description"
1933+
mock_agent.instruction = "mock instruction"
1934+
mock_agent.tools = []
1935+
mock_agent.sub_agents = []
1936+
mock_api_client = mock.Mock()
1937+
result_df = _evals_common._run_agent_internal(
1938+
api_client=mock_api_client,
1939+
agent_engine=None,
1940+
agent=mock_agent,
1941+
prompt_dataset=prompt_dataset,
1942+
)
1943+
1944+
assert "agent_data" in result_df.columns
1945+
agent_data = result_df["agent_data"][0]
1946+
assert agent_data["turns"] == [
1947+
{"turn_index": 0, "turn_id": "t1", "events": []},
1948+
]
1949+
assert "mock_agent" in agent_data["agents"]
1950+
19171951
@mock.patch("vertexai._genai._evals_common.ADK_SessionInput") # fmt: skip
19181952
@mock.patch("vertexai._genai._evals_common.EvaluationGenerator") # fmt: skip
19191953
@mock.patch("vertexai._genai._evals_common.LlmBackedUserSimulator") # fmt: skip

vertexai/_genai/_evals_common.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1603,18 +1603,25 @@ def _run_agent_internal(
16031603
processed_intermediate_events = []
16041604
processed_responses = []
16051605
processed_agent_data = []
1606+
agent_data_agents = None
1607+
if agent:
1608+
agent_data_agents = types.evals.AgentData._get_agents_map(agent)
16061609

16071610
for resp_item in raw_responses:
16081611
intermediate_events_row: list[dict[str, Any]] = []
1609-
response_row = None
1610-
agent_data_row = None
1612+
response_row: Optional[Union[str, dict[str, Any]]] = None
1613+
agent_data_row: Optional[Union[str, dict[str, Any]]] = None
16111614

16121615
if _is_multi_turn_agent_run(user_simulator_config, prompt_dataset):
16131616
if isinstance(resp_item, dict) and "error" in resp_item:
1614-
response_row = json.dumps(resp_item)
1617+
agent_data_row = json.dumps(resp_item)
16151618
else:
16161619
# TODO: Migrate single turn agent run result to AgentData.
1617-
agent_data_row = types.evals.AgentData(turns=resp_item).model_dump()
1620+
agent_data_row = types.evals.AgentData(
1621+
turns=resp_item,
1622+
agents=agent_data_agents,
1623+
).model_dump()
1624+
16181625
else:
16191626
if isinstance(resp_item, list):
16201627
try:

0 commit comments

Comments
 (0)