diff --git a/agentplatform/_genai/_evals_visualization.py b/agentplatform/_genai/_evals_visualization.py
index c529b6f14e..80f6536e2d 100644
--- a/agentplatform/_genai/_evals_visualization.py
+++ b/agentplatform/_genai/_evals_visualization.py
@@ -1155,7 +1155,7 @@ def get_comparison_html(eval_result_json: str) -> str:
winRateText = m.win_rates.map((rate, i) => `${{candidateNames ? candidateNames[i] : `Candidate #${{i+1}}`}} wins: ${{(rate * 100).toFixed(1)}}%`).join('
');
if (m.tie_rate !== undefined) {{ winRateText += `
Ties: ${{(m.tie_rate * 100).toFixed(1)}}%`; }}
}}
- table += `
| ${{m.metric_name}} | ${{m.mean_score.toFixed(4)}} | ${{m.stdev_score.toFixed(4)}} | ${{winRateText}} |
`;
+ table += `| ${{m.metric_name}} | ${{m.mean_score != null ? m.mean_score.toFixed(4) : 'N/A'}} | ${{m.stdev_score != null ? m.stdev_score.toFixed(4) : 'N/A'}} | ${{winRateText}} |
`;
}});
container.innerHTML = table + '';
}}
diff --git a/tests/unit/agentplatform/genai/test_evals.py b/tests/unit/agentplatform/genai/test_evals.py
index b10b594bed..6feb9aba93 100644
--- a/tests/unit/agentplatform/genai/test_evals.py
+++ b/tests/unit/agentplatform/genai/test_evals.py
@@ -822,6 +822,16 @@ def test_get_comparison_html(self):
assert payload_b64 in html
assert "DOMPurify" in html
+ def test_get_comparison_html_shows_na_for_missing_summary_scores(self):
+ from vertexai._genai import (
+ _evals_visualization as vertexai_evals_visualization,
+ )
+
+ for viz in (_evals_visualization, vertexai_evals_visualization):
+ html = viz.get_comparison_html("{}")
+ assert "m.mean_score != null ? m.mean_score.toFixed(4) : 'N/A'" in html
+ assert "m.stdev_score != null ? m.stdev_score.toFixed(4) : 'N/A'" in html
+
def test_get_inference_html(self):
"""Tests that get_inference_html generates valid HTML with data."""
from agentplatform._genai import _evals_visualization
diff --git a/vertexai/_genai/_evals_visualization.py b/vertexai/_genai/_evals_visualization.py
index 45b50b6ebc..bedc57bb6c 100644
--- a/vertexai/_genai/_evals_visualization.py
+++ b/vertexai/_genai/_evals_visualization.py
@@ -1111,7 +1111,7 @@ def get_comparison_html(eval_result_json: str) -> str:
winRateText = m.win_rates.map((rate, i) => `${{candidateNames ? candidateNames[i] : `Candidate #${{i+1}}`}} wins: ${{(rate * 100).toFixed(1)}}%`).join('
');
if (m.tie_rate !== undefined) {{ winRateText += `
Ties: ${{(m.tie_rate * 100).toFixed(1)}}%`; }}
}}
- table += `| ${{m.metric_name}} | ${{m.mean_score.toFixed(4)}} | ${{m.stdev_score.toFixed(4)}} | ${{winRateText}} |
`;
+ table += `| ${{m.metric_name}} | ${{m.mean_score != null ? m.mean_score.toFixed(4) : 'N/A'}} | ${{m.stdev_score != null ? m.stdev_score.toFixed(4) : 'N/A'}} | ${{winRateText}} |
`;
}});
container.innerHTML = table + '';
}}