CommonAutoRearsh/engine/scorer.py

22 lines
592 B
Python

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,
)