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

Ausweichlösungen, wenn ein Aufruf scheitert

Nach dieser Lektion: Ich kann eine Funktion am Laufen halten, wenn ein Modellaufruf scheitert, indem ich für jede Fehlerart eine Ausweichlösung wähle.

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

Weiterarbeiten, wenn das Modell scheitert

Eine Ausweichlösung ist das, was eine Funktion tut, wenn ein Modellaufruf scheitert, damit die Person trotzdem etwas bekommt. Das ist wichtig, weil Aufrufe auf mehrere Arten scheitern und eine einzige Antwort darauf für die meisten falsch ist.

Eine Zeitüberschreitung verdient eine Wiederholung. Eine Ablehnung nicht. Ein aufgebrauchtes Tagesbudget braucht eine Cache-Antwort oder eine ehrliche Meldung. Wählen Sie je nach Fehler.

Am Ende dieser Lektion

Notiz

Ich kann eine Funktion am Laufen halten, wenn ein Modellaufruf scheitert, indem ich für jede Fehlerart eine Ausweichlösung wähle.

Schlüsselwörter

BegriffWas er bedeutet
Ausweichlösungwas Sie stattdessen tun, wenn ein Aufruf scheitert
Wiederholungdasselbe Modell nach einer Wartezeit erneut fragen
Zweites Modellein anderes Modell, das gefragt wird, wenn das erste scheitert
Einfache Antworteine feste, ehrliche Meldung ohne Modell
Abstufeneine kleinere Antwort geben statt keiner
Fehlerartder Grund, warum ein Aufruf scheiterte

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

Eine Ausweichlösung ist eine Kette in Reihenfolge

Ordnen Sie die Optionen von der besten Antwort bis zur am stärksten abgestuften. Zuerst eine Wiederholung, nach einer Wartezeit. Dann ein zweites Modell. Dann eine Cache-Antwort, die alt sein kann. Zuletzt eine einfache Antwort: eine feste, wahre Meldung, die der Person sagt, was zu tun ist.

Jeder Schritt kostet Zeit und Geld. Eine Kette, die bei jedem Fehler alles versucht, verdoppelt Ihre Rechnung bei einem Ausfall.

Durchgerechnetes Beispiel: welche Ausweichlösung passt

FehlerZuerstWarum
Zeitüberschreitung, RatenlimitEinmal wiederholenGeht oft von selbst vorbei
ServerfehlerZweites ModellDas erste ist ausgefallen
Falsches FormatEinmal wiederholenEin zweiter Versuch klappt oft
AblehnungEinfache AntwortNochmal fragen ändert nichts
Budget aufgebrauchtCache-AntwortKein Aufruf ist erlaubt

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

Die Kette begrenzen und es sagen

Setzen Sie jedem Schritt ein Limit: eine Wiederholung, ein zweites Modell. Warten Sie zwischen den Versuchen und rechnen Sie die Wartezeit auf das Zeitlimit der Person an. Lassen Sie eine Ausweichlösung nie einen Fehler verbergen. Protokollieren Sie, welcher Schritt geantwortet hat.

Eine Cache-Antwort kann veraltet sein, sagen Sie es also, wenn es zählt. Eine einfache Antwort darf nie vortäuschen, vom Modell zu stammen.

Ein häufiger Fehler

Warnung

Viele glauben, Wiederholen sei immer die sicherste Ausweichlösung. Doch eine Ablehnung zu wiederholen kostet Geld, und bei einem Ausfall zu wiederholen erhöht die Last. Wiederholen Sie nur Fehler, die von selbst vorbeigehen können, und nur einmal.

Die Modell-Hilfe 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.

Die Modell-Hilfe 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.

Die Ausweichkette schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' '' 'let jetzt = 0; // Millisekunden auf einer Uhr, die wir selbst weiterstellen' 'const speicher = new Map([[\"oeffnungszeiten\", \"Wir öffnen um neun Uhr und schließen um siebzehn Uhr.\"]]);' 'const EINFACH = \"Leider kann der Assistent gerade nicht antworten. Bitte versuchen Sie es später noch einmal.\";' '// Ein aufgezeichneter Fehler ersetzt einen echten. Nichts hier löst einen echten Fehler aus.' 'function scheitern(art) { throw new Error(art); }' > fallback5.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 Ausweichkette schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function zweitesModell() {' '  const nachrichten = [{ role: \"user\", content: \"Nenne die Öffnungszeiten, neun bis siebzehn Uhr, in einem Satz.\" }];' '  return (await fragen(nachrichten, \"Wir öffnen um neun Uhr und schließen um siebzehn Uhr.\", 40)).text;' '}' >> fallback5.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 Ausweichkette schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function antworten(frage, zweites) {' '  const schritte = [' '    [\"erstes Modell\", function () { scheitern(\"ratenlimit\"); }],' '    [\"Wiederholung\", function () { jetzt = jetzt + 200; scheitern(\"ratenlimit\"); }],' '    [\"zweites Modell\", zweites],' '    [\"Cache\", function () { return speicher.has(frage) ? speicher.get(frage) : scheitern(\"fehlt\"); }],' '  ];' >> fallback5.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 Ausweichkette schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  for (const [name, lauf] of schritte) {' '    try {' '      const text = await lauf();' '      console.log(frage + \": \" + name + \" hat nach \" + jetzt + \" ms geantwortet\");' '      return text;' '    } catch (fehler) {' '      console.log(frage + \": \" + name + \" ist gescheitert (\" + fehler.message + \")\");' '    }' '  }' '  console.log(frage + \": einfache Antwort\");' '  return EINFACH;' '}' >> fallback5.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 Ausweichkette schreiben, Teil 5

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  const ausfall = function () { scheitern(\"serverfehler\"); };' '  await antworten(\"oeffnungszeiten\", zweitesModell);' '  await antworten(\"oeffnungszeiten\", ausfall);' '  await antworten(\"erstattung\", ausfall);' '}' 'main();' >> fallback5.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 Kette ausführen

Befehl
docker exec -w /home/node/project agent node fallback5.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 Fehler sind aufgezeichnet

Nichts in diesem Run löst einen echten Fehler aus. Die Ratenlimits und der Serverfehler stehen als aufgezeichnete Daten im Skript, und die Uhr ist eine Zahl, die es weiterstellt. Nur das zweite Modell ist ein echter Aufruf.

Ein echtes System bekommt diese Fehler aus einem echten Netz und wartet zwischen den Versuchen wirklich.

Eine mögliche Ausgabe

ZeileWas sie zeigt
oeffnungszeiten: erstes Modell ist gescheitert (ratenlimit)Ein aufgezeichneter Fehler
oeffnungszeiten: Wiederholung ist gescheitert (ratenlimit)Die Wiederholung, nach 200 ms auf unserer Uhr
oeffnungszeiten: zweites Modell hat nach 200 ms geantwortetDer einzige echte Aufruf
oeffnungszeiten: Cache hat nach 400 ms geantwortetDas zweite Modell ist ausgefallen, also antwortet der Cache
erstattung: einfache AntwortNichts war im Cache, also die einfache Meldung

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

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