Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Trainingsdaten für die Feinabstimmung

Nach dieser Lektion: Ich kann Trainingsbeispiele schreiben, aus denen ein Modell lernen kann.

Lektion, 60 Min.6 BefehleLab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Trainingsdaten sind eine Liste von Beispielen

Die Feinabstimmung lehrt ein Modell aus Beispielen, die Sie liefern. Jedes Beispiel ist ein Paar: was das Modell bekommt und was Sie zurückwollen. Was Ihre Paare tun, das übernimmt das Modell.

Eine nachlässige Schreibweise, vierzigmal wiederholt, sind also vierzig Lektionen in etwas Falschem.

Am Ende dieser Lektion

Notiz

Ich kann Trainingsbeispiele schreiben, aus denen ein Modell lernen kann.

Schlüsselwörter

BegriffWas er bedeutet
Feinabstimmungein Modell mit eigenen Beispielen weitertrainieren
Eingabedie Hälfte eines Paares, die das Modell bekommt
Antwortdie Hälfte eines Paares, die Sie zurückwollen
JSONLeine Datei mit einem JSON-Objekt je Zeile
Etikettein festes Wort, das eine Klasse benennt

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein Paar in jeder Zeile

Eine JSONL-Datei hält ein Beispiel je Zeile. Jede Zeile ist ein kleines JSON-Objekt mit einer eingabe und einer antwort.

Eine Zeile lässt sich allein prüfen. Ist Zeile 90 kaputt, funktionieren die Zeilen 1 bis 89 weiter. Deshalb ist diese Form für Trainingsdateien so verbreitet.

Beispiel: drei Zeilen

ZeileWas sie enthältUrteil
1Eingabe "Ich wurde zweimal belastet", Antwort "rechnung"In Ordnung
2Eingabe "Falscher Rechnungsbetrag" und keine AntwortAntwort fehlt
3Eingabe "Ihr Laden gefällt mir", Antwort "Sonstiges"Unbekanntes Etikett: die Schreibweise stimmt nicht

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Halten Sie die Form immer gleich

Ein Modell lernt das Muster Ihrer Paare, auch die Fehler darin. Steht "rechnung" auch als "Rechnung" und "rechnungen", lernt es drei Antworten.

Wählen Sie eine feste Liste von Etiketten, eine Schreibweise für jedes und ein Layout für jede Eingabe. Prüfen Sie die Datei dann mit einem Programm, nicht mit dem Auge.

Ein häufiger Fehler

Warnung

Viele glauben, mehr Beispiele helfen immer. Hundert saubere Paare lehren mehr als tausend schlampige, denn ein Modell übernimmt auch die Fehler. Bereinigen Sie zuerst die Datei und fügen Sie danach weitere hinzu.

Modell-Helfer schreiben, Teil 1

Befehl
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

Befehl
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.

Zeilenprüfer schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const ETIKETTEN = [\"rechnung\", \"lieferung\", \"sonstiges\"];' 'const zeilen = [' '  JSON.stringify({ eingabe: \"Ich wurde zweimal belastet\", antwort: \"rechnung\" }),' '  JSON.stringify({ eingabe: \"Wo bleibt mein Paket\", antwort: \"lieferung\" }),' '  JSON.stringify({ eingabe: \"Ihr Laden gefällt mir\", antwort: \"Sonstiges\" }),' '  JSON.stringify({ eingabe: \"Falscher Rechnungsbetrag\" }),' '  JSON.stringify({ eingabe: \"\", antwort: \"sonstiges\" }),' '  \"das ist gar kein JSON\",' '  JSON.stringify({ eingabe: \"Karton kam zerdrückt an\", antwort: \"lieferung\" }),' '];' > anpassen2.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.

Zeilenprüfer schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function pruefen(zeile) {' '  let reihe;' '  try { reihe = JSON.parse(zeile); } catch (e) { return \"kein JSON\"; }' '  if (reihe === null || typeof reihe === \"string\" || typeof reihe === \"number\") return \"kein Objekt\";' '  if (typeof reihe.eingabe === \"undefined\" || typeof reihe.eingabe === \"number\") return \"Eingabe fehlt\";' '  if (typeof reihe.antwort === \"undefined\" || typeof reihe.antwort === \"number\") return \"Antwort fehlt\";' '  if (reihe.eingabe.trim() === \"\") return \"Eingabe leer\";' '  if (ETIKETTEN.includes(reihe.antwort) === false) return \"unbekanntes Etikett\";' '  return \"\";' '}' >> anpassen2.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.

Zeilenprüfer schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  let gut = 0;' '  zeilen.forEach(function (zeile, i) {' '    const grund = pruefen(zeile);' '    if (grund === \"\") gut = gut + 1;' '    else console.log(\"Zeile \" + (i + 1) + \": \" + grund);' '  });' '  console.log(gut + \" von \" + zeilen.length + \" Zeilen in Ordnung\");' '  const frage = \"Antworten Sie in einem Satz: Warum muss jedes Trainingsbeispiel dasselbe Etikett gleich schreiben?\";' '  const probe = \"Ein Modell lernt jede Schreibweise als eigene Antwort, und gemischte Schreibweisen zerteilen, was es lernt.\";' '  const antwort = await fragen([{ role: \"user\", content: frage }], probe, 40);' '  console.log(\"Modell: \" + antwort.text);' '}' 'main();' >> anpassen2.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.

Zeilenprüfer ausführen

Befehl
docker exec -w /home/node/project agent node anpassen2.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.

Was der Prüfer fand

Die sieben Zeilen sind erfunden. Der Prüfer liest jede einzeln und nennt den ersten Fehler, den er findet. So beheben Sie einen Fehler nach dem anderen.

Die letzte Zeile ist ein kurzer Modellaufruf. Ohne Modell druckt sie eine Aufgezeichnete Probe.

Über dieses Lab und seinen Quellcode: Lab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.