Skip to content

Commit 8807bc3

Browse files
vertex-sdk-botcopybara-github
authored andcommitted
fix: GenAI Client(evals): Remove prompt filled by starting prompt
PiperOrigin-RevId: 882785935
1 parent 14c298a commit 8807bc3

File tree

3 files changed

+93
-6
lines changed

3 files changed

+93
-6
lines changed

tests/unit/vertexai/genai/test_evals.py

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5961,6 +5961,9 @@ def test_generate_user_scenarios(self):
59615961
assert eval_dataset.eval_dataset_df is not None
59625962
assert len(eval_dataset.eval_dataset_df) == 2
59635963
assert eval_dataset.eval_dataset_df.iloc[0]["starting_prompt"] == "Prompt 1"
5964+
assert eval_dataset.eval_dataset_df.iloc[0]["conversation_plan"] == "Plan 1"
5965+
assert eval_dataset.eval_dataset_df.iloc[1]["starting_prompt"] == "Prompt 2"
5966+
assert eval_dataset.eval_dataset_df.iloc[1]["conversation_plan"] == "Plan 2"
59645967

59655968
self.mock_api_client.request.assert_called_once()
59665969

@@ -5984,10 +5987,87 @@ async def test_async_generate_user_scenarios(self):
59845987

59855988
assert eval_dataset.eval_dataset_df is not None
59865989
assert len(eval_dataset.eval_dataset_df) == 2
5990+
assert eval_dataset.eval_dataset_df.iloc[0]["starting_prompt"] == "Prompt 1"
5991+
assert eval_dataset.eval_dataset_df.iloc[0]["conversation_plan"] == "Plan 1"
5992+
assert eval_dataset.eval_dataset_df.iloc[1]["starting_prompt"] == "Prompt 2"
5993+
assert eval_dataset.eval_dataset_df.iloc[1]["conversation_plan"] == "Plan 2"
59875994

59885995
self.mock_api_client.async_request.assert_called_once()
59895996

59905997

5998+
class TestConvertRequestToDatasetRow:
5999+
"""Unit tests for the _convert_request_to_dataset_row function."""
6000+
6001+
def test_convert_request_to_dataset_row_with_prompt_and_golden(self):
6002+
request = vertexai_genai_types.EvaluationItemRequest(
6003+
prompt=vertexai_genai_types.EvaluationPrompt(text="test prompt"),
6004+
golden_response=vertexai_genai_types.CandidateResponse(
6005+
text="golden response"
6006+
),
6007+
)
6008+
result = _evals_common._convert_request_to_dataset_row(request)
6009+
assert result["prompt"] == "test prompt"
6010+
assert result["reference"] == vertexai_genai_types.CandidateResponse(
6011+
text="golden response"
6012+
)
6013+
assert result["intermediate_events"] == []
6014+
assert result["agent_data"] is None
6015+
6016+
def test_convert_request_to_dataset_row_with_user_scenario(self):
6017+
request = vertexai_genai_types.EvaluationItemRequest(
6018+
prompt=vertexai_genai_types.EvaluationPrompt(
6019+
user_scenario=vertexai_genai_types.evals.UserScenario(
6020+
starting_prompt="start prompt", conversation_plan="convo plan"
6021+
)
6022+
)
6023+
)
6024+
result = _evals_common._convert_request_to_dataset_row(request)
6025+
assert result["starting_prompt"] == "start prompt"
6026+
assert result["conversation_plan"] == "convo plan"
6027+
assert result["prompt"] is None
6028+
6029+
def test_convert_request_to_dataset_row_with_candidate_events(self):
6030+
request = vertexai_genai_types.EvaluationItemRequest(
6031+
candidate_responses=[
6032+
vertexai_genai_types.CandidateResponse(
6033+
candidate="test-candidate",
6034+
text="candidate text",
6035+
events=[
6036+
genai_types.Content(
6037+
parts=[genai_types.Part(text="event part")], role="model"
6038+
)
6039+
],
6040+
)
6041+
]
6042+
)
6043+
result = _evals_common._convert_request_to_dataset_row(request)
6044+
assert result["test-candidate"] == "candidate text"
6045+
assert result["intermediate_events"] == [
6046+
{
6047+
"event_id": "test-candidate",
6048+
"content": {
6049+
"parts": [genai_types.Part(text="event part")],
6050+
"role": "model",
6051+
},
6052+
}
6053+
]
6054+
assert result["agent_data"] is None
6055+
6056+
def test_convert_request_to_dataset_row_with_agent_data(self):
6057+
mock_agent_data = vertexai_genai_types.evals.AgentData(turns=[])
6058+
request = vertexai_genai_types.EvaluationItemRequest(
6059+
candidate_responses=[
6060+
vertexai_genai_types.CandidateResponse(
6061+
candidate="test-candidate", agent_data=mock_agent_data
6062+
)
6063+
]
6064+
)
6065+
result = _evals_common._convert_request_to_dataset_row(request)
6066+
assert result["test-candidate"] is None
6067+
assert result["agent_data"] == mock_agent_data
6068+
assert result["intermediate_events"] == []
6069+
6070+
59916071
class TestCreateEvaluationSetFromDataFrame:
59926072
"""Unit tests for the _create_evaluation_set_from_dataframe function."""
59936073

vertexai/_genai/_evals_common.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2026,7 +2026,17 @@ def _convert_request_to_dataset_row(
20262026
request.prompt.text if request.prompt and request.prompt.text else None
20272027
)
20282028
dict_row[_evals_constant.REFERENCE] = request.golden_response
2029+
2030+
if request.prompt and request.prompt.user_scenario:
2031+
dict_row[_evals_constant.STARTING_PROMPT] = (
2032+
request.prompt.user_scenario.starting_prompt
2033+
)
2034+
dict_row[_evals_constant.CONVERSATION_PLAN] = (
2035+
request.prompt.user_scenario.conversation_plan
2036+
)
2037+
20292038
intermediate_events = []
2039+
agent_data = None
20302040
if request.candidate_responses:
20312041
for candidate in request.candidate_responses:
20322042
if candidate.candidate is not None:
@@ -2041,7 +2051,10 @@ def _convert_request_to_dataset_row(
20412051
"content": content_dict,
20422052
}
20432053
intermediate_events.append(int_events_dict)
2054+
agent_data = request.candidate_responses[0].agent_data
2055+
20442056
dict_row[_evals_constant.INTERMEDIATE_EVENTS] = intermediate_events
2057+
dict_row[_evals_constant.AGENT_DATA] = agent_data
20452058
return dict_row
20462059

20472060

vertexai/_genai/_evals_utils.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -347,13 +347,7 @@ def _postprocess_user_scenarios_response(
347347
data_for_df = []
348348
if hasattr(response, "user_scenarios") and response.user_scenarios:
349349
for scenario in response.user_scenarios:
350-
prompt_content = None
351-
if scenario.starting_prompt:
352-
prompt_content = genai_types.Content(
353-
parts=[genai_types.Part(text=scenario.starting_prompt)]
354-
)
355350
eval_case = types.EvalCase(
356-
prompt=prompt_content,
357351
user_scenario=scenario,
358352
)
359353
eval_cases.append(eval_case)

0 commit comments

Comments
 (0)