Skip to content

Commit 9770c31

Browse files
jsondaicopybara-github
authored andcommitted
fix: GenAI Client(evals) - Map legacy RubricMetric.GROUNDEDNESS to grounding_v1
PiperOrigin-RevId: 919752952
1 parent 6c6a047 commit 9770c31

2 files changed

Lines changed: 48 additions & 0 deletions

File tree

agentplatform/_genai/_evals_metric_loaders.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,23 @@ def FINAL_RESPONSE_QUALITY(self) -> LazyLoadedPrebuiltMetric:
355355
def HALLUCINATION(self) -> LazyLoadedPrebuiltMetric:
356356
return self.__getattr__("HALLUCINATION")
357357

358+
@property
359+
def GROUNDING(self) -> LazyLoadedPrebuiltMetric: # pylint: disable=invalid-name
360+
return self.__getattr__("GROUNDING", version="v1")
361+
362+
@property
363+
def GROUNDEDNESS(self) -> LazyLoadedPrebuiltMetric: # pylint: disable=invalid-name
364+
logger.warning(
365+
"RubricMetric.GROUNDEDNESS is a deprecated alias and now maps to"
366+
" RubricMetric.GROUNDING (grounding_v1). Note that the input"
367+
" contract changed: legacy GROUNDEDNESS scored 'response' against"
368+
" 'prompt'; grounding_v1 scores 'response' sentence-by-sentence"
369+
" against an additional 'context' field. Add a 'context' field to"
370+
" your dataset, otherwise scores will silently collapse to 0."
371+
" Update your code to use RubricMetric.GROUNDING directly."
372+
)
373+
return self.__getattr__("GROUNDING", version="v1")
374+
358375
@property
359376
def TOOL_USE_QUALITY(self) -> LazyLoadedPrebuiltMetric:
360377
return self.__getattr__("TOOL_USE_QUALITY")

tests/unit/agentplatform/genai/test_evals.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6355,6 +6355,37 @@ def test_metric_to_yaml_file_raises_importerror_if_yaml_is_none(self):
63556355
metric_obj.to_yaml_file("/fake/path/error.yaml")
63566356

63576357

6358+
class TestPrebuiltMetricLoaderGroundedness:
6359+
"""Unit tests for legacy RubricMetric.GROUNDEDNESS alias to grounding_v1."""
6360+
6361+
def test_grounding_resolves_to_grounding_v1(self):
6362+
lazy_metric = agentplatform_genai_types.RubricMetric.GROUNDING
6363+
assert lazy_metric.name == "GROUNDING"
6364+
assert lazy_metric._get_api_metric_spec_name() == "grounding_v1"
6365+
6366+
def test_groundedness_aliases_grounding_v1(self):
6367+
lazy_metric = agentplatform_genai_types.RubricMetric.GROUNDEDNESS
6368+
assert lazy_metric.name == "GROUNDING"
6369+
assert lazy_metric._get_api_metric_spec_name() == "grounding_v1"
6370+
6371+
def test_groundedness_logs_field_difference_warning(self, caplog):
6372+
loader_logger = (
6373+
"agentplatform._genai._evals_metric_loaders"
6374+
)
6375+
with caplog.at_level("WARNING", logger=loader_logger):
6376+
_ = agentplatform_genai_types.RubricMetric.GROUNDEDNESS
6377+
messages = [r.getMessage() for r in caplog.records if r.name == loader_logger]
6378+
assert any("GROUNDEDNESS" in m for m in messages)
6379+
assert any("grounding_v1" in m for m in messages)
6380+
assert any("context" in m for m in messages)
6381+
6382+
def test_groundedness_resolve_returns_grounding_v1_metric(self):
6383+
lazy_metric = agentplatform_genai_types.RubricMetric.GROUNDEDNESS
6384+
resolved = lazy_metric.resolve(api_client=mock.MagicMock())
6385+
assert isinstance(resolved, agentplatform_genai_types.Metric)
6386+
assert resolved.name == "grounding_v1"
6387+
6388+
63586389
class TestMergeResponseDatasets:
63596390
"""Unit tests for the merge_response_datasets_into_canonical_format function."""
63606391

0 commit comments

Comments
 (0)