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

Wie Multi-Agenten-Systeme scheitern

Nach dieser Lektion: Ich kann den Fehler in einem Verlauf finden und seine Art benennen.

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

Ein Team scheitert anders als ein Agent

Ein Multi-Agenten-Ausfall ist eine Art, wie ein Agententeam entgleist, die kein einzelner Agent kennt. Das ist wichtig, denn der Fehler liegt im Gespräch zwischen ihnen, und jeder Agent wirkt für sich in Ordnung.

Man findet ihn, indem man den Verlauf liest, die Liste der gesendeten Nachrichten.

Am Ende dieser Lektion

Notiz

Ich kann den Fehler in einem Verlauf finden und seine Art benennen.

Schlüsselwörter

BegriffWas er bedeutet
Verlaufdie Nachrichten, die Agenten gesendet haben, der Reihe nach
Schleifedieselbe Nachricht, die immer wieder gesendet wird
Verklemmungzwei Agenten, die jeweils auf den anderen warten
Kostenlawineein Token-Verbrauch, der über das Budget wächst
Weitergereichteine Vermutung, die später als Tatsache wiederholt wird
Schutzeine Regel im Code, die einen Fehler früh stoppt

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

Vier Arten, wie ein Team entgleist

Eine Schleife wiederholt eine Nachricht. Eine Verklemmung lässt zwei Agenten jeweils darauf warten, dass der andere beginnt. Eine Kostenlawine wächst, weil jede Runde den ganzen bisherigen Verlauf liest.

Die vierte ist leiser. Ein Arbeiter vermutet, der nächste Agent wiederholt die Vermutung, und beim dritten steht sie als Tatsache.

Ausgearbeitetes Beispiel: das Zeichen und der Schutz

FehlerZeichen im VerlaufSchutz
SchleifeDerselbe Absender, Empfänger und Text dreimalBei der dritten Wiederholung stoppen
VerklemmungZwei Nachrichten, die beide warte auf sagen, vertauschtEin Zeitlimit und eine Rangfolge
WeitergereichtEine Vermutung, dann dieselben Worte als TatsacheDen Status mit der Aussage mitführen
KostenlawineToken je Runde, die immer weiter steigenEin Budget für den ganzen Lauf

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

Prüfen Sie zuerst das deutlichste Zeichen

Ein echter Verlauf kann mehr als ein Zeichen zeigen. Legen Sie eine Reihenfolge fest und halten Sie sie ein. Verklemmung und Schleife stoppen beide die Arbeit, benennen Sie sie also vor den Kosten.

Das Modul über den Bau von Agenten behandelt den Schleifenschutz. Diese Lektion übt, alle vier zu erkennen, damit Sie wissen, welchen Schutz Sie ergänzen.

Ein häufiger Fehler

Warnung

Viele ergänzen einen Wiederholungsversuch, wenn ein Team stockt. Er verlängert eine Schleife und verkürzt keine Verklemmung. Benennen Sie zuerst den Fehler, dann wählen Sie den passenden Schutz.

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

Den Fehlerfinder schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'function n(von, an, text, token, status) {' '  return { von: von, an: an, text: text, token: token, status: status };' '}' 'const V = {};' 'V.schleife = [n(\"Autor\", \"Prüfer\", \"prüfe den Entwurf\", 300, \"keiner\"), n(\"Prüfer\", \"Autor\", \"füge eine Quelle hinzu\", 200, \"keiner\"),' '  n(\"Autor\", \"Prüfer\", \"prüfe den Entwurf\", 300, \"keiner\"), n(\"Prüfer\", \"Autor\", \"füge eine Quelle hinzu\", 200, \"keiner\"),' '  n(\"Autor\", \"Prüfer\", \"prüfe den Entwurf\", 300, \"keiner\")];' 'V.verklemmung = [n(\"Planer\", \"Gutachter\", \"warte auf das Gutachten, bevor ich plane\", 150, \"keiner\"),' '  n(\"Gutachter\", \"Planer\", \"warte auf den Plan, bevor ich begutachte\", 150, \"keiner\")];' > ausfall.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.

Den Fehlerfinder schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'V.weitergereicht = [n(\"Leser\", \"Planer\", \"die Samstagsbesuche stiegen um 40 Prozent\", 200, \"vermutung\"),' '  n(\"Planer\", \"Autor\", \"die Samstagsbesuche stiegen um 40 Prozent\", 200, \"tatsache\")];' 'V.lawine = [n(\"a\", \"b\", \"Runde eins\", 1000, \"keiner\"), n(\"b\", \"a\", \"Runde zwei\", 2000, \"keiner\"), n(\"a\", \"b\", \"Runde drei\", 4000, \"keiner\"),' '  n(\"b\", \"a\", \"Runde vier\", 8000, \"keiner\"), n(\"a\", \"b\", \"Runde fünf\", 16000, \"keiner\")];' 'V.in_ordnung = [n(\"Planer\", \"Leser\", \"suche die Nachfrage am Sonntag\", 200, \"keiner\"), n(\"Leser\", \"Planer\", \"212 von 400\", 150, \"tatsache\")];' >> ausfall.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.

Den Fehlerfinder schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function zwei(ns, probe) {' '  return ns.some(function (x, i) { return ns.some(function (y, j) { return i < j && probe(x, y); }); });' '}' 'function verklemmung(ns) {' '  return zwei(ns, function (x, y) {' '    return x.text.startsWith(\"warte auf\") && y.text.startsWith(\"warte auf\") && x.von === y.an && x.an === y.von;' '  });' '}' 'function schleife(ns) {' '  return ns.some(function (x) {' '    return ns.filter(function (y) { return y.von === x.von && y.an === x.an && y.text === x.text; }).length >= 3;' '  });' '}' >> ausfall.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.

Den Fehlerfinder schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function weitergereicht(ns) {' '  return zwei(ns, function (x, y) { return x.status === \"vermutung\" && y.status === \"tatsache\" && x.text === y.text; });' '}' 'function gesamt(ns) { return ns.reduce(function (a, x) { return a + x.token; }, 0); }' 'function finden(ns, budget) {' '  if (verklemmung(ns)) return \"verklemmung\";' '  if (schleife(ns)) return \"schleife\";' '  if (weitergereicht(ns)) return \"vermutung-weitergereicht\";' '  return gesamt(ns) > budget ? \"kostenlawine\" : \"keine\";' '}' >> ausfall.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.

Den Fehlerfinder schreiben, Teil 5

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  for (const name of Object.keys(V)) {' '    console.log(name + \": \" + V[name].length + \" Nachrichten, \" + gesamt(V[name]) + \" Token, gefunden \" + finden(V[name], 20000));' '  }' '  const q = [{ role: \"user\", content: \"Nennen Sie in einem Satz eine einfache Regel, die verhindert, dass zwei Agenten endlos dieselbe Nachricht schicken.\" }];' '  const r = await fragen(q, \"Jede Nachricht zählen und bei der dritten Wiederholung stoppen.\", 40);' '  console.log(\"Modell: \" + r.text.trim());' '}' 'main();' >> ausfall.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.

Den Fehlerfinder starten

Befehl
docker exec -w /home/node/project agent node ausfall.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 sind aufgezeichnete Verläufe

Ein echter Lauf würde das Guthaben des Labors für ein einziges kaputtes Team verbrauchen. Die fünf Verläufe sind daher aufgezeichnete Daten, kurz und erfunden. Der Finder ist echter Code.

Der eine Live-Aufruf bittet um eine Regel. Ihre Worte sind bei jedem Lauf anders.

Eine mögliche Ausgabe

ZeileWas sie zeigt
schleife: 5 Nachrichten, 1300 Token, gefunden schleifeEine Nachricht dreimal
verklemmung: 2 Nachrichten, 300 Token, gefunden verklemmungJeder wartet auf den anderen
weitergereicht: 2 Nachrichten, 400 Token, gefunden vermutung-weitergereichtEine Vermutung wurde zur Tatsache
lawine: 5 Nachrichten, 31000 Token, gefunden kostenlawineÜber dem Budget von 20000
in_ordnung: 2 Nachrichten, 350 Token, gefunden keineKein Zeichen eines Fehlers

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.