Erst einen Prompt versuchen, dann trainieren
Ein Modell anzupassen heißt, das Modell selbst mit eigenen Beispielen zu verändern. Das kostet Zeit, Daten und Sorgfalt. Viele Probleme, die danach aussehen, löst schon ein besserer Prompt.
Wer zuerst trainiert und erst danach einen Prompt testet, zahlt oft für eine Lösung, die er nicht brauchte.
Am Ende dieser Lektion
Notiz
Ich kann zeigen, dass ein Prompt ein Problem nicht löst, bevor ich zum Training greife.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Basis | die Ergebnisse vor jeder Änderung |
| Fall | eine Eingabe mit bekannter richtiger Antwort |
| Erfolgsquote | der Anteil der richtig gelösten Fälle in Prozent |
| Anpassen | ein Modell mit eigenen Beispielen verändern |
| Ziel | die Quote, die Ihnen genügt |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Beginnen Sie mit einer Basis
Schreiben Sie zuerst eine Reihe von Fällen auf. Ein Fall ist eine Eingabe mit der Antwort, die Sie wollen. Lassen Sie Ihren jetzigen Prompt über alle Fälle laufen und zählen Sie, wie viele bestehen.
Diese Zahl ist die Basis. Ohne sie können Sie nicht sagen, ob eine Änderung geholfen hat. Halten Sie die Fälle fest, damit jeder spätere Lauf fair bleibt.
Beispiel: Ein Sortierer für Kundenanfragen
| Art der Anfrage | Fälle | Basis besteht | Besserer Prompt besteht |
|---|---|---|---|
| Rechnung | 3 | 2 | 3 |
| Lieferung | 3 | 1 | 2 |
| Erstattung | 2 | 0 | 2 |
| Ton | 2 | 0 | 0 |
| alle | 10 | 3 (30 %) | 7 (70 %) |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Was ein Prompt lösen kann und was nicht
Ein Prompt kann eine fehlende Anweisung, ein fehlendes Beispiel oder eine falsche Ausgabeform beheben. Er ist günstig, und Sie machen ihn in einer Sekunde rückgängig.
Schwer wird es, wenn das Modell einen Stil befolgen soll, den es nie gesehen hat, oder Fakten kennen soll, die das Fenster nicht fasst. Dann lohnt sich das Anpassen eher. Den Prompt selbst lehrt Modul 79.
Ein häufiger Fehler
Warnung
Viele glauben, eine falsche Antwort heiße, das Modell müsse trainiert werden. Oft hat der Prompt nie gesagt, was gewollt war. Prüfen Sie erst den Prompt und einige Beispiele. Trainieren Sie nur, wenn ein fairer Test keinen echten Gewinn zeigt.
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.
Basisbericht schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' '// Aufgezeichnete Ergebnisse: 1 heißt, der Sortierer hat die Anfrage richtig eingeordnet.' 'const arten = [\"rechnung\", \"rechnung\", \"rechnung\", \"lieferung\", \"lieferung\", \"lieferung\", \"erstattung\", \"erstattung\", \"ton\", \"ton\"];' 'const basis = [1, 1, 0, 1, 0, 0, 0, 0, 0, 0];' 'const mitPrompt = [1, 1, 1, 1, 1, 0, 1, 1, 0, 0];' > anpassen1.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.
Basisbericht schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function erfolgsquote(liste) {' ' let richtig = 0;' ' for (const r of liste) richtig = richtig + r;' ' return Math.floor((richtig * 100) / liste.length);' '}' 'function scheiternde(liste) {' ' const aus = [];' ' liste.forEach(function (r, i) {' ' if (r === 0 && aus.includes(arten[i]) === false) aus.push(arten[i]);' ' });' ' return aus.sort();' '}' >> anpassen1.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.
Basisbericht schreiben, Teil 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' ' console.log(\"aufgezeichnete Läufe, 10 Fälle\");' ' console.log(\"Basis \" + erfolgsquote(basis) + \" Prozent, scheitern weiter: \" + scheiternde(basis).join(\", \"));' ' console.log(\"besserer Prompt \" + erfolgsquote(mitPrompt) + \" Prozent, scheitern weiter: \" + scheiternde(mitPrompt).join(\", \"));' ' const frage = \"Antworten Sie in einem Satz: Kann ein Prompt einem Modell einen Hausstil beibringen, den es nie gesehen hat?\";' ' const probe = \"Ein Prompt kann einige Beispiele für den Stil zeigen, aber er ändert nicht, was das Modell von sich aus tut.\";' ' const antwort = await fragen([{ role: \"user\", content: frage }], probe, 40);' ' console.log(\"Modell: \" + antwort.text);' '}' 'main();' >> anpassen1.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.
Basisbericht ausführen
docker exec -w /home/node/project agent node anpassen1.jsHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Ergebnisse sind aufgezeichnet, nicht live
Die zwei Ergebnislisten sind aufgezeichnet und ins Skript geschrieben. Kein Modell hat sie erzeugt, alle Studierenden sehen also dieselben Zahlen. Nur die letzte Zeile ruft das Modell des Labors auf. Antwortet keines, druckt sie eine Aufgezeichnete Probe.