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
| Begriff | Was er bedeutet |
|---|---|
| Regression | ein Fall, der vorher bestand und jetzt scheitert |
| Erfolgsquote | der Anteil der Fälle, die bestehen |
| Ausgangsversion | die Version, mit der man vergleicht |
| Rauschen | der Unterschied zwischen Läufen derselben Version |
| Instabiler Fall | ein 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
| Version | Bestandene Fälle von 12 | Erfolgsquote | Fälle, die scheitern |
|---|---|---|---|
| Alt, Lauf 1 | 10 | 83 Prozent | 8, 12 |
| Alt, Lauf 2 | 9 | 75 Prozent | 5, 11, 12 |
| Neu | 9 | 75 Prozent | 4, 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
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
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
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
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
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
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
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
docker exec -w /home/node/project agent node vergleich3.jsHier 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
| Zeile | Was sie zeigt |
|---|---|
| Erfolgsquoten | A1 83, A2 75, B 75 Prozent |
| Rauschen | 8 Punkte |
| Urteil nach den Quoten | kein klarer Unterschied |
| Regressionen | die Fälle 4 und 10 |
| Instabil | die Fälle 5, 8 und 11 |
| Scheitern in jedem Lauf | der 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.