from __future__ import annotations import json from engine.models import ScoreResult def parse_score_output(output: str, score_field: str, metrics_field: str) -> ScoreResult: parsed = json.loads(output) if not isinstance(parsed, dict): raise ValueError("score output must be a JSON object") metrics = parsed[metrics_field] if not isinstance(metrics, dict): raise ValueError(f"{metrics_field} must be a JSON object") return ScoreResult( primary_score=float(parsed[score_field]), metrics=dict(metrics), raw_output=parsed, )