22 lines
592 B
Python
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,
|
|
)
|