Hoppa till innehållet
AI-grafen
EUniversitetLaboration· ca 60 min· sandlåda på servern

Labb: bygg en eval-harness

Bygga en harness som kör en modell (här: en regelbaserad funktion) mot testfall med facit, räknar mått, hittar regressioner och skriver en rapport.

Teori

En eval är en lista fall {input, expected} + ett mått (exakt match, normaliserad match, numerisk tolerans). Harnessen ska vara deterministisk och jämförbar mellan versioner.

Deluppgifter

  1. load_cases — load_cases(path) läser JSONL till en lista dicts.
  2. score — score(pred, expected, kind) för kind exact|normalized|numeric(tol 1e-6).
  3. run_eval — run_eval(model_fn, cases) → {accuracy, n, failures:[…]}; compare(a, b) → regressioner (fall som gick från rätt till fel).

Godkänt när: accuracy >= 0.8

Startkoden

körs i en isolerad sandlåda på servern
import json


def baseline(q):
    """Regelbaserad 'modell' att utvärdera."""
    q = q.lower()
    if "huvudstad" in q and "sverige" in q:
        return "Stockholm"
    if q.startswith("vad är") and "+" in q:
        a, b = q.replace("vad är", "").replace("?", "").split("+")
        return str(int(a) + int(b))
    return "vet inte"


def load_cases(path):
    # TODO: en dict per rad
    ...


def score(pred, expected, kind="exact"):
    # TODO: exact | normalized (lower + strip + ett mellanslag) | numeric (abs diff < 1e-6)
    ...


def run_eval(model_fn, cases):
    # TODO: {"accuracy": andel rätt, "n": antal, "failures": [{"input", "expected", "got"}], "results": {input: bool}}
    ...


def compare(before, after):
    # TODO: lista inputs där before rätt och after fel
    ...

Du skriver koden, tester du inte ser avgör om den håller. Skapa ett gratis konto för att köra labben.

Prova diagnosenSkapa konto gratis

Förväntade resultat

Baslinjemodellen (baseline) får ≥ 0,8 på fallen; compare hittar exakt de fall som regredierat.

Vanliga fel

  • Normaliserar inte whitespace/skiftläge i 'normalized'.
  • Jämför flyttal med ==.
  • Rapporten är inte deterministisk (set-ordning).