Prompt, Retrieval oder Feintuning: die Wahl
Es gibt drei Wege, eine modellgestützte Funktion zu ändern: einen besseren Prompt, Retrieval und Feintuning. Retrieval heißt auch RAG: Das Modell bekommt passende Dokumente mitgeschickt. Sie lösen verschiedene Probleme und kosten sehr unterschiedlich. Das ist wichtig, weil Teams oft zuerst das Teuerste wählen.
Ein Support-Team will Antworten im Hauston, nach der Preisliste dieser Woche, in einem festen Format. Das sind drei Bedürfnisse, und sie haben vielleicht nicht dieselbe Lösung.
Am Ende dieser Lektion
Notiz
Ich kann für ein Bedürfnis zwischen einem besseren Prompt, Retrieval und Feintuning wählen.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Prompt | die Anweisungen und Beispiele, die mit einem Aufruf gesendet werden |
| Retrieval | Dokumente holen und mit dem Aufruf senden |
| Feintuning | ein Modell mit eigenen Beispielen weitertrainieren |
| Trainingsbeispiel | eine Eingabe, gepaart mit der gewünschten Ausgabe |
| Wissen | die Fakten, von denen die Antwort abhängt |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Feintuning wird hier nicht ausgeführt
Warnung
Das Labor kann kein Modell feintunen. Diese Lektion ist eine Entscheidungsübung. Sie gibt die Fragen, die man stellt, und eine Lehrregel. Sie behauptet nicht, was ein Feintuning für Sie brächte: Messen Sie das an Ihren eigenen Fällen.
Fragen Sie, um welche Art Problem es geht
Stellen Sie vier Fragen der Reihe nach. Hängt die Antwort von Fakten ab, die privat sind oder sich ändern? Scheitert das Modell an der Form, etwa Ton oder Format? Haben Sie einen klaren Prompt mit Beispielen ausprobiert? Haben Sie genug Beispiele und eine Möglichkeit zu messen?
Fakten führen zu Retrieval. Die Form führt zuerst zum Prompt, und zum Feintuning erst, wenn der Prompt scheitert und die Beispiele vorhanden sind.
Beispiel: fünf Bedürfnisse
| Bedürfnis | Erste Frage | Wahrscheinlicher erster Schritt |
|---|---|---|
| Ein freundlicher Ton | Scheitert ein Prompt mit Beispielen? | Prompt, dann Feintuning, wenn er scheitert und Beispiele da sind |
| Preise, die sich wöchentlich ändern | Ändern sich die Fakten? | Retrieval: feingetunte Fakten veralten |
| Ein striktes Ausgabeformat | Können Beispiele es zeigen? | Prompt, mit einer Prüfung, die die Ausgabe einliest |
| Antworten aus privaten Handbüchern | Sind die Fakten privat? | Retrieval, mit angezeigten Quellen |
| Niedrigere Kosten pro Aufruf | Wie groß ist der Prompt? | Erst messen: ein kürzerer Prompt oder ein kleineres Modell |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Kosten und Grenzen jeder Wahl
Ein Prompt ist billig zu ändern und leicht zurückzunehmen, verbraucht aber bei jedem Aufruf Tokens. Retrieval fügt einen Speicher und eine Suche hinzu und scheitert, wenn die Suche danebenliegt. Feintuning braucht Beispiele, einen Trainingslauf und ein neues Modell, das man pflegen muss, und es hält Fakten nicht aktuell.
Keines behebt eine fehlende Anforderung oder eine schlechte Bewertung. Schreiben Sie zuerst die Fälle, die über den Erfolg entscheiden.
Ein häufiger Fehler
Warnung
Viele glauben, Feintuning bringe einem Modell neue Fakten bei. Es formt vor allem Stil und Format. Fakten, die sich ändern, gehören ins Retrieval, wo Sie ein Dokument aktualisieren und die Antwort sich am selben Tag ändert.
Das Modell-Hilfsskript 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.
Das Modell-Hilfsskript 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.
Die Entscheidungsregel schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const faelle = [' ' { bedarf: \"ein freundlicher Ton\", privateDokumente: false, faktenAendernSich: false, promptScheitert: true, beispiele: 800 },' ' { bedarf: \"Preise, die sich wöchentlich ändern\", privateDokumente: false, faktenAendernSich: true, promptScheitert: false, beispiele: 0 },' ' { bedarf: \"ein striktes Ausgabeformat\", privateDokumente: false, faktenAendernSich: false, promptScheitert: false, beispiele: 40 },' ' { bedarf: \"Antworten aus unseren Handbüchern\", privateDokumente: true, faktenAendernSich: false, promptScheitert: true, beispiele: 60 },' ' { bedarf: \"niedrigere Kosten pro Aufruf\", privateDokumente: false, faktenAendernSich: false, promptScheitert: false, beispiele: 0 },' '];' > decide.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 Entscheidungsregel schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function waehlen(f) {' ' const retrieval = f.privateDokumente || f.faktenAendernSich;' ' const tunen = f.promptScheitert && f.beispiele >= 500;' ' if (retrieval && tunen) return \"Retrieval und Feintuning\";' ' if (retrieval) return \"Retrieval\";' ' if (tunen) return \"Feintuning\";' ' if (f.promptScheitert) return \"Beispiele sammeln\";' ' return \"Prompt\";' '}' 'faelle.forEach(function (f) { console.log(f.bedarf + \":\", waehlen(f)); });' >> decide.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 Entscheidungsregel schreiben, Teil 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' ' const text = \"Antworten Sie nur mit JSON mit den Schlüsseln produkt und preis für: Fahrrad, 120 Euro.\";' ' const probe = JSON.stringify({ produkt: \"Fahrrad\", preis: 120 });' ' const antwort = await fragen([{ role: \"user\", content: text }], probe, 40);' ' let gueltig = true;' ' try { JSON.parse(antwort); } catch (fehler) { gueltig = false; }' ' console.log(\"Erst der Prompt:\", antwort);' ' console.log(\"Gültiges JSON:\", gueltig);' '}' 'main();' >> decide.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 Regel auf fünf Fälle anwenden
docker exec -w /home/node/project agent node decide.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 Regel ist eine Lehrregel
Der Run wendet eine leicht lesbare Regel an, keine Messung. Die Schwelle von 500 Beispielen ist eine erfundene Zahl für die Übung. Ihre eigene Schwelle ergibt sich aus Ihren Fällen und Ihrer Bewertung.
Der echte Aufruf probiert zuerst den billigsten Schritt: einen Prompt, der JSON verlangt, und dann eine Prüfung durch Einlesen.
Eine mögliche Ausgabe
| Zeile | Was sie zeigt |
|---|---|
| ein freundlicher Ton: Feintuning | Der Prompt scheiterte und es gibt 800 Beispiele |
| Preise, die sich wöchentlich ändern: Retrieval | Die Fakten ändern sich |
| niedrigere Kosten pro Aufruf: Prompt | Nichts scheiterte, also messen Sie zuerst den Prompt |
| Gültiges JSON | true oder false: Ließ sich die Antwort als JSON einlesen? |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.