Skip to content

Commit 4c60c7a

Browse files
committed
fix(eval): preserve custom eval metadata
1 parent 9670ce2 commit 4c60c7a

2 files changed

Lines changed: 29 additions & 1 deletion

File tree

src/google/adk/evaluation/common.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ class EvalBaseModel(pydantic.BaseModel):
2222
model_config = pydantic.ConfigDict(
2323
alias_generator=alias_generators.to_camel,
2424
populate_by_name=True,
25-
extra="forbid",
25+
extra="allow",
2626
arbitrary_types_allowed=True,
2727
)

tests/unittests/evaluation/test_eval_case.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,38 @@
2222
from google.adk.evaluation.eval_case import IntermediateData
2323
from google.adk.evaluation.eval_case import InvocationEvent
2424
from google.adk.evaluation.eval_case import InvocationEvents
25+
from google.adk.evaluation.eval_case import SessionInput
2526
from google.genai import types as genai_types
2627
import pytest
2728

2829

30+
def test_eval_models_preserve_extra_metadata():
31+
session_input = SessionInput(
32+
app_name='app',
33+
user_id='user',
34+
eval_group='retrieval',
35+
source='nightly',
36+
)
37+
38+
assert session_input.model_extra == {
39+
'eval_group': 'retrieval',
40+
'source': 'nightly',
41+
}
42+
assert session_input.model_dump()['eval_group'] == 'retrieval'
43+
44+
eval_case = EvalCase(
45+
eval_id='case_1',
46+
conversation=[],
47+
session_input=session_input,
48+
owner='platform',
49+
)
50+
51+
assert eval_case.model_extra == {'owner': 'platform'}
52+
dumped = eval_case.model_dump()
53+
assert dumped['owner'] == 'platform'
54+
assert dumped['session_input']['source'] == 'nightly'
55+
56+
2957
def test_get_all_tool_calls_with_none_input():
3058
"""Tests that an empty list is returned when intermediate_data is None."""
3159
assert get_all_tool_calls(None) == []

0 commit comments

Comments
 (0)