{{ ui_lang.judge_heading|default('LLM-Judge ↔ Human Alignment') }}
{% if report.prompt_versions %}{{ ui_lang.judge_prompt_versions|default('Prompt versions') }}
-
{% for v in report.prompt_versions %}
- {{ v.prompt_version }} — {{ ui_lang.judge_mean_kappa|default('mean κ') }} {{ '%.3f'|format(v.mean_kappa) if v.mean_kappa is not none else 'n/a' }}, {{ v.n_predictions }} {{ ui_lang.judge_predictions|default('prediction(s)') }} {% if v.prompt_version == report.prompt_version %}{{ ui_lang.judge_current_paren|default('(current)') }}{% endif %} {% endfor %}
{{ ui_lang.judge_eval_cards|default('Judge eval cards') }} {{ ui_lang.judge_bias_robustness|default('(bias & robustness)') }}
{{ schema }}
{{ card.verdict }}
κ {{ '%.3f'|format(card.agreement.kappa) if card.agreement.kappa is not none else '—' }}
{% if card.verbosity and card.verbosity.length_bias_excess is not none %}
{{ ui_lang.judge_length_bias|default('length bias') }} {{ '%+.0f'|format(card.verbosity.length_bias_excess) }} {{ ui_lang.judge_chars|default('chars') }}
{% endif %}
{% if card.calibration and card.calibration.ece is not none %}
ECE {{ '%.2f'|format(card.calibration.ece) }}
{% endif %}
{% if card.concerns %}
- {% for c in card.concerns %}
- {{ c }} {% endfor %}
{{ ui_lang.judge_autocalibrate|default('Auto-calibrate') }}
{{ ui_lang.judge_empty_1|default('No judge predictions yet. Configure') }} judge_alignment
{{ ui_lang.judge_empty_2|default('and POST to') }} /admin/api/judge-alignment/run {{ ui_lang.judge_empty_3|default('to generate verdicts.') }}
{{ schema }}
{{ r.interpretation }}
{{ ui_lang.judge_cohens_kappa|default("Cohen's κ") }}
{{ '%.3f'|format(r.kappa) if r.kappa is not none else '—' }}
{{ ui_lang.judge_agreement|default('Agreement') }}
{{ (r.agreement_rate * 100)|round(1) }}%
{{ ui_lang.judge_compared_n|default('Compared (n)') }}
{{ r.n }}
{{ ui_lang.judge_disagreements|default('Disagreements') }}
{{ r.disagreements|length }}
{{ ui_lang.judge_confusion_label|default('Confusion (rows = human, columns = judge)') }}
{% set cols = [] %}
{% for h, js in r.confusion.items() %}{% for j in js.keys() %}{% if j not in cols %}{% set _ = cols.append(j) %}{% endif %}{% endfor %}{% endfor %}
| {{ ui_lang.judge_human_vs_judge|default('human \ judge') }} | {% for c in cols %}{{ c }} | {% endfor %}
|---|---|
| {{ h }} | {% for c in cols %}{{ js.get(c, 0) }} | {% endfor %}
{{ ui_lang.judge_disagreements|default('Disagreements') }}
| {{ ui_lang.judge_col_instance|default('Instance') }} | {{ ui_lang.judge_col_human|default('Human') }} | {{ ui_lang.judge_col_judge|default('Judge') }} | {{ ui_lang.judge_col_conf|default('Conf.') }} | {{ ui_lang.judge_col_reasoning|default('Judge reasoning') }} | {{ ui_lang.judge_col_actions|default('Actions') }} |
|---|---|---|---|---|---|
| {{ d.instance_id }} | {{ d.human_label }} | {{ d.judge_label }} | {{ '%.2f'|format(d.judge_confidence) if d.judge_confidence is not none else '—' }} | {{ d.reasoning }} | {{ ui_lang.judge_open_adjudication|default('Adjudicate') }} |