Zum Hauptinhalt springen

Eval Harness v2.0

Zusammenfassung. Diese Seite behandelt Installation, Konfiguration und Verwendung des MT-Evaluierungsharness — des Werkzeugs, das Übersetzungsmethoden anhand standardisierter Korpora benchmarkt und bewertete Run Cards erzeugt. Für die maßgeblichen Definitionen von Metriken, Schemata und Evaluierungsprotokoll siehe die Benchmark Specification.

Das Harness führt Übersetzungsexperimente durch und erzeugt Run Cards. Es übernimmt die Prompt-Konstruktion, API-Aufrufe, Bewertung und Ergebnisserialisierung — Sie stellen den Datensatz und das Modell bereit.

Installation

Anforderungen: Python 3.10+

pip install sacrebleu aiohttp

Klonen Sie das Harness-Repository:

git clone https://github.com/gamedaysuits/arena.git
cd arena

Verwendung

mt-eval run --corpus path/to/dataset.json

Dies führt jeden Eintrag im Korpus durch das konfigurierte Modell (oder Methoden-Plugin), bewertet die Ausgaben und schreibt eine Run-Card-JSON-Datei in das Ausgabeverzeichnis.

CLI-Flags

mt-eval run

FlagErforderlichStandardBeschreibung
--corpusPfad zur Korpusdatei (.json, .jsonl, .tsv)
--source-file / --reference-fileParalleltextdateien (FLORES+, WMT-Format)
-m, --modelgemini-proModell-Slug (Kurzname oder vollständige OpenRouter-ID). Wird über shared/model-aliases.json aufgelöst. Kommagetrennt für Mehrmodell-Läufe
-d, --datasetallDatensatzfilter: all, Segmentname oder ID-Bereich
--idsKommagetrennte Eintrags-IDs zur Evaluierung
--source-langEnglishName der Ausgangssprache
--target-langName der Zielsprache
-p, --promptnaivePrompt-Version (naive, custom, champollion)
--coaching-filePfad zur Coaching-Prompt-Textdatei
--coachingInline-Coaching-Text (Zeichenkette in Anführungszeichen)
--methodPfad zum Methoden-Plugin-Verzeichnis (enthält method.json + Python-Modul)
--method-cardPfad zur Method-Card-JSON für Leaderboard-Metadaten
--fst-retries0Anzahl der FST-Wiederholungsversuche (nur Standard-LLM-Methode)
--skip-fstfalseFST-Qualitätsschranke vollständig überspringen
--toolsfalseTool-Calling-Modus aktivieren
--tools-listKommagetrennte Tool-Namen
--max-tool-rounds8Maximale Anzahl an Tool-Calling-Runden pro Eintrag
--hooksNamen der Post-Translation-Hooks
--style-profilePfad zu einer Stilprofil-JSON. Aktiviert Metriken zur Konsistenz des Schreibstils (informativ — niemals Teil des composite score; siehe § Schreibstil- und Register-Metriken)
-b, --batch-size25Einträge pro API-Aufruf
-c, --concurrency8Parallele API-Aufrufe
--max-tokens32768Maximale Tokens pro API-Aufruf
--temperature0.0Sampling-Temperatur (0.0 = deterministisch)
--no-cachefalseAntwort-Caching deaktivieren
--cache-direval/cache/harnessPfad zum Cache-Verzeichnis
-o, --output-direval/logs/harnessAusgabeverzeichnis für Run Cards und Logs
-n, --nameMenschenlesbarer Laufname
--dry-runfalseKonfiguration validieren, ohne API-Aufrufe durchzuführen
--champollion-configPfad zu champollion.config.json
--champollion-cards-dirVerzeichnis der Sprachkarten
--target-lang-codeBCP-47-Sprachcode

Weitere Unterbefehle

UnterbefehlBeschreibung
mt-eval test <log_path>Ein abgeschlossenes Run-Log analysieren
mt-eval publish <report_path>Eine Run Card an das Leaderboard übermitteln
mt-eval compare <logs...>Mehrere Läufe nebeneinander vergleichen
mt-eval dashboard <logs...>Ein HTML-Dashboard aus Run-Logs erzeugen
mt-eval list models|prompts|datasetsVerfügbare Ressourcen auflisten
mt-eval exportDas aktuelle Setup als Champollion-Methoden-Plugin paketieren
mt-eval export-configDie aufgelöste MethodConfig (alle 8 kanonischen Felder) als JSON exportieren

Beispiele

# Run with defaults (gemini-pro alias → google/gemini-3.1-pro-preview, naive prompt)
mt-eval run --corpus data/edtekla-dev-v1.json

# Coached experiment with coaching file
mt-eval run \
--corpus data/edtekla-dev-v1.json \
--model google/gemini-3.1-pro \
--coaching-file prompts/crk-coaching-v8.txt \
--temperature 0.0

# Run a custom method plugin with FST retries
mt-eval run \
--corpus data/edtekla-dev-v1.json \
--method ./methods/fst-gated-pipeline \
--fst-retries 3

Run-Card-Schema

Jedes Experiment erzeugt eine Run Card — ein eigenständiges JSON-Dokument. Die Struktur der obersten Ebene:

{
"run_id": "uuid-v4",
"harness_version": "2.0",
"model_slug": "google/gemini-3.1-pro",
"model_id": "gemini-3.1-pro-001",
"condition": "baseline",
"timestamp": "2026-06-01T03:22:41Z",
"elapsed_seconds": 142.7,
"dataset": { ... },
"config": { ... },
"method_card": { ... },
"system_prompt_sha256": "abc123...",
"system_prompt_used": "You are a translator...",
"fingerprint": { ... },
"scores": { ... },
"totals": { ... },
"environment": { ... },
"results": [ ... ],
"run_card_hash": "sha256-of-entire-card"
}

Siehe die Run Card Specification für das vollständige Schema mit dokumentierten Feldern.

:::info Maßgebliches Schema Die Benchmark Specification ist die einzige Quelle der Wahrheit für das Run-Card-Schema. Für Metrikdefinitionen, composite weights und Qualitätsstufen siehe die Scoring Specification. Diese Seite dokumentiert die Verwendung des Harness; die Spezifikationen definieren, was die Ausgaben bedeuten. :::

Wichtige Blöcke

dataset — Identifiziert, welcher Datensatz verwendet wurde, einschließlich seines Inhaltshashes, sodass Ergebnisse an eine bestimmte Version gebunden sind:

// Example using master_corpus.json (62 gold + 342 textbook = 404)
{
"id": "edtekla-dev-v1",
"version": "1.0",
"language_pair": "EN→CRK",
"sha256": "...",
"entry_count": 404
}

scores — Aggregierte Metriken für den Lauf:

// Counts reflect the dataset used (here: master_corpus.json, 404 entries)
{
"total": 404,
"exact_matches": 12,
"exact_match_rate": 0.0968,
"fst_accepted": 87,
"fst_acceptance_rate": 0.7016,
"chrf_plus_plus": 42.31,
"errors": 0,
"avg_latency_seconds": 1.15,
"median_latency_seconds": 1.02,
"p95_latency_seconds": 2.34,
"by_difficulty": { ... },
"by_provenance": { ... }
}

totals — Token-Verbrauch und Kostenerfassung:

{
"prompt_tokens": 48200,
"completion_tokens": 3100,
"reasoning_tokens": 0,
"cached_tokens": 12000,
"total_cost_usd": 0.42,
"cost_per_entry_usd": 0.0034,
"reasoning_ratio": 0.0
}

Schreibstil- und Register-Metriken (informativ)

Das Harness kann evaluieren, ob Übersetzungen einem Ziel-Register und Schreibstil entsprechen, über das WritingStyleConsistency Metrik-Plugin (mt_eval_harness/plugins/writing_style.py). Eine Übersetzung kann sprachlich korrekt sein, aber im falschen Register stehen — informelle Formulierungen in einem Rechtsdokument, formelhafte Standardtexte in Marketingtexten — und String-Metriken bemerken dies nicht. Diese Metriken schon.

Was gemessen wird (pro Eintrag):

MetrikSkalaBedeutung
style_register_matchbooleschEntspricht die Ausgabe dem erwarteten Register? Das Ziel stammt aus dem Feld register des Korpuseintrags (siehe Benchmark Spec §2.6) oder aus einem Stilprofil
style_sentence_length_ratiofloatVorhergesagte vs. durchschnittliche Satzlänge der Referenz (1.0 = Übereinstimmung; Abweichung = Stildrift)
style_formality_score0.0–1.0Vorhandensein formeller/informeller Marker (T–V-Pronomen, Kontraktionen, …) anhand sprachspezifischer Marker-Ressourcen

Aggregat: style_consistency_rate — der Anteil der Einträge ohne erkannte Register-Diskrepanz.

Aktivieren Sie ein benutzerdefiniertes Ziel mit --style-profile path/to/profile.json (z. B. ein Markenstimmen-Profil); ohne ein solches greift das Plugin auf die register-Metadaten jedes Korpuseintrags zurück, sofern vorhanden.

:::caution Ehrliche Abgrenzung Diese Metriken sind rein informativ — sie sind niemals Teil des composite score, und die Formalitätserkennung ist markerbasiert (eine Heuristik), kein erlerntes Urteil. Behandeln Sie sie als Drift-Detektor für die Registertreue, nicht als Urteil über die Stilqualität. :::


Fingerprint vs. Run Card Hash

Das Harness erzeugt zwei verschiedene Hashes. Sie dienen unterschiedlichen Zwecken:

Fingerprint

Der Fingerprint beantwortet die Frage: „Könnte dieser Lauf reproduziert werden?"

Er hasht die Kombination der Eingaben, die die Experimentkonfiguration definieren — nicht die Ausgaben:

  • Datensatz-SHA-256
  • Modell-Slug
  • Bedingungslabel
  • System-Prompt-SHA-256
  • Temperatur
  • Harness-Version

Zwei Läufe mit identischen Fingerprints verwendeten dasselbe Setup. Ihre Ergebnisse sollten vergleichbar sein (modulo API-Nichtdeterminismus).

Run Card Hash

Der Run Card Hash beantwortet die Frage: „Wurde diese spezifische Ergebnisdatei manipuliert?"

Es ist der SHA-256 der gesamten Run-Card-JSON (ausgenommen das run_card_hash-Feld selbst). Wenn sich ein Feld ändert — ein Score, ein Zeitstempel, eine einzelne Ausgabe — bricht der Hash.

:::info Wann welcher zu verwenden ist Verwenden Sie den Fingerprint, um vergleichbare Läufe zu gruppieren (dasselbe Experiment, unterschiedliche Ausführungen). Verwenden Sie den Run Card Hash, um die Integrität einer bestimmten Ergebnisdatei zu überprüfen. :::


Veröffentlichung auf dem Leaderboard

Verwenden Sie nach Abschluss eines Laufs mt-eval publish, um die Run Card zu übermitteln:

mt-eval publish eval/logs/harness/your-run-card.json

Wenn während des Laufs keine --method-card bereitgestellt wurde, startet mt-eval publish einen interaktiven Assistenten (method_card_wizard.py), der Sie durch die Beschreibung Ihrer Methode führt (Name, Klasse, verwendete Tools usw.). Die Ausgabe des Assistenten wird vor der Übermittlung in die Run Card eingebettet.

Manuelle Übermittlung

Run Cards werden als JSON-Dateien im Ausgabeverzeichnis gespeichert. Sie können auch jede Run-Card-Datei über die Leaderboard-UI unter /leaderboard oder über die API übermitteln:

curl -X POST https://champollion.dev/api/leaderboard/submit \
-H "Content-Type: application/json" \
-d @eval/logs/harness/your-run-card.json

:::warning Leaderboard-Validierung Das Leaderboard validiert übermittelte Run Cards anhand des Datensatzregisters. Übermittlungen, die auf unbekannte Datensätze verweisen oder einen fehlerhaften run_card_hash aufweisen, werden abgelehnt. :::

:::danger TRAINIEREN Sie NICHT mit Evaluierungsdaten Wenn Ihre Methode den Evaluierungsdatensatz während der Entwicklung gesehen hat — als Trainingsdaten, Few-Shot-Beispiele, Wörterbucheinträge oder Prompt-Engineering-Material — wird Ihre Übermittlung disqualifiziert. Siehe MT Evaluation für die Unterscheidung zwischen guten und schlechten Methoden. :::


Siehe auch