Loslegen
Eine Suite schreiben
Eine Suite besteht aus zwei Dateien und einem Datensatz. oloproof init legt beide an, und das Gerüst ist kommentiert, weil beim ersten Onboarding-Durchgang vier Versuche an einem fehlenden String scheiterten und nicht an einer fehlenden Funktion.
Die Projektdatei
oloproof.yaml deklariert, was gemessen wird und was die Messung vornimmt.
version: 1
project: example
dataset: data/example.jsonl
system:
name: example-support-bot
version: "1"
callable: app:answer
config: {}
evaluators:
- type: exact_match
criterion: exact_label
field: labelsystem.callable ist ein Importpfad zu dem, was getestet wird. criterion ist der Name, den eine Metrik, ein Schwellenwert und ein Bericht für das Ergebnis dieses Evaluators verwenden, daher lohnt es sich, ein Wort zu wählen, das Sie in einem Gate wiedererkennen.
Die Evaluator-Typen
Jeder type:, den die Datei akzeptiert, nach Familie. Ein abgelehntes Feld wird mit den Feldern beantwortet, die dieser Evaluator akzeptiert, sodass ein falscher Versuch nur einen Lauf vom richtigen entfernt ist.
| Familie | Typen |
|---|---|
| Deterministisch | exact_match, contains, regex, json_schema |
| LLM-Judge | rubric_judge, groundedness_judge, citation_support_judge, probability_judge, cascade |
| Modell | model_classifier |
| Retrieval | hit_rate, recall, mrr, ndcg, citation_validity |
| Agent | agent_max_steps, agent_tool_called, agent_no_tool_loop, agent_tool_sequence, agent_no_undeclared_tool, agent_constraints_satisfied |
| Multi-Agent | agent_route, agent_tool_permissions, agent_max_handoffs |
| Prädiktiv | predictive_correct, predictive_precision, predictive_recall, predictive_ranking, predictive_brier, predictive_log_loss, predictive_absolute_error |
Ein LLM-Judge an einem Endpunkt, der nicht der von OpenAI ist, braucht zwei weitere Felder: base_url: und api_key_env:. Der Schlüssel wird zum Zeitpunkt des Aufrufs aus der Umgebung gelesen und nie gespeichert.
Ausführen
oloproof runEin Lauf führt jeden Fall aus, beurteilt jeden mit jedem Evaluator und speichert die Ergebnisse als inhaltsadressierte Datensätze. Ein erneuter Lauf gegen ein unverändertes System und einen unveränderten Datensatz verwendet wieder, was bereits vorliegt. Deshalb kostet ein wiederholter Lauf fast nichts und wird nicht gezählt.
oloproof plan RUN_ID --run meldet, was es bräuchte, um eine unentschiedene Regel zu entscheiden, beziffert anhand dessen, was dieser Lauf tatsächlich verbraucht hat. Mit einer Vergleichs-ID statt einer Lauf-ID braucht es kein Flag.
Replikate
Ein einmal gemessener Fall sagt Ihnen, was einmal passiert ist. replicates: misst jeden Fall mehr als einmal und meldet, wie viele Fälle ihr Urteil zwischen identischen Messungen geändert haben.
Diese Zahl sollten Sie kennen, bevor Sie irgendeinem Vergleich vertrauen: Bei einem produktiven Assistenten änderte etwa jeder neunte beobachtete Fall sein Urteil zwischen identischen Läufen.
Wie es weitergeht
- Festhalten, was ein System getan hat behandelt Artefakte sowie Nutzungs- und
Latenzmetriken.
Klassifikatoren und Regressoren behandeln die Retrieval-, Agenten- und prädiktiven Typen.
- Gating in der CI macht aus einer Entscheidung einen Exit-Code.
- Judges behandelt, was ein LLM-Judge erfüllen muss, bevor er als Gate für ein
Release dienen darf.
- Kernkonzepte erklärt die vier Entscheidungszustände und warum Nenner wichtig
sind.