Der Agent, der das Budget vergaß
Das Gedächtnis eines Agenten ist alles, was er von einem Schritt oder Lauf zum nächsten mitnimmt. Ein Modell behält von allein nichts: Gedächtnis ist Text, den Ihr Programm wieder in die Aufforderung legt.
Ein Einkaufsagent schlägt einer Kundin einen Mantel für 60 Euro vor, die 30 genannt hatte. Das Budget fiel in Schritt eins und war in Schritt neun verschwunden.
Am Ende dieser Lektion
Notiz
Ich kann entscheiden, was ein Agent zwischen Schritten und zwischen Läufen behält.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Notizblock | die Notizen, die ein Agent während eines Laufs führt | |
| Zusammenfassung | ein kürzerer Text, der für einen längeren steht | |
| Speicher | Gedächtnis, das zwischen Läufen bleibt | |
| Gedächtnisbudget | die größte Textmenge im Gedächtnis | 120 Zeichen |
| Kontextfenster | die Textmenge, die ein Modell auf einmal liest |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Drei Arten von Gedächtnis
Der Notizblock ist die Liste der Nachrichten und Notizen eines einzigen Laufs. Eine Zusammenfassung ersetzt einen langen Verlauf durch einen kurzen Text. Ein Speicher lebt zwischen Läufen, in einer Datei oder einer Datenbank.
Alle drei landen in der Aufforderung. Jede gemerkte Zeile wird also in jedem Schritt erneut gesendet, und Sie bezahlen sie jedes Mal.
Ausgearbeitetes Beispiel: die drei Arten im Vergleich
| Art | Lebensdauer | Wächst durch | Hauptrisiko |
|---|---|---|---|
| Notizblock | Ein Lauf | Jeden Schritt | Füllt das Kontextfenster |
| Zusammenfassung | Ein Lauf oder mehr | Wird jedes Mal ersetzt | Verliert ein wichtiges Detail |
| Speicher | Zwischen Läufen | Jeden Lauf | Alte Fakten, die nicht mehr stimmen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die Modell-Hilfe schreiben, Teil 1
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
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.
Die Gedächtnis-Demo schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const notizen = [' ' { text: \"Die Kundin ist Lena, ein Geschenk für ihren Bruder\", wichtig: true },' ' { text: \"Heute regnet es\", wichtig: false },' ' { text: \"Das Budget beträgt 30 Euro\", wichtig: true },' ' { text: \"Handschuhe kosten 4 Euro\", wichtig: false },' ' { text: \"Ein Schal kostet 18 Euro\", wichtig: false },' ' { text: \"Lena mag kein Rot\", wichtig: true },' '];' 'const BUDGET = 120;' 'const speicher = [];' 'function groesse() { return speicher.reduce(function (n, m) { return n + m.text.length; }, 0); }' > gedaechtnis1.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 Gedächtnis-Demo schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function merken(notiz) {' ' speicher.push(notiz);' ' while (groesse() > BUDGET) {' ' const stelle = speicher.findIndex(function (m) { return m.wichtig === false; });' ' if (stelle === -1) break;' ' console.log(\" vergessen: \" + speicher[stelle].text);' ' speicher.splice(stelle, 1);' ' }' ' console.log(\"Hinzugefügt, Notizen: \" + speicher.length + \", Zeichen: \" + groesse());' '}' >> gedaechtnis1.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 Gedächtnis-Demo schreiben, Teil 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' ' notizen.forEach(merken);' ' const alle = notizen.map(function (n) { return n.text; }).join(\". \");' ' const bitte = [{ role: \"user\", content: \"Fassen Sie diese Notizen in einem Satz für einen Agenten zusammen, der die Arbeit fortsetzt: \" + alle }];' ' const probe = \"Lena sucht ein Geschenk für ihren Bruder, höchstens 30 Euro und nichts in Rot.\";' ' console.log(\"Zusammenfassung: \" + await fragen(bitte, probe, 80));' '}' 'main();' >> gedaechtnis1.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.
Starten und sehen, was vergessen wird
docker exec -w /home/node/project agent node gedaechtnis1.jsHier 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
| Zeile | Was sie zeigen kann |
|---|---|
| Hinzugefügt, Notizen: 4, Zeichen: 115 | Die Zahl der Notizen und Zeichen nach jeder Notiz |
| vergessen: Heute regnet es | Erscheint, wenn das Gedächtnis sein Budget von 120 Zeichen übersteigt |
| vergessen: Handschuhe kosten 4 Euro | Die nächste unwichtige Notiz geht, bis es wieder passt |
| Hinzugefügt, Notizen: 4, Zeichen: 117 | Die letzte Zeile: Die drei wichtigen Notizen sind noch da |
| Zusammenfassung: ... | Ein Satz, der das Budget und die zu meidende Farbe nennt |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Entscheiden, was merkenswert ist
Behalten Sie, was der nächste Schritt braucht. Dazu gehören der Wunsch der Nutzer, ihre Grenzen, getroffene Entscheidungen und Fakten, die ein Werkzeug lieferte. Lassen Sie Smalltalk und rohe Werkzeugausgaben weg.
Behalten Sie wichtige Notizen wörtlich. Eine Zusammenfassung schreibt ein Modell, und es kann eine Zahl ändern. Fassen Sie das Geplauder zusammen und heften Sie die Fakten an.
Ein häufiger Fehler
Warnung
Viele glauben, mehr Gedächtnis mache einen besseren Agenten. Gedächtnis wird in jedem Schritt bezahlt, und alte Notizen können in die Irre führen. Behalten Sie, was der nächste Schritt braucht, mit einer Größengrenze und einer Möglichkeit zu vergessen.