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

Einen kleinen KI-Agenten in Node bauen

Nach dieser Lektion: Ich kann einen kleinen Agenten bauen, der plant, Werkzeuge aufruft, sich etwas merkt und stoppt.

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

Die Teile zusammensetzen

Ein kleiner KI-Agent ist eine einzige Schleife, die plant, Werkzeuge aufruft, Notizen führt und nach einer Regel stoppt. Sie haben jedes Teil einzeln gebaut. Die Kunst ist, sie so zu verbinden, dass sich die Schleife leicht testen lässt.

Eine Schleife, die nur mit einem echten Modell läuft, lässt sich nicht testen. Eine Schleife über ein Modell mit Drehbuch schon.

Am Ende dieser Lektion

Notiz

Ich kann einen kleinen Agenten bauen, der plant, Werkzeuge aufruft, sich etwas merkt und stoppt.

Schlüsselwörter

BegriffWas er bedeutet
AgentenschleifeAktion wählen, ausführen, notieren, wiederholen
Modell mit Drehbuchein Ersatz, der feste Aktionen liefert
Spureine Liste dessen, was jeder Schritt tat
Abschlussaktiondie Aktion, die einen Lauf als fertig beendet
Testdoubleein Ersatz, der statt des echten Teils benutzt wird

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

Die Agentenschleife in einem Bild

In jeder Runde wird zuerst das Budget geprüft. Das Modell wählt eine Aktion. Eine Abschlussaktion beendet den Lauf als fertig. Jede andere Aktion führt ein Werkzeug aus und notiert das Ergebnis.

Danach zählt die Schleife die Fehler hintereinander. Genug davon beenden den Lauf als festgefahren. Sonst geht es in die nächste Runde.

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 kleinen 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 };' 'const notizen = [];' 'const werkzeuge = {' '  preis_lesen: function (produkt) {' '    if (PREISE[produkt] === undefined) return { ok: false, text: \"kein Preis für \" + produkt };' '    return { ok: true, text: produkt + \" \" + PREISE[produkt] + \" Cent\" };' '  },' '  notiz_machen: function (text) { notizen.push(text); return { ok: true, text: \"notiert \" + notizen.length }; },' '};' > agent1.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 kleinen Agenten schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const drehbuch = [' '  { werkzeug: \"preis_lesen\", arg: \"brezel\" },' '  { werkzeug: \"preis_lesen\", arg: \"kiwi\" },' '  { werkzeug: \"preis_lesen\", arg: \"semmel\" },' '  { werkzeug: \"notiz_machen\", arg: \"brezel 90, semmel 45\" },' '  { werkzeug: \"abschliessen\", arg: \"Brezel und Semmel kosten zusammen 135 Cent.\" },' '];' '// Ein Modell mit Drehbuch liefert bei jedem Lauf dieselbe Aktion, so lässt sich die Schleife testen.' 'const modellMitDrehbuch = function (runde) { return JSON.stringify(drehbuch[runde]); };' >> agent1.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 kleinen Agenten schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  const budget = Number(process.argv[2] || 6), maxFehler = 2;' '  let genutzt = 0, fehlschlaege = 0, ausgang = \"budget\", antwort = \"\";' >> agent1.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 kleinen Agenten schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  while (genutzt < budget && genutzt < drehbuch.length) {' '    const aktion = JSON.parse(modellMitDrehbuch(genutzt));' '    genutzt += 1;' '    if (aktion.werkzeug === \"abschliessen\") { ausgang = \"fertig\"; antwort = aktion.arg; break; }' '    const starten = werkzeuge[aktion.werkzeug];' '    const r = starten ? starten(aktion.arg) : { ok: false, text: \"unbekanntes Werkzeug \" + aktion.werkzeug };' '    fehlschlaege = r.ok ? 0 : fehlschlaege + 1;' '    console.log(\"Schritt \" + genutzt + \": \" + aktion.werkzeug + \"(\" + aktion.arg + \") -> \" + r.text);' '    if (fehlschlaege === maxFehler) { ausgang = \"festgefahren\"; break; }' '  }' '  console.log(\"Ausgang: \" + ausgang + \" nach \" + genutzt + \" Schritten. Notizen: \" + JSON.stringify(notizen));' >> agent1.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 kleinen Agenten schreiben, Teil 5

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  if (ausgang === \"fertig\") {' '    const bitte = [{ role: \"user\", content: \"Sagen Sie das einer Kundin in einem freundlichen Satz: \" + antwort }];' '    console.log(\"Antwort: \" + await fragen(bitte, antwort, 60));' '  }' '}' 'main();' >> agent1.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 mit Budget 6 starten

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

Ihn noch einmal mit Budget 4 starten

Befehl
docker exec -w /home/node/project agent node agent1.js 4

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

BudgetWas es zeigt
6Schritt 2 scheitert an der Kiwi, dann Ausgang: fertig nach 5 Schritten und eine Antwort in einem Satz
4Vier Schritte, dann Ausgang: budget nach 4 Schritten und keine Antwort

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

Die Schleife mit einem Modell mit Drehbuch testen

Ein Modell mit Drehbuch liefert bei jedem Lauf dieselben Aktionen. Damit testen Sie die Schleife für jeden Ausgang: fertig, budget, festgefahren und Drehbuch zu Ende.

Testen Sie das echte Modell getrennt, bei dem, was es am besten kann: eine sinnvolle Aktion wählen. Beurteilen Sie die Schleife nie nach einem einzigen glücklichen Lauf.

Ein häufiger Fehler

Warnung

Viele glauben, ein Agent, der einmal mit einem echten Modell lief, sei getestet. Ein Modell liefert jedes Mal andere Aktionen, ein guter Lauf beweist also sehr wenig. Testen Sie die Schleife mit einem Drehbuch und das Modell mit vielen Fällen.

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