Few-Shot-Prompting zeigt dem Modell, was Sie meinen
Few-Shot-Prompting heißt, einige durchgearbeitete Beispiele in den Prompt zu setzen. Das Modell übernimmt das Muster, das es sieht, und lernt so Ihre Bewertungen und Ihren Stil.
Die Beispiele können es auch in die Irre führen. Ein Prompt mit vier guten Kommentaren und einem schlechten sagt dem Modell, dass die meisten Kommentare gut sind.
Am Ende dieser Lektion
Notiz
Ich kann Beispiele auswählen, die einem Modell zeigen, was ich meine.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Beispiel | eine Eingabe, gepaart mit der gewünschten Antwort |
| Bewertung | die Antwort, die ein Beispiel trägt |
| Klasse | eine der Bewertungen, die ein Modell wählen darf |
| Gleichgewicht | jede Klasse etwa gleich oft gezeigt |
| Few-Shot | ein Prompt mit einigen Beispielen |
| Zero-Shot | ein Prompt ohne Beispiele |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Wie viele Beispiele braucht ein Prompt?
Ohne Beispiele nutzt ein Modell sein allgemeines Gefühl für die Aufgabe. Ein Beispiel legt das Format fest. Zwei oder drei zeigen die Bandbreite. Ab fünf oder sechs kosten weitere Beispiele Token und bringen meist wenig.
Wählen Sie Beispiele, die sich voneinander unterscheiden. Drei fast gleiche Kopien lehren nicht mehr als eines.
Dieselben Bewertungen, ausgewogen und nicht
| Satz | gut | schlecht | Was das Modell lernt |
|---|---|---|---|
| Unausgewogen | 4 | 1 | Die meisten Kommentare sind gut, also sagen Sie gut |
| Ausgewogen | 2 | 2 | Beide Bewertungen sind häufig |
| Klasse fehlt | 3 | 0 | Einen schlechten Kommentar gibt es nicht |
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.
Beispielzähler schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const beispiele = [' ' { text: \"Der Bus war pünktlich\", bewertung: \"gut\" },' ' { text: \"Meine Tasche blieb liegen\", bewertung: \"schlecht\" },' ' { text: \"Netter Fahrer heute\", bewertung: \"gut\" },' ' { text: \"Schnelle, saubere Fahrt\", bewertung: \"gut\" },' ' { text: \"Der Sitz war etwas nass\", bewertung: \"gut\" },' '];' > bsp2.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.
Beispielzähler schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function zaehlen(liste) {' ' const summe = {};' ' for (const b of liste) summe[b.bewertung] = (summe[b.bewertung] || 0) + 1;' ' return summe;' '}' 'function promptBauen(liste, text) {' ' const bloecke = liste.map(function (b) { return \"Text: \" + b.text + \"\nBewertung: \" + b.bewertung; });' ' bloecke.push(\"Text: \" + text + \"\nBewertung:\");' ' return \"Bewerten Sie jeden Fahrgastkommentar mit gut oder schlecht.\n\n\" + bloecke.join(\"\n\n\");' '}' >> bsp2.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.
Beispielzähler schreiben, Teil 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' ' const z = zaehlen(beispiele);' ' console.log(\"Zählung: gut \" + z.gut + \", schlecht \" + z.schlecht);' ' for (const name of Object.keys(z)) {' ' if (z[name] * 2 > beispiele.length) console.log(\"Warnung: \" + name + \" macht mehr als die Hälfte der Beispiele aus\");' ' }' ' const prompt = promptBauen(beispiele, \"Der Fahrer war unhöflich\");' ' const antwort = await fragen([{ role: \"user\", content: prompt }], \"schlecht\", 5);' ' console.log(\"Modell: \" + antwort.text);' '}' 'main();' >> bsp2.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 Bewertungen zählen
docker exec -w /home/node/project agent node bsp2.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 zählt die Bewertungen: gut 4, schlecht 1. Die zweite warnt, dass gut mehr als die Hälfte der Beispiele ausmacht. Diese Prüfung fängt einen solchen Satz ab, bevor er ein Modell erreicht.
Die letzte Zeile ist eine kurze Antwort. Ohne Modell steht zuerst Aufgezeichnete Probe.
Ein häufiger Fehler
Warnung
Viele glauben, die Reihenfolge der Beispiele spiele keine Rolle. Modelle stützen sich oft am stärksten auf das letzte Beispiel. Ist es ein schlechtes, wird die neue Eingabe eher schlecht genannt. Mischen Sie die Klassen, damit keine immer zuletzt kommt.