Spaces:
Runtime error
Runtime error
Download src/llm_eval/scoring.py from bhargob11/llm-eval-framework: direct link, hf CLI and curl.
- Browser
- Download file 3 kB
-
https://huggingface.co/spaces/bhargob11/llm-eval-framework/resolve/main/src/llm_eval/scoring.py
- Command line
-
hf download hf://spaces/bhargob11/llm-eval-framework/src/llm_eval/scoring.py
-
curl -L -o scoring.py https://huggingface.co/spaces/bhargob11/llm-eval-framework/resolve/main/src/llm_eval/scoring.py
3 kB
| from __future__ import annotations | |
| import json | |
| from collections import defaultdict | |
| from pathlib import Path | |
| from typing import Any | |
| def load_results(run_dir: str | Path) -> list[dict[str, Any]]: | |
| path = Path(run_dir) / "results.jsonl" | |
| if not path.exists(): | |
| return [] | |
| rows: list[dict[str, Any]] = [] | |
| with path.open("r", encoding="utf-8") as file: | |
| for line in file: | |
| if line.strip(): | |
| rows.append(json.loads(line)) | |
| return rows | |
| def load_summary(run_dir: str | Path) -> dict[str, Any]: | |
| path = Path(run_dir) / "summary.json" | |
| if not path.exists(): | |
| return {} | |
| return json.loads(path.read_text(encoding="utf-8")) | |
| def _resolve_system_id(row: dict[str, Any]) -> str: | |
| if row.get("system_id"): | |
| return str(row["system_id"]) | |
| provider = str(row.get("provider", "unknown")) | |
| model = str(row.get("model", "unknown")) | |
| return f"{provider}:{model}" | |
| def score_results(results: list[dict[str, Any]], summary: dict[str, Any]) -> dict[str, Any]: | |
| by_system: dict[str, dict[str, Any]] = defaultdict( | |
| lambda: { | |
| "provider": "", | |
| "model": "", | |
| "attempted": 0, | |
| "correct": 0, | |
| "accuracy": 0.0, | |
| "avg_latency_ms": 0.0, | |
| "categories": defaultdict(lambda: {"attempted": 0, "correct": 0, "accuracy": 0.0}), | |
| } | |
| ) | |
| for row in results: | |
| system_id = _resolve_system_id(row) | |
| provider = str(row.get("provider", "unknown")) | |
| model = str(row.get("model", "unknown")) | |
| is_correct = bool(row.get("is_correct", False)) | |
| category = str(row.get("category", "unknown")) | |
| latency = float(row.get("latency_ms") or 0) | |
| system_bucket = by_system[system_id] | |
| system_bucket["provider"] = provider | |
| system_bucket["model"] = model | |
| system_bucket["attempted"] += 1 | |
| system_bucket["correct"] += int(is_correct) | |
| system_bucket["avg_latency_ms"] += latency | |
| category_bucket = system_bucket["categories"][category] | |
| category_bucket["attempted"] += 1 | |
| category_bucket["correct"] += int(is_correct) | |
| for system_id, metrics in by_system.items(): | |
| attempted = metrics["attempted"] | |
| metrics["accuracy"] = (metrics["correct"] / attempted) if attempted else 0.0 | |
| metrics["avg_latency_ms"] = (metrics["avg_latency_ms"] / attempted) if attempted else 0.0 | |
| metrics["errors"] = int(summary.get("provider_metrics", {}).get(system_id, {}).get("errors", 0)) | |
| for cat_name, cat in metrics["categories"].items(): | |
| cat_attempted = cat["attempted"] | |
| cat["accuracy"] = (cat["correct"] / cat_attempted) if cat_attempted else 0.0 | |
| metrics["categories"][cat_name] = dict(cat) | |
| metrics["categories"] = dict(metrics["categories"]) | |
| return { | |
| "providers": dict(by_system), | |
| "total_rows": len(results), | |
| "status": summary.get("status", "unknown"), | |
| } | |