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

Ein Forschungsteam aus Agenten bauen

Nach dieser Lektion: Ich kann einen Orchestrator und Arbeiter mit Budget, Prüfung und Stoppregel laufen lassen.

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

Das Team zusammensetzen

Ein Forschungsteam aus Agenten besteht aus einem Orchestrator, einigen Arbeitern, einer Prüfung jedes Ergebnisses und einer Regel zum Stoppen. Das ist wichtig, denn jedes bisherige Teil kostet etwas, und ein Team ohne Grenze hat kein Ende.

Diese Lektion bindet das Modul in eine einzige Schleife mit einem Token-Budget.

Am Ende dieser Lektion

Notiz

Ich kann einen Orchestrator und Arbeiter mit Budget, Prüfung und Stoppregel laufen lassen.

Schlüsselwörter

BegriffWas er bedeutet
Budgetdie meisten Token, die ein ganzer Lauf ausgeben darf
Stoppregelein Test, der den Lauf beendet, bevor die Aufträge zu Ende sind
Angenommenein Ergebnis, das alle Prüfungen bestanden hat
Abgelehntein Ergebnis, das ausgelassen wird, mit seinen Gründen
Ausgegebendie bisher verbrauchten Token, von guten und schlechten Ergebnissen
Genugdie Zahl angenommener Ergebnisse, die den Lauf beendet

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

Eine Schleife, drei Grenzen

Der Orchestrator nimmt die Aufträge der Reihe nach. Vor jedem stellt er zwei Fragen. Habe ich schon genug? Könnte dieser Auftrag mich über das Budget bringen?

Dann fragt er den Arbeiter und prüft das Ergebnis. Jede Antwort kostet, also zählt Ausgegeben die guten wie die schlechten.

Ausgearbeitetes Beispiel: ein Durchlauf der Schleife

SchrittFrageWenn ja
1Sind genug Ergebnisse angenommen?Stopp, Grund genug
2Ausgegeben plus Limit dieses Auftrags über dem Budget?Stopp, Grund Budget
3Den Arbeiter fragen, seine Token zu Ausgegeben addierenImmer, gut oder schlecht
4Besteht das Ergebnis die Prüfung?Annehmen, sonst mit Gründen ablehnen

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

Warum die Grenze vor dem Aufruf steht

Das Budget nach einem Aufruf zu prüfen, ist zu spät: Die Token sind weg. Die Schleife reserviert also den schlimmsten Fall. Sie nimmt das Limit des Auftrags selbst und stoppt, wenn es nicht passen würde.

Dieselbe Idee schützt Zeit und Rundenzahl. Ein Team hat immer eine Regel, die es beendet.

Ein häufiger Fehler

Warnung

Viele zählen nur die guten Ergebnisse gegen das Budget. Ein Arbeiter, der scheitert, liest und schreibt trotzdem Token. Zählen Sie alles, was der Lauf angefordert hat, sonst passt die Rechnung nicht zum Budget.

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.

Das Forschungsteam schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const AUFTRAEGE = [' '  { id: \"b1\", frage: \"Wie viele Besucher wünschen sich Sonntagsöffnung?\", quellen: [\"s1\"], max: 900 },' '  { id: \"b2\", frage: \"Was würde ein Sonntag an Personalzeit kosten?\", quellen: [\"s2\"], max: 900 },' '  { id: \"b3\", frage: \"Wie voll ist es an einem Wochenendtag?\", quellen: [\"s3\"], max: 900 },' '];' '// Die Antworten dreier geskripteter Arbeiter, aufgezeichnet.' 'const AUFGEZEICHNET = {' '  b1: { antwort: \"212 von 400 Besuchern wollen es\", quellen: [\"s1\"], token: 700 },' '  b2: { antwort: \"108 Euro an jedem Sonntag\", quellen: [\"s2\"], token: 850 },' '  b3: { antwort: \"310 Besuche an einem Samstag\", quellen: [\"s3\"], token: 1200 },' '};' > team.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 Forschungsteam schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function probleme(a, e) {' '  const aus = [];' '  if (e.antwort.trim().length === 0) aus.push(\"Antwort fehlt\");' '  e.quellen.forEach(function (q) { if (a.quellen.includes(q) === false) aus.push(\"unbekannte Quelle \" + q); });' '  if (e.token > a.max) aus.push(\"über seinem Limit\");' '  return aus;' '}' >> team.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 Forschungsteam schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function team(budget, genug) {' '  const bilanz = { angenommen: [], abgelehnt: [], ausgegeben: 0, stopp: \"fertig\" };' '  for (const a of AUFTRAEGE) {' '    if (bilanz.angenommen.length >= genug) { bilanz.stopp = \"genug\"; break; }' '    if (bilanz.ausgegeben + a.max > budget) { bilanz.stopp = \"Budget\"; break; }' '    const e = AUFGEZEICHNET[a.id];' '    bilanz.ausgegeben += e.token;' '    const p = probleme(a, e);' '    if (p.length > 0) bilanz.abgelehnt.push(a.id + \" (\" + p.join(\", \") + \")\");' '    else bilanz.angenommen.push(e.antwort);' '  }' '  return bilanz;' '}' >> team.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 Forschungsteam schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  let erste = null;' '  for (const lauf of [[2500, 3], [1500, 3], [4000, 2]]) {' '    const b = team(lauf[0], lauf[1]);' '    erste = erste || b;' '    console.log(\"Budget \" + lauf[0] + \", genug \" + lauf[1] + \": angenommen \" + b.angenommen.length + \", abgelehnt \" + b.abgelehnt.length + \", ausgegeben \" + b.ausgegeben + \", Stopp \" + b.stopp);' '    if (b.abgelehnt.length > 0) console.log(\"   abgelehnt: \" + b.abgelehnt.join(\"; \"));' '  }' '  const q = [{ role: \"user\", content: \"Schreiben Sie einen Satz aus diesen Befunden: \" + erste.angenommen.join(\"; \") }];' '  const r = await fragen(q, \"Besucher wünschen sich Sonntagsöffnung, und sie kostet 108 Euro pro Sonntag.\", 40);' '  console.log(\"Zusammenfassung: \" + r.text.trim());' '}' 'main();' >> team.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 Forschungsteam starten

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

Die drei Arbeiter sind aufgezeichnete Antworten mit ihren Token-Zahlen, damit jede Studierende dieselben Summen sieht. Der eine Live-Aufruf formuliert eine Zusammenfassung des Angenommenen.

Im ersten Lauf liegt ausgegeben mit 2750 über dem Budget von 2500: Der dritte Arbeiter brach sein eigenes Limit. Das Budget wird nur vor einem Auftrag geprüft, nicht darauf, was ein Arbeiter dann wirklich verbraucht.

Ein echtes Team schickt jeden Auftrag an ein Modell, und die Schleife drumherum bleibt dieselbe.

Eine mögliche Ausgabe

ZeileWas sie zeigt
Budget 2500, genug 3: angenommen 2, abgelehnt 1, ausgegeben 2750, Stopp fertigDie dritte Antwort brach ihr Limit von 900 Token (sie brauchte 1200), darum liegt ausgegeben über dem Budget
abgelehnt: b3 (über seinem Limit)Der Grund bleibt erhalten
Budget 1500, genug 3: angenommen 1, abgelehnt 0, ausgegeben 700, Stopp BudgetSchon 700 ausgegeben, und der nächste Auftrag darf bis zu 900 brauchen: Das wäre über 1500
Budget 4000, genug 2: angenommen 2, abgelehnt 0, ausgegeben 1550, Stopp genugZwei gute Ergebnisse genügten
Zusammenfassung: …Ein Satz, der bei jedem Lauf anders ist

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.