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

Eine schlechte Modellantwort reparieren

Nach dieser Lektion: Ich kann eine schlechte Antwort mit dem Fehler als Rückmeldung wiederholen, einige Male und nicht öfter.

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

Dem Modell sagen, was nicht stimmte

Eine Reparaturschleife fragt nach einer schlechten Antwort erneut und schickt dem Modell die Fehler zurück, damit es sie behebt. Das ist wichtig, weil ein zweiter Versuch, der das Problem kennt, oft gelingt, wo ein blinder Versuch scheitern würde.

Ein Formular-Werkzeug erhält eine Antwort mit einem Wort, das das Schema nicht erlaubt. Sie abzulehnen vernichtet die Arbeit. Erneut zu fragen, mit dem Fehler in der Nachricht, rettet sie meistens.

Am Ende dieser Lektion

Notiz

Ich kann eine schlechte Antwort mit dem Fehler als Rückmeldung wiederholen, einige Male und nicht öfter.

Schlüsselwörter

BegriffWas er bedeutet
Reparaturschleifenach einer schlechten Antwort erneut fragen, mit Rückmeldung
Rückmeldungdie Fehler, in einer neuen Nachricht zurückgeschickt
Wiederholungsgrenzedie größte Zahl zusätzlicher Versuche
Notausgangwas man tut, wenn die Grenze erreicht ist
Nachrichtenlistedas Gespräch, das bei jedem Aufruf mitgeschickt wird
Aufgebenanhalten und den Notausgang nehmen

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

Die Fehler zurückschicken

Um eine Antwort zu reparieren, fragen Sie erneut mit dem ganzen bisherigen Gespräch. Hängen Sie die schlechte Antwort als Nachricht des Assistenten an. Hängen Sie dann eine Nachricht des Benutzers an, die die Fehler auflistet und die Regel wiederholt: nur mit dem JSON antworten.

Die Nachrichtenliste wächst jedes Mal um zwei. Das Modell sieht, was es sagte und was daran nicht stimmte.

Beispiel: drei Versuche

VersuchAntwortGefundener FehlerDanach gesendet
1Wahrscheinlich ja, Weizen enthält es.Kein JSON-ObjektDer Fehler und die Regel, nur mit dem JSON zu antworten
2{"antwort": "vielleicht"}antwort muss ja oder nein seinDer Fehler und die Regel noch einmal
3{"antwort": "ja"}KeinerNichts: Sie wird angenommen

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

Eine Grenze und ein Notausgang

Jede Wiederholung kostet Zeit und Guthaben. Setzen Sie deshalb eine Wiederholungsgrenze: den ersten Versuch und höchstens zwei weitere. Ist die Grenze erreicht, geben Sie auf und nehmen den Notausgang.

Ein Notausgang ist ein sicherer Wert wie „unbekannt“ oder ein Fehler, den eine Person sieht. Notieren Sie, dass es geschah, um zu sehen, wie oft.

Die Modellhilfe 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\";' '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.

Die Modellhilfe schreiben, Teil 2

Befehl
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 Reparaturschleife schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' '' 'const erlaubt = [\"ja\", \"nein\"];' 'const MAX_VERSUCHE = 3; // der erste Versuch und höchstens zwei weitere' '' 'function jsonHerausziehen(text) {' '  const anfang = text.indexOf(\"{\");' '  const ende = text.lastIndexOf(\"}\");' '  if (anfang === -1 || ende < anfang) return null;' '  try { return JSON.parse(text.slice(anfang, ende + 1)); } catch (fehler) { return null; }' '}' > reparatur3.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 Reparaturschleife schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function problemeVon(text) {' '  const antwort = jsonHerausziehen(text);' '  if (antwort === null) return [\"die Antwort ist kein JSON-Objekt\"];' '  if (Object.prototype.hasOwnProperty.call(antwort, \"antwort\") === false) return [\"der Schlüssel antwort fehlt\"];' '  if (erlaubt.includes(antwort.antwort) === false) return [\"antwort muss ja oder nein sein\"];' '  return [];' '}' >> reparatur3.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 Reparaturschleife schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function reparaturSchleife(frage, proben) {' '  const nachrichten = [{ role: \"user\", content: frage }];' '  for (let versuch = 1; versuch <= MAX_VERSUCHE; versuch = versuch + 1) {' '    const antwort = await fragen(nachrichten, proben, 60);' '    const gefunden = problemeVon(antwort);' '    console.log(\"Versuch \" + versuch + \": \" + (gefunden.length === 0 ? \"ok\" : gefunden.join(\"; \")));' '    if (gefunden.length === 0) return { ok: true, antwort: jsonHerausziehen(antwort), versuche: versuch };' '    nachrichten.push({ role: \"assistant\", content: antwort });' '    nachrichten.push({ role: \"user\", content: \"Beheben Sie diese Probleme und antworten Sie nur mit dem JSON: \" + gefunden.join(\"; \") });' '  }' '  return { ok: false, antwort: null, versuche: MAX_VERSUCHE };' '}' >> reparatur3.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 Reparaturschleife schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  const frage = \"Enthält Weizenmehl Gluten? Antworten Sie mit einem JSON-Objekt mit dem Schlüssel antwort, der ja oder nein ist. Antworten Sie nur mit dem JSON.\";' '  // Aufgezeichnete Proben, nur benutzt, wenn kein Modell antwortet: zwei schlechte Antworten, dann eine gute.' '  const proben = [\"Wahrscheinlich ja, Weizen enthält es.\", JSON.stringify({ antwort: \"vielleicht\" }), JSON.stringify({ antwort: \"ja\" })];' '  const ergebnis = await reparaturSchleife(frage, proben);' '  const notausgang = { antwort: \"unbekannt\" };' '  console.log(\"Benutzte Versuche:\", ergebnis.versuche);' '  console.log(\"Ergebnis:\", JSON.stringify(ergebnis.ok ? { antwort: ergebnis.antwort.antwort } : notausgang));' '}' 'main();' >> reparatur3.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 Schleife ausführen

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

Eine mögliche Ausgabe

ZeileWas sie zeigen kann
Versuch 1ok, wenn das Modell gleich sauberes JSON antwortete
Versuch 2 und Versuch 3Nur wenn Versuch 1 scheiterte: der Fehler oder ok
Benutzte VersucheEine Zahl von 1 bis 3
ErgebnisDie Antwort oder der Notausgang {"antwort":"unbekannt"}

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

Ein häufiger Fehler

Warnung

Viele glauben, Wiederholen bis es klappt sei unbedenklich. Trifft das Modell nie die richtige Form, endet eine Schleife ohne Grenze nie, und jeder Versuch kostet Zeit und Guthaben. Setzen Sie immer eine Grenze und legen Sie zuerst den Notausgang fest.

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