Grenzen und Kosten von Coding-Agenten
Ein Coding-Agent arbeitet in Schritten, und jeder Schritt kostet Zeit und Geld. Ohne Budget und Abbruchregel kann ein Agent eine Stunde an einer Aufgabe kreisen, die Sie in zehn Minuten erledigen.
Jede seiner Änderungen braucht trotzdem Ihre Prüfung. Man kann nach Gefühl entscheiden, was man delegiert; diese Lektion fügt die Zahlen hinzu.
Am Ende dieser Lektion
Notiz
Ich kann einem Coding-Agenten ein Budget und eine Abbruchregel geben und entscheiden, ob sich eine Aufgabe für ihn lohnt.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Schritt | eine Handlung eines Agenten: lesen, bearbeiten oder ausführen | |
| Budget | die meisten Schritte oder das meiste Geld, das ein Lauf nutzen darf | |
| Abbruchregel | eine Prüfung, die einen Lauf früh beendet | |
| Geduld | erlaubte Schritte ohne Fortschritt | 3 |
| Netto-Minuten | gesparte Minuten nach Auftrag und Prüfung |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Budget und eine Abbruchregel
Geben Sie jedem Lauf ein Budget: höchstens 10 Schritte und höchstens 40 Cent. Geben Sie ihm auch Geduld: Ist die Zahl der bestandenen Tests 3 Schritte lang nicht gestiegen, hört er auf.
Prüfen Sie nach jedem Schritt in fester Reihenfolge: fertig, über Budget, kein Fortschritt, keine Schritte mehr. Die erste Prüfung, die zutrifft, beendet den Lauf.
Durchgerechnetes Beispiel: der festgefahrene Lauf
| Schritt | Kosten | Ausgegeben | Bestanden von 6 | Schritte seit dem letzten Anstieg |
|---|---|---|---|---|
| 1 | 4 | 4 | 2 | 0 |
| 2 | 5 | 9 | 3 | 0 |
| 3 | 6 | 15 | 3 | 1 |
| 4 | 5 | 20 | 3 | 2 |
| 5 | 6 | 26 | 3 | 3, also Stopp: kein Fortschritt |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Gesparte Zeit gegen verbrauchte Zeit
Ein Agent spart nicht die ganzen Minuten, die eine Aufgabe von Hand dauert. Sie brauchen weiter Minuten, um den Auftrag zu schreiben und die Änderung zu prüfen. Netto-Minuten sind die Minuten von Hand minus beides.
Behalten Sie eine Aufgabe, wenn das Netto 0 oder weniger ist. Behalten Sie sie auch bei hohem Risiko, etwa eine Zahlungsprüfung oder das Löschen von Daten, egal was die Minuten sagen.
Durchgerechnetes Beispiel: vier Aufgaben
| Aufgabe | Von Hand | Auftrag plus Prüfung | Netto | Entscheidung |
|---|---|---|---|---|
| Eine Funktion in 12 Dateien umbenennen | 40 | 15 | 25 | Delegieren |
| Eine Doku-Seite ergänzen | 30 | 15 | 15 | Delegieren |
| Einen Tippfehler in einer Zeile beheben | 2 | 5 | -3 | Behalten |
| Die Zahlungsprüfung ändern | 60 | 40 | 20 | Behalten: hohes Risiko |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein häufiger Fehler
Warnung
Viele denken, die Zeit eines Agenten sei kostenlos, weil er arbeitet, während sie etwas anderes tun. Ihre eigene Zeit geht in Auftrag, Prüfung und Korrekturen. Zählen Sie diese Minuten, bevor Sie delegieren, und behalten Sie riskante Arbeit, egal was die Zählung sagt.
Die Modellhilfe schreiben, Teil 1
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
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 Budgetskript schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const GRENZE = { schritte: 10, cent: 40, geduld: 3 };' 'const laeufe = {' ' \"stetig\": { gesamt: 6, kosten: [3, 4, 3, 5, 4, 3], bestanden: [1, 2, 3, 4, 5, 6] },' ' \"festgefahren\": { gesamt: 6, kosten: [4, 5, 6, 5, 6, 7, 6, 5], bestanden: [2, 3, 3, 3, 3, 3, 3, 3] },' ' \"teuer\": { gesamt: 8, kosten: [9, 12, 10, 11, 9], bestanden: [1, 2, 3, 4, 5] },' '};' > budget.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 Budgetskript schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function stopp(l) {' ' let ausgegeben = 0;' ' let beste = 0;' ' let gestiegen = 0;' ' for (let i = 0; i < l.kosten.length; i += 1) {' ' const schritt = i + 1;' ' ausgegeben += l.kosten[i];' ' if (l.bestanden[i] > beste) { beste = l.bestanden[i]; gestiegen = schritt; }' ' if (beste === l.gesamt) return \"fertig bei Schritt \" + schritt + \", \" + ausgegeben + \" Cent\";' ' if (ausgegeben > GRENZE.cent) return \"über Budget bei Schritt \" + schritt + \", \" + ausgegeben + \" Cent\";' ' if (schritt - gestiegen >= GRENZE.geduld) return \"kein Fortschritt bei Schritt \" + schritt + \", \" + ausgegeben + \" Cent\";' ' if (schritt >= GRENZE.schritte) return \"keine Schritte mehr bei Schritt \" + schritt + \", \" + ausgegeben + \" Cent\";' ' }' ' return \"Aufzeichnung endet, \" + ausgegeben + \" Cent\";' '}' >> budget.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 Budgetskript schreiben, Teil 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const aufgaben = [' ' { name: \"eine Funktion in 12 Dateien umbenennen\", vonHand: 40, auftrag: 5, pruefung: 10, risiko: \"niedrig\" },' ' { name: \"eine Doku-Seite ergänzen\", vonHand: 30, auftrag: 5, pruefung: 10, risiko: \"niedrig\" },' ' { name: \"einen Tippfehler in einer Zeile beheben\", vonHand: 2, auftrag: 3, pruefung: 2, risiko: \"niedrig\" },' ' { name: \"die Zahlungsprüfung ändern\", vonHand: 60, auftrag: 10, pruefung: 30, risiko: \"hoch\" },' '];' 'function entscheiden(a) {' ' if (a.risiko === \"hoch\") return \"behalten: hohes Risiko\";' ' const netto = a.vonHand - a.auftrag - a.pruefung;' ' return netto > 0 ? \"delegieren, spart \" + netto + \" Minuten\" : \"behalten: spart nichts\";' '}' >> budget.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 Budgetskript schreiben, Teil 4
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' ' Object.keys(laeufe).forEach(function (name) { console.log(name + \": \" + stopp(laeufe[name])); });' ' aufgaben.forEach(function (a) { console.log(a.name + \": \" + entscheiden(a)); });' ' const f = \"Schreiben Sie in einem kurzen Satz, warum ein Coding-Agent ohne Fortschritt aufhören soll.\";' ' const probe = \"Ein Lauf, der nicht näher kommt, kostet nur mehr Geld und gibt Ihnen mehr zu prüfen.\";' ' const antwort = await fragen([{ role: \"user\", content: f }], probe, 60);' ' console.log(\"Das Modell sagte: \" + antwort.text);' '}' 'main();' >> budget.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 Budgetskript ausführen
docker exec -w /home/node/project agent node budget.jsHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Was der Run ausgibt
| Zeile | Was sie zeigt |
|---|---|
| stetig: fertig bei Schritt 6, 22 Cent | Alle Tests bestehen innerhalb des Budgets |
| festgefahren: kein Fortschritt bei Schritt 5, 26 Cent | Drei Schritte ohne Anstieg |
| teuer: über Budget bei Schritt 4, 42 Cent | Er hat 40 Cent überschritten |
| eine Funktion in 12 Dateien umbenennen: delegieren, spart 25 Minuten | Lohnt sich für einen Agenten |
| einen Tippfehler in einer Zeile beheben: behalten: spart nichts | Von Hand schneller |
| die Zahlungsprüfung ändern: behalten: hohes Risiko | Behalten, egal was die Minuten sagen |
| Das Modell sagte: ... | Ein Satz aus dem Labor. Eine Aufgezeichnete Probe, wenn kein Modell antwortet |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.