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 Eval-Suite für KI-Agenten bauen

Nach dieser Lektion: Ich kann Trajektorie, Zustand und wiederholte Läufe in einer Schranke verbinden.

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

Im Schnitt besser und trotzdem riskant

Eine Eval-Suite für Agenten verbindet Endzustand, Weg und wiederholte Läufe zu einer Schranke, die eine Änderung passieren muss. Sie lohnt sich, denn jede Prüfung allein lässt eine andere schlechte Änderung durch.

Der neue Shop-Agent erreicht 77 Prozent gegenüber 61. Doch ein Fall, der nie scheitern darf, scheitert jetzt manchmal.

Am Ende dieser Lektion

Notiz

Ich kann Trajektorie, Zustand und wiederholte Läufe in einer Schranke verbinden.

Schlüsselwörter

BegriffWas er bedeutet
Schrankeeine vor dem Lauf festgelegte Bestehensgrenze
Pflichtfallein Fall, der in keinem Lauf scheitern darf
Schrittwachstumwie viele Schritte mehr die neue Version gehen darf
Exitcodedie Zahl, die ein Skript zurückgibt, 0 für Erfolg
Suitedie Prüfungen, die bei jeder Änderung zusammen laufen

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

Jede Schranke fängt eine andere Änderung

Legen Sie jede Schranke fest, bevor Sie das Ergebnis sehen. Eine sagt, dass der Endzustand oft genug stimmt. Eine sagt, dass die Schritte nicht zu stark gewachsen sind. Eine nennt die Pflichtfälle. Eine sagt, dass die Änderung nicht klar schlechter ist.

Das ist das Schrittwachstum: eine Kostenschranke für einen Agenten, denn jeder Schritt kostet Geld.

Durchgerechnetes Beispiel: vier Schranken

SchrankeRegelWas sie fängt
Zustandsquotemindestens 70 Prozent der Läufe enden richtigeine Version, die zu oft scheitert
Schrittehöchstens 20 Prozent mehr Schritteeine richtige, aber langsame Version
PflichtfälleFall 4 besteht in jedem Laufeinen Bruch bei dem, was am meisten zählt
Nicht schlechterder Vorzeichentest sagt nicht schlechtereine Änderung, die wenig reparierte und viel kaputt machte

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

Eine Schranke endet in einem Exitcode

Jede Schranke fügt ihren Namen einer Liste von Verletzungen hinzu. Die Suite gibt die Liste aus und liefert einen Exitcode: 0, wenn die Liste leer ist, und 1, wenn nicht.

Das Labor hat keine kontinuierliche Integration. Eine echte Suite würde dieses Skript bei jeder Änderung ausführen und bei einer 1 die Freigabe stoppen.

Aufgezeichnete Läufe schreiben

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// Drei aufgezeichnete Läufe je Fall: [Zustand stimmt (1 oder 0), gegangene Schritte].' 'const alt = [' '  [[1, 4], [1, 4], [1, 5]], [[1, 5], [0, 6], [1, 5]], [[0, 6], [0, 7], [1, 6]],' '  [[1, 4], [1, 4], [1, 4]], [[1, 5], [1, 5], [0, 5]], [[0, 7], [0, 7], [0, 6]],' '];' 'const neu = [' '  [[1, 4], [1, 4], [1, 4]], [[1, 5], [1, 5], [1, 6]], [[1, 6], [0, 7], [1, 6]],' '  [[1, 5], [0, 5], [1, 5]], [[1, 5], [1, 5], [1, 5]], [[0, 7], [1, 7], [0, 7]],' '];' 'const einstellungen = { minZustand: 70, schrittWachstum: 20, pflicht: [3] };' 'module.exports = { alt, neu, einstellungen };' > 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.

Suite schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { alt, neu, einstellungen } = require(\"./laeufe\");' 'function zustaende(version) {' '  return version.map(function (laeufe) {' '    return laeufe.filter(function (lauf) { return lauf[0] === 1; }).length;' '  });' '}' 'function zustandsquote(version) {' '  const summe = zustaende(version).reduce(function (a, b) { return a + b; }, 0);' '  return Math.floor(summe * 100 / (version.length * version[0].length));' '}' 'function schritte(version) {' '  let summe = 0;' '  version.forEach(function (laeufe) { laeufe.forEach(function (lauf) { summe = summe + lauf[1]; }); });' '  return summe;' '}' > suite.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.

Suite schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function pVorzeichen(besser, schlechter) {' '  const n = besser + schlechter;' '  if (n === 0) return 1;' '  let summe = 0;' '  let wege = 1;' '  for (let i = 0; i <= Math.min(besser, schlechter); i = i + 1) {' '    summe = summe + wege;' '    wege = wege * (n - i) / (i + 1);' '  }' '  return Math.min(1, 2 * summe / Math.pow(2, n));' '}' 'const vorher = zustaende(alt);' 'const nachher = zustaende(neu);' 'let besser = 0;' 'let schlechter = 0;' 'vorher.forEach(function (n, stelle) {' '  if (nachher[stelle] > n) besser = besser + 1;' '  if (nachher[stelle] < n) schlechter = schlechter + 1;' '});' >> suite.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.

Suite schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const fehler = [];' 'const quote = zustandsquote(neu);' 'console.log(\"Zustandsquote \" + quote + \" Prozent, nötig sind \" + einstellungen.minZustand);' 'if (quote < einstellungen.minZustand) fehler.push(\"Zustandsquote\");' 'console.log(\"Schritte \" + schritte(neu) + \" gegen \" + schritte(alt) + \", Grenze \" + einstellungen.schrittWachstum + \" Prozent mehr\");' 'if (schritte(neu) * 100 > schritte(alt) * (100 + einstellungen.schrittWachstum)) fehler.push(\"Schritte\");' 'const kaputt = einstellungen.pflicht.filter(function (stelle) { return nachher[stelle] < neu[stelle].length; });' 'console.log(\"Pflichtfälle, die in einem Lauf scheiterten: \" + kaputt.map(function (stelle) { return stelle + 1; }).join(\", \"));' 'if (kaputt.length > 0) fehler.push(\"Pflichtfälle\");' >> suite.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.

Suite schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const p = pVorzeichen(besser, schlechter);' 'console.log(\"Besser \" + besser + \", schlechter \" + schlechter + \", p \" + p.toFixed(3));' 'if (p < 0.05 && schlechter > besser) fehler.push(\"schlechter\");' 'console.log(fehler.length === 0 ? \"Alle Schranken bestanden\" : \"Schranken verletzt: \" + fehler.join(\", \"));' 'process.exit(fehler.length === 0 ? 0 : 1);' >> suite.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 Suite starten und ihren Code lesen

Befehl
docker exec -w /home/node/project agent node suite.js; echo Exitcode $?

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 Suite ausgibt

ZeileWas sie zeigt
Zustandsquote77 Prozent, nötig sind 70: besteht
Schritte98 gegen 95, Grenze 20 Prozent: besteht
PflichtfälleFall 4 scheiterte in einem Lauf
Besser und schlechterbesser 4, schlechter 1, p 0.375: besteht
ErgebnisSchranken verletzt: Pflichtfälle
Exitcode1

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

Probieren Sie es aus

Tipp

Ändern Sie in laeufe.js den zweiten Lauf des vierten Falls von neu von [0, 5] auf [1, 5] und starten Sie erneut. Die Pflichtschranke besteht und der Exitcode ist 0.

Ein häufiger Fehler

Warnung

Viele lockern eine Schranke, wenn eine gute Änderung sie nicht besteht. Eine Schranke, die nach einem Fehler verschoben wird, schützt nichts mehr. War die Schranke falsch, ändern Sie sie in einer eigenen Durchsicht mit aufgeschriebenem Grund, nie in derselben Änderung, die an ihr scheiterte.

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