Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Wie ein Richter verzerrt sein kann

Nach dieser Lektion: Ich kann herausfinden, wie ein Richter verzerrt ist, bevor ich mich auf ihn verlasse.

Lektion, 70 Min.7 BefehleLab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Einen Richter prüfen, bevor Sie ihm trauen

Ein Richter ist ein Modell, das die Antworten eines anderen Modells bewertet. Er ist billig, also setzen Teams ihn oft ein. Doch ein Richter kann in Richtungen neigen, die niemand sieht.

Das Modul über Evals und Tests für modellbasierte Funktionen zeigt einen Richter und seine Übereinstimmung mit Menschen. Diese Lektion geht weiter, mit drei Tests als Zahlen.

Am Ende dieser Lektion

Notiz

Ich kann herausfinden, wie ein Richter verzerrt ist, bevor ich mich auf ihn verlasse.

Schlüsselwörter

BegriffWas er bedeutet
Richterein Modell, das Antworten bewertet
KappaÜbereinstimmung mit Menschen über das hinaus, was der Zufall ergibt
Positionsverzerrungeine Neigung zu einem Platz statt zu einer Antwort
Längenverzerrungeine Neigung zur längeren Antwort
KalibriermengeAntworten, die eine Person bewertet hat, um einen Richter zu testen

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Übereinstimmung reicht nicht, der Zufall hilft mit

Ein Richter stimmt bei 90 Prozent der Antworten mit einer Person überein. Das klingt gut. Besteht aber das meiste, erreicht auch ein Richter hohe Werte, der immer bestanden sagt.

Kappa rechnet den Zufall heraus. Es reicht von 1, vollkommen, über 0, nicht besser als der Zufall.

Durchgerechnetes Beispiel: zwanzig bewertete Antworten

MessgrößeWertSo wird sie berechnet
Einträge20Gezählt
Richter und Person stimmen überein1890 Prozent Übereinstimmung
Zufallstreffer, auf 400 Paare hochgerechnet296b-Zahl mal b-Zahl, plus d mal d
Kappa0,62(360 minus 296) geteilt durch (400 minus 296)

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein häufiger Fehler

Warnung

Viele denken, ein hoher Wert für die Übereinstimmung beweise, dass ein Richter verlässlich ist. Das stimmt nicht, wenn ein Label viel häufiger ist. Rechnen Sie Kappa aus und nehmen Sie eine Kalibriermenge mit genug Fällen jedes Labels.

Die Reihenfolge tauschen, um Positionsverzerrung zu finden

Zeigen Sie dem Richter zwei Antworten, erst X, dann Y, und notieren Sie seine Wahl. Zeigen Sie sie dann noch einmal als Y, dann X. Ein fairer Richter wählt beide Male dieselbe Antwort.

Ändert sich die Wahl, folgte der Richter dem Platz. Zählen Sie die Änderungen. Ist es ein Viertel der Fälle oder mehr, melden Sie den Richter.

Zählen, wie oft die längere Antwort gewinnt

Manche Richter mögen lange Antworten. Legen Sie zum Test Paare gleicher Länge beiseite. Zählen Sie unter den übrigen, wie oft der Richter die längere wählt.

Etwa die Hälfte ist in Ordnung. Drei von vier oder mehr heißt, dass die Länge die Note lenkt.

Die Modellhilfe schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const basis = process.env.AI_URL || \"http://ai:4000\";' '// Die Token einer Antwort oder null, wenn sie keine nennt.' 'function zaehlen(daten, name) {' '  return daten.usage && typeof daten.usage[name] === \"number\" ? daten.usage[name] : null;' '}' > model.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Modellhilfe schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function fragen(nachrichten, probe, max) {' '  try {' '    const res = await fetch(basis + \"/v1/chat/completions\", {' '      method: \"POST\",' '      headers: { \"content-type\": \"application/json\", authorization: \"Bearer lab\" },' '      body: JSON.stringify({ model: \"lab\", messages: nachrichten, max_tokens: max || 100 }),' '      signal: AbortSignal.timeout(30000),' '    });' '    if (res.ok === false) throw new Error(\"Status \" + res.status);' '    const d = await res.json();' '    return { text: d.choices[0].message.content, eingabe: zaehlen(d, \"prompt_tokens\"), ausgabe: zaehlen(d, \"completion_tokens\"), aufgezeichnet: false };' '  } catch (fehler) {' '    console.log(\"Aufgezeichnete Probe: Kein Modell hat geantwortet (\" + fehler.message + \").\");' '    return { text: probe, eingabe: null, ausgabe: null, aufgezeichnet: true };' '  }' '}' 'module.exports = { fragen };' >> model.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Richtertests schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const M = \"bbbbbdbbbbbdbbbdbbbd\";' 'const R = \"bbbbbbbbbbbdbbbbbbbd\";' 'const zeilen = [' '  \"1 40 55 Y Y\", \"2 62 30 X X\", \"3 48 70 Y X\", \"4 33 51 X Y\",' '  \"5 80 45 X Y\", \"6 52 52 X X\", \"7 29 66 Y Y\", \"8 71 40 X Y\",' '  \"9 44 90 Y Y\", \"10 58 36 X X\", \"11 35 62 X Y\", \"12 77 41 X X\",' '].map(function (z) {' '  const t = z.split(\" \");' '  return { x: Number(t[1]), y: Number(t[2]), eins: t[3], zwei: t[4] };' '});' > richter.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Richtertests schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function zaehlen(text, zeichen) { return text.split(zeichen).length - 1; }' 'const n = M.length;' 'let gleich = 0;' 'for (let i = 0; i < n; i++) { if (M[i] === R[i]) gleich++; }' 'const zufall = zaehlen(R, \"b\") * zaehlen(M, \"b\") + zaehlen(R, \"d\") * zaehlen(M, \"d\");' 'const kappa = (gleich * n - zufall) / (n * n - zufall);' >> richter.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Richtertests schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'let erster = 0;' 'let zweiter = 0;' 'let laenger = 0;' 'let ungleich = 0;' 'zeilen.forEach(function (z) {' '  if (z.eins === \"X\" && z.zwei === \"Y\") erster++;' '  if (z.eins === \"Y\" && z.zwei === \"X\") zweiter++;' '  if (z.x === z.y) return;' '  ungleich++;' '  if ((z.eins === \"X\") === (z.x > z.y)) laenger++;' '});' >> richter.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Richtertests schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  console.log(\"Übereinstimmung: \" + (gleich * 100 / n) + \" Prozent, Kappa: \" + kappa.toFixed(2));' '  console.log(\"Tauschtest: \" + (erster + zweiter) + \" von \" + zeilen.length + \" geändert (erster Platz \" + erster + \", zweiter Platz \" + zweiter + \")\");' '  console.log(\"längere Antwort gewann: \" + laenger + \" von \" + ungleich + \" (\" + Math.floor(laenger * 100 / ungleich) + \" Prozent)\");' '  const q = \"Bewerten Sie diese Antwort auf die Frage Wo ist die Stadtbibliothek? mit bestanden oder durchgefallen, ein Wort: Fragen Sie jemanden.\";' '  const antwort = await fragen([{ role: \"user\", content: q }], \"durchgefallen\", 5);' '  console.log(\"Live-Urteil: \" + antwort.text);' '}' 'main();' >> richter.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Richtertests ausführen

Befehl
docker exec -w /home/node/project agent node richter.js

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Was die Tests ausgeben

ZeileWas sie zeigt
Übereinstimmung: 90 Prozent, Kappa: 0.62Hohe Übereinstimmung, schwächer ohne den Zufall
Tauschtest: 5 von 12 geändertFünf Wahlen folgten dem Platz
längere Antwort gewann: 9 von 11Die längere Antwort gewann in 81 Prozent der Fälle
Live-Urteil: ...Ein echtes Urteil aus dem Labor. Eine Aufgezeichnete Probe, wenn kein Modell antwortet

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Über dieses Lab und seinen Quellcode: Lab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.