Die richtige Antwort auf einem schlechten Weg
Eine Trajektorie ist die Liste der Schritte, die ein Agent bis zu seiner Antwort ging. Sie zu bewerten lohnt sich, denn ein Agent kann nach verschwendeten Aufrufen oder durch Glück richtig antworten, und jeder Schritt kostet Geld.
Der Shop hat einen Support-Agenten, der Bestellungen erstattet. Seine Antworten sehen gut aus. Seine Wege weniger.
Am Ende dieser Lektion
Notiz
Ich kann die Schritte eines Agenten gegen einen Referenzpfad bewerten.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Trajektorie | die Schritte eines Agenten, der Reihe nach |
| Referenzpfad | die Schritte, die ein guter Lauf gehen soll |
| Doppelter Aufruf | ein Schritt, der einen früheren wiederholt |
| Schrittbudget | die höchste Zahl an Schritten eines Laufs |
| Pfadnote | Punkte dafür, wie der Lauf ans Ziel kam |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Bewerten Sie den Weg, nicht nur die Antwort
Eine Prüfung der Endantwort stellt eine Frage: Ist die Antwort richtig? Eine Pfadprüfung fragt, wie der Agent dorthin kam. Sie betrachtet die Trajektorie und vergleicht sie mit einem Referenzpfad.
Ein Pfad zeigt vier Fehler. Ein Schritt fehlt. Ein doppelter Aufruf wiederholt einen anderen. Ein Schritt steht an falscher Stelle. Oder es sind zu viele Schritte für das Schrittbudget.
Durchgerechnetes Beispiel: vier aufgezeichnete Läufe
| Lauf | Gegangene Schritte | Antwort | Pfadfehler |
|---|---|---|---|
| A | suchen, erstatten, senden | richtig | keiner |
| B | suchen, suchen, Hilfe, erstatten, senden | richtig | eine Wiederholung, über Budget |
| C | erstatten, suchen, senden | richtig | Erstattung vor der Suche |
| D | suchen, senden | falsch | Erstattung fehlt |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Aus den Fehlern eine Note machen
Geben Sie jedem Fehler feste Kosten und ziehen Sie sie von 100 ab. Hier kostet ein fehlender Schritt 25, ein doppelter Aufruf 10, das Überschreiten des Budgets 20 und eine falsche Reihenfolge 15.
Wählen Sie die Kosten, bevor Sie die Läufe ansehen. Die Referenz ist nicht der einzige gute Weg: Bewerten Sie die Reihenfolge nur dort, wo sie zählt.
Modell-Helfer schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const basis = process.env.AI_URL || \"http://ai:4000\";' '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 || 200 }),' ' signal: AbortSignal.timeout(30000),' ' });' ' if (res.ok === false) throw new Error(\"Status \" + res.status);' ' return (await res.json()).choices[0].message.content;' > 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.
Modell-Helfer schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' ' } catch (fehler) {' ' console.log(\"Aufgezeichnete Probe: Kein Modell hat geantwortet (\" + fehler.message + \").\");' ' const liste = [].concat(probe);' ' const runde = nachrichten.filter(function (m) { return m.role === \"assistant\"; }).length;' ' return liste[Math.min(runde, liste.length - 1)];' ' }' '}' '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.
Aufgezeichnete Läufe schreiben
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const referenz = [\"bestellung_suchen:A17\", \"erstatten:A17\", \"nachricht_senden:A17\"];' '// Aufgezeichnete Läufe eines Support-Agenten. Jeder Schritt ist ein Werkzeug und sein Argument.' 'const laeufe = [' ' { name: \"Lauf A\", antwort: \"ok\", schritte: [\"bestellung_suchen:A17\", \"erstatten:A17\", \"nachricht_senden:A17\"] },' ' { name: \"Lauf B\", antwort: \"ok\", schritte: [\"bestellung_suchen:A17\", \"bestellung_suchen:A17\", \"hilfe_suchen:erstattung\", \"erstatten:A17\", \"nachricht_senden:A17\"] },' ' { name: \"Lauf C\", antwort: \"ok\", schritte: [\"erstatten:A17\", \"bestellung_suchen:A17\", \"nachricht_senden:A17\"] },' ' { name: \"Lauf D\", antwort: \"falsch\", schritte: [\"bestellung_suchen:A17\", \"nachricht_senden:A17\"] },' '];' 'module.exports = { referenz, laeufe };' > pfade.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.
Pfadbewerter schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { referenz, laeufe } = require(\"./pfade\");' 'const { fragen } = require(\"./model\");' 'const budget = 4;' 'function doppelte(schritte) {' ' const gesehen = [];' ' let anzahl = 0;' ' schritte.forEach(function (schritt) {' ' if (gesehen.includes(schritt)) anzahl = anzahl + 1;' ' else gesehen.push(schritt);' ' });' ' return anzahl;' '}' 'function fehlende(schritte) {' ' return referenz.filter(function (schritt) { return schritte.includes(schritt) === false; });' '}' > bewerten.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.
Pfadbewerter schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function inReihenfolge(schritte) {' ' let stelle = 0;' ' schritte.forEach(function (schritt) {' ' if (stelle < referenz.length && schritt === referenz[stelle]) stelle = stelle + 1;' ' });' ' return stelle === referenz.length;' '}' 'function punkte(schritte) {' ' let summe = 100 - 25 * fehlende(schritte).length - 10 * doppelte(schritte);' ' if (schritte.length > budget) summe = summe - 20;' ' if (inReihenfolge(schritte) === false) summe = summe - 15;' ' return Math.max(summe, 0);' '}' >> bewerten.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.
Pfadbewerter schreiben, Teil 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const schwach = [];' 'laeufe.forEach(function (lauf) {' ' const note = punkte(lauf.schritte);' ' console.log(lauf.name + \": \" + note + \" Punkte, Schritte \" + lauf.schritte.length + \" von \" + budget + \", fehlend \" + fehlende(lauf.schritte).length + \", doppelt \" + doppelte(lauf.schritte) + \", in Reihenfolge \" + inReihenfolge(lauf.schritte) + \", Antwort \" + lauf.antwort);' ' if (lauf.antwort === \"ok\" && note < 100) schwach.push(lauf.name);' '});' 'console.log(\"Richtige Antwort, schwacher Pfad: \" + schwach.join(\", \"));' >> bewerten.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.
Pfadbewerter schreiben, Teil 4
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' ' const frage = \"Ein Kunde möchte die Bestellung A17 erstattet haben. Werkzeuge: bestellung_suchen, erstatten, nachricht_senden, hilfe_suchen. Antworten Sie nur mit dem Namen des Werkzeugs, das Sie zuerst aufrufen würden.\";' ' const text = await fragen([{ role: \"user\", content: frage }], \"bestellung_suchen\", 20);' ' console.log(\"Erster Schritt live: \" + text.trim());' ' console.log(\"Passt zur Referenz: \" + text.includes(\"bestellung_suchen\"));' '}' 'main();' >> bewerten.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 vier Läufe bewerten
docker exec -w /home/node/project agent node bewerten.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 Bewerter ausgibt
| Zeile | Was sie zeigt |
|---|---|
| Lauf A | 100 Punkte, keine Fehler |
| Lauf B | 70 Punkte: ein doppelter Aufruf und 5 Schritte von 4 |
| Lauf C | 85 Punkte: nicht in Reihenfolge |
| Lauf D | 60 Punkte: Erstattung fehlt, Antwort falsch |
| Schwacher Pfad | Lauf B und Lauf C |
| Erster Schritt live | Eine mögliche Ausgabe: bestellung_suchen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Probieren Sie es aus
Tipp
Ändern Sie in bewerten.js das Budget von 4 auf 5 und bewerten Sie erneut. Lauf B sollte 20 Punkte gewinnen. Entscheiden Sie, ob er dadurch ein guter Pfad wird.
Ein häufiger Fehler
Warnung
Viele glauben, der Referenzpfad sei der einzig richtige, und werten jede andere Reihenfolge als Fehler. Ein Agent hat oft zwei gute Wege. Bewerten Sie die Reihenfolge nur, wenn ein Schritt das Ergebnis eines anderen braucht, und erlauben Sie eine zweite Referenz, wenn zwei Reihenfolgen funktionieren.