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

Eine Regression bei Modellen erkennen

Nach dieser Lektion: Ich kann zwei Versionen auf denselben Fällen vergleichen und entscheiden, ob eine schlechter ist.

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

Machte der neue Prompt es schlechter?

Ein Regressionslauf vergleicht zwei Versionen einer Funktion auf denselben Fällen und zeigt, was schlechter wurde. Das lohnt sich, weil eine Änderung, die eine Nachricht heilt, oft eine andere bricht, ohne dass es jemand sieht.

Der Shop hat eine neue Version seines Sortierers. Die Erfolgsquote sieht aus wie zuvor. Das heißt nicht, dass sich nichts geändert hat.

Am Ende dieser Lektion

Notiz

Ich kann zwei Versionen auf denselben Fällen vergleichen und entscheiden, ob eine schlechter ist.

Schlüsselwörter

BegriffWas er bedeutet
Regressionein Fall, der vorher bestand und jetzt scheitert
Erfolgsquoteder Anteil der Fälle, die bestehen
Ausgangsversiondie Version, mit der man vergleicht
Rauschender Unterschied zwischen Läufen derselben Version
Instabiler Fallein Fall, der mal besteht und mal scheitert

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

Dieselben Fälle vergleichen, Version für Version

Lassen Sie beide Versionen auf derselben Referenzmenge laufen und behalten Sie das Ergebnis jedes Falls. Die Erfolgsquote gibt eine Zahl. Die Liste der geänderten Fälle gibt den Grund.

Eine Regression ist ein Fall, der in der Ausgangsversion bestand und jetzt scheitert. Lesen Sie diese Liste vor der Quote.

Ausgearbeitetes Beispiel: gleiche Quote, andere Fälle

VersionBestandene Fälle von 12ErfolgsquoteFälle, die scheitern
Alt, Lauf 11083 Prozent8, 12
Alt, Lauf 2975 Prozent5, 11, 12
Neu975 Prozent4, 10, 12

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

Ein Lauf beweist wenig, denn Antworten schwanken

Ein Modell kann auf dieselbe Nachricht jedes Mal anders antworten. Lassen Sie die alte Version also zweimal laufen. Der Abstand dieser beiden Quoten ist das Rauschen.

Ein instabiler Fall besteht in einem Lauf und scheitert im nächsten. Schieben Sie ihn nicht der neuen Version zu.

Erst die Quote, dann die Fälle

Liegt die neue Quote um mehr als das Rauschen unter der alten, nennen Sie es schlechter. Bleibt sie im Rauschen, sagt die Quote nichts.

Sehen Sie dann auf die Fälle. Ein Fall, der in jedem alten Lauf bestand und im neuen scheitert, ist eine feste Regression, und sie ist die zu beheben.

Die drei aufgezeichneten Läufe schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const gewollt = [\"abrechnung\", \"lieferung\", \"sonstiges\", \"abrechnung\", \"lieferung\", \"sonstiges\", \"abrechnung\", \"lieferung\", \"unbekannt\", \"unbekannt\", \"abrechnung\", \"sonstiges\"];' '// Aufgezeichnete Läufe: ein Etikett und eine Dringlichkeit je Fall, und ein Text, wo es zählt.' 'const laufA1 = [[\"abrechnung\", 2], [\"lieferung\", 2], [\"sonstiges\", 1], [\"abrechnung\", 2], [\"lieferung\", 3], [\"sonstiges\", 1], [\"abrechnung\", 2], [\"abrechnung\", 2], [\"unbekannt\", 1], [\"unbekannt\", 1], [\"abrechnung\", 3], [\"lieferung\", 2]];' > laeufe.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 drei aufgezeichneten Läufe schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const laufA2 = [[\"abrechnung\", 2], [\"lieferung\", 2], [\"sonstiges\", 1], [\"abrechnung\", 2], [\"sonstiges\", 1], [\"sonstiges\", 1], [\"abrechnung\", 2], [\"lieferung\", 2], [\"unbekannt\", 1], [\"unbekannt\", 1], [\"sonstiges\", 2], [\"lieferung\", 2]];' >> laeufe.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 drei aufgezeichneten Läufe schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const laufB = [[\"abrechnung\", 2], [\"lieferung\", 2], [\"sonstiges\", 1], [\"sonstiges\", 2], [\"lieferung\", 3], [\"sonstiges\", 1], [\"abrechnung\", 2], [\"lieferung\", 2], [\"unbekannt\", 1], [\"unbekannt\", 1, \"Ihre Erstattung wurde genehmigt.\"], [\"abrechnung\", 3], [\"lieferung\", 2]];' 'module.exports = { gewollt, laufA1, laufA2, laufB };' >> laeufe.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.

Den Vergleich schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { gewollt, laufA1, laufA2, laufB } = require(\"./laeufe\");' '// Die Regeln der Lektion 2, gekürzt: richtiges Etikett, Dringlichkeit 1 bis 3, keine verbotene Phrase.' 'function besteht(eintrag, erwartet) {' '  const gesagt = (eintrag[2] || \"\").toLowerCase();' '  return eintrag[0] === erwartet && eintrag[1] >= 1 && eintrag[1] <= 3 && gesagt.includes(\"erstattung wurde\") === false;' '}' 'function ergebnisse(lauf) {' '  return lauf.map(function (eintrag, stelle) { return besteht(eintrag, gewollt[stelle]); });' '}' > vergleich3.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.

Den Vergleich schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function quote(liste) {' '  return Math.floor(liste.filter(Boolean).length * 100 / liste.length);' '}' 'const a1 = ergebnisse(laufA1);' 'const a2 = ergebnisse(laufA2);' 'const b = ergebnisse(laufB);' 'console.log(\"Erfolgsquote A1: \" + quote(a1) + \" Prozent\");' 'console.log(\"Erfolgsquote A2: \" + quote(a2) + \" Prozent\");' 'console.log(\"Erfolgsquote B: \" + quote(b) + \" Prozent\");' 'const rauschen = Math.abs(quote(a1) - quote(a2));' 'console.log(\"Rauschen zwischen A1 und A2: \" + rauschen + \" Punkte\");' >> vergleich3.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.

Den Vergleich schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const tief = Math.min(quote(a1), quote(a2));' 'const hoch = Math.max(quote(a1), quote(a2));' 'let urteil = \"kein klarer Unterschied\";' 'if (quote(b) < tief - rauschen) urteil = \"schlechter\";' 'if (quote(b) > hoch + rauschen) urteil = \"besser\";' 'console.log(\"Urteil allein nach den Quoten: \" + urteil);' >> vergleich3.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.

Den Vergleich schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const schlechter = [];' 'const instabil = [];' 'const immer = [];' 'for (let stelle = 0; stelle < gewollt.length; stelle = stelle + 1) {' '  const gleich = a1[stelle] === a2[stelle];' '  if (gleich === false) instabil.push(stelle + 1);' '  else if (a1[stelle] && b[stelle] === false) schlechter.push(stelle + 1);' '  else if (a1[stelle] === false && b[stelle] === false) immer.push(stelle + 1);' '}' 'console.log(\"Regressionen (bestehen in A1 und A2, scheitern in B): \" + schlechter.join(\", \"));' 'console.log(\"Instabil (unterscheiden sich zwischen A1 und A2): \" + instabil.join(\", \"));' 'console.log(\"Scheitern in jedem Lauf: \" + immer.join(\", \"));' >> vergleich3.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 Versionen vergleichen

Befehl
docker exec -w /home/node/project agent node vergleich3.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 der Vergleich ausgibt

ZeileWas sie zeigt
ErfolgsquotenA1 83, A2 75, B 75 Prozent
Rauschen8 Punkte
Urteil nach den Quotenkein klarer Unterschied
Regressionendie Fälle 4 und 10
Instabildie Fälle 5, 8 und 11
Scheitern in jedem Laufder Fall 12

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

Probieren Sie es

Tipp

Ändern Sie in laeufe.js die Dringlichkeit von Fall 1 in laufB von 2 auf 9 und vergleichen Sie erneut. Fall 1 muss zu den Regressionen kommen.

Ein häufiger Fehler

Warnung

Viele vergleichen einen Lauf jeder Version und trauen dem Unterschied. Schwanken die Antworten, kann ein einzelner Lauf in beide Richtungen täuschen. Lassen Sie die Ausgangsversion mindestens zweimal laufen, messen Sie das Rauschen und beurteilen Sie eine Änderung nur daran.

Ü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.