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

KI-Agenten planen und stoppen

Nach dieser Lektion: Ich kann einen Agenten seine Schritte planen lassen und nach einer Regel stoppen.

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

Der Agent, der nie fertig wurde

Ein KI-Agent ist eine Schleife, in der ein Modell seinen nächsten Schritt selbst wählt. Weil ihm nichts sagt, wann er aufgeben soll, braucht er einen Plan und eine Regel zum Stoppen.

Ein Support-Agent wiederholt die ganze Nacht eine Abfrage, die fehlschlägt. Jeder Versuch kostet Geld und keiner kann gelingen. Die Schleife war richtig. Es fehlte die Stoppregel.

Am Ende dieser Lektion

Notiz

Ich kann einen Agenten seine Schritte planen lassen und nach einer Regel stoppen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Agenteine Schleife, in der ein Modell den nächsten Schritt wählt
Plandie Schritte, die ein Agent vorhat, als Daten
Schrittbudgetdie größte Zahl von Schritten eines Laufs3
Stoppregelein Test, der die Schleife beendet
Ausgangder Grund, warum ein Lauf endete

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

Ein Plan ist ein Datum, kein Gefühl

Bitten Sie das Modell um einen Plan als JSON-Liste und behandeln Sie ihn als Datum. Ihr Programm kann ihn zählen, jeden Schritt prüfen und einer Person zeigen, bevor etwas läuft.

Ein Plan ist ein Vorschlag. Das Modell kann eine Liste in falscher Form liefern oder einen Schritt, den kein Werkzeug kann. Prüfen Sie den Plan, bevor Sie ihm folgen.

Ausgearbeitetes Beispiel: ein Plan und sein Lauf

SchrittDer Plan sagtErgebnis des WerkzeugsZustand des Laufs
1brezel nachschlagenbrezel kostet 90 Centok
2semmel nachschlagensemmel kostet 45 Centok
3kiwi nachschlagenkein Werkzeug passtfehler
4die Preise nennennicht erreichtBudget oder Stillstand entscheidet

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

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\";' '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 Modell-Hilfe 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.

Den planenden Agenten schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const PREISE = { brezel: 90, semmel: 45, apfel: 60 };' 'const nachrichten = [' '  { role: \"system\", content: \"Sie antworten nur mit JSON.\" },' '  { role: \"user\", content: \"Planen Sie, wie man den Preis einer Brezel, einer Semmel und einer Kiwi herausfindet. Antworten Sie mit einem JSON-Array aus 3 kurzen Texten, je einem Produkt. Antworten Sie nur mit dem JSON.\" },' '];' '// Aufgezeichnete Probe, nur benutzt, wenn kein Modell antwortet.' 'const probe = JSON.stringify([\"brezel\", \"semmel\", \"kiwi\"]);' > plan1.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 planenden Agenten schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function schritt(text) {' '  const name = Object.keys(PREISE).find(function (k) { return text.toLowerCase().indexOf(k) >= 0; });' '  if (name === undefined) return { ok: false, notiz: \"kein Werkzeug passt: \" + text };' '  return { ok: true, notiz: name + \" kostet \" + PREISE[name] + \" Cent\" };' '}' >> plan1.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 planenden Agenten schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  const antwort = await fragen(nachrichten, probe, 100);' '  let plan = null;' '  try { plan = JSON.parse(antwort.slice(antwort.indexOf(\"[\"), antwort.lastIndexOf(\"]\") + 1)); } catch (fehler) { }' '  if (Array.isArray(plan) === false) { console.log(\"Keine Liste, ein fester Plan wird benutzt.\"); plan = [\"brezel\", \"semmel\"]; }' '  const budget = 3, maxFehler = 2;' '  let genutzt = 0, fehlschlaege = 0, ausgang = \"fertig\";' '  for (const text of plan) {' '    if (genutzt === budget) { ausgang = \"budget\"; break; }' '    genutzt += 1;' '    const r = schritt(String(text));' '    fehlschlaege = r.ok ? 0 : fehlschlaege + 1;' '    console.log(\"Schritt \" + genutzt + \": \" + r.notiz);' '    if (fehlschlaege === maxFehler) { ausgang = \"festgefahren\"; break; }' '  }' '  console.log(\"Ausgang: \" + ausgang + \" nach \" + genutzt + \" Schritten\");' '}' 'main();' >> plan1.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 Agenten starten und den Ausgang lesen

Befehl
docker exec -w /home/node/project agent node plan1.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
Schritt 1 und 2Die Preise von Brezel und Semmel
Schritt 3kein Werkzeug passt: kiwi
Ausgangfertig nach 3 Schritten, denn ein Fehler sind noch nicht zwei hintereinander

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

Drei Arten, wie ein Lauf endet

Ein Lauf kann enden, weil die Arbeit fertig ist, weil der Agent festgefahren ist oder weil das Budget aufgebraucht ist. Jeder Ausgang ist eine andere Meldung an die Nutzer und eine andere Zeile im Protokoll.

Prüfen Sie sie in dieser Reihenfolge. Ein Lauf, der im letzten erlaubten Schritt endet, ist fertig, nicht über dem Budget. Festgefahren heißt wiederholte Fehler ohne Fortschritt.

Ein häufiger Fehler

Warnung

Viele glauben, ein Budget allein sei eine Stoppregel. Ein Budget begrenzt nur die Kosten. Es unterscheidet einen fertigen Lauf nicht von einem festgefahrenen. Behalten Sie das Budget als letztes Mittel und ergänzen Sie Regeln für fertig und festgefahren.

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