Einen Prompt gegen feste Fälle testen
Ein Prompt-Test lässt feste Fälle laufen und wendet auf jede Antwort eine Regel an. Die Regel ist schlicht: Ein Wort muss vorkommen, ein anderes nicht, die Antwort muss kurz sein.
Ohne Test kann ein geänderter Prompt den Fall beheben, den Sie vor sich haben, und dabei zwei andere, die Sie nicht angesehen haben, leise kaputtmachen.
Am Ende dieser Lektion
Notiz
Ich kann sagen, ob ein geänderter Prompt besser ist.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Fall | eine Eingabe, mit der Sie testen |
| Regel | eine schlichte Prüfung einer Antwort |
| Ausgangsstand | der Prompt, mit dem Sie vergleichen |
| Rückschritt | ein Fall, der bestand und jetzt scheitert |
| Bestanden | eine Antwort, die ihre Regel erfüllt |
| Aufgezeichnet | eine gespeicherte Antwort, damit sich ein Test wiederholen lässt |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Was sind ein Fall und eine Regel?
Ein Fall ist eine Eingabe, etwa ein Fahrgast, der eine Erstattung möchte. Eine Regel ist eine Prüfung der Antwort, die Sie im Code ausführen können. „Enthält das Wort Erstattung“ ist eine Regel. „Klingt freundlich“ ist keine, weil Code es nicht prüfen kann.
Halten Sie eine kleine feste Menge von Fällen. Lassen Sie jeden Prompt gegen dieselbe Menge laufen, damit sich nur der Prompt geändert hat.
Prompt A und Prompt B bei drei Fällen
| Fall | Prompt A | Prompt B |
|---|---|---|
| Erstattung | besteht | scheitert (sagt leider) |
| Verspätung | scheitert | besteht |
| Danke | besteht | scheitert (nennt die Verspätung) |
| Summe | 2 von 3 | 1 von 3 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
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\";' '// 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.
Modell-Helfer schreiben, Teil 2
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.
Prompt-Tester schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const faelle = [' ' { name: \"erstattung\", muss: [\"erstatt\"], nicht: [\"leider\"], max: 25 },' ' { name: \"verspaetung\", muss: [\"verspät\"], nicht: [], max: 25 },' ' { name: \"danke\", muss: [\"dank\"], nicht: [\"verspät\"], max: 25 },' '];' 'const A = [\"Wir erstatten Ihnen den Betrag in fünf Tagen.\", \"Der Bus kommt zu spät, wir bitten um Entschuldigung.\", \"Vielen Dank für Ihre Nachricht.\"];' 'const B = [\"Leider erstatten wir Ihnen den Betrag in fünf Tagen.\", \"Es gibt eine Verspätung von zehn Minuten.\", \"Danke. Leider gab es eine Verspätung.\"];' > test5.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.
Prompt-Tester schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function besteht(antwort, f) {' ' const klein = antwort.toLowerCase();' ' const lang = antwort.split(\" \").length > f.max;' ' const hat = f.muss.every(function (m) { return klein.includes(m); });' ' const schlecht = f.nicht.some(function (n) { return klein.includes(n); });' ' return hat && schlecht === false && lang === false;' '}' 'function durchlauf(antworten) {' ' return antworten.map(function (a, i) { return besteht(a, faelle[i]); });' '}' >> test5.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.
Prompt-Tester schreiben, Teil 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' ' const ra = durchlauf(A);' ' const rb = durchlauf(B);' ' const namen = function (flags, anderes) {' ' return faelle.filter(function (f, i) { return flags[i] && anderes[i] === false; }).map(function (f) { return f.name; });' ' };' ' console.log(\"A besteht \" + ra.filter(Boolean).length + \" von 3, B besteht \" + rb.filter(Boolean).length + \" von 3\");' ' console.log(\"geholfen: \" + namen(rb, ra).join(\", \") + \" | geschadet: \" + namen(ra, rb).join(\", \"));' ' const frage = \"Antworten Sie einem Fahrgast, der eine Erstattung möchte, in unter 25 Wörtern.\";' ' const antwort = await fragen([{ role: \"user\", content: frage }], A[0], 50);' ' console.log(\"echte Antwort besteht die Regel zur Erstattung: \" + besteht(antwort.text, faelle[0]));' '}' 'main();' >> test5.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.
Ausführen und zwei Prompts vergleichen
docker exec -w /home/node/project agent node test5.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 Run druckt
Die erste Zeile sagt, A besteht 2 von 3 und B besteht 1 von 3. Die zweite sagt, B habe dem Fall Verspätung geholfen und Erstattung und Danke geschadet. Sie behalten also A.
Diese zwei Zeilen nutzen aufgezeichnete Antworten, alle Studierenden sehen sie gleich. Die letzte Zeile prüft eine echte Antwort und kann wahr oder falsch sein. Sie zeigt, dass auch eine echte Antwort eine Regel verfehlen kann. Ohne Modell steht zuerst Aufgezeichnete Probe.
Ein häufiger Fehler
Warnung
Viele glauben, ein Prompt sei besser, wenn er den Fall behob, der sie ärgerte. Ein Fall ist eine einzelne Stichprobe. Lassen Sie die ganze Menge laufen und zählen Sie, was geholfen und was geschadet hat, bevor Sie entscheiden.