Wie ein KI-Agent funktioniert: ein Sprachmodell in einer Schleife mit Werkzeugen
Die Schleife Überlegung – Werkzeugaufruf – Ergebnis an einer echten Aufgabe über den Artikeln dieser Website, drei Vorgehensweisen und ihre Kosten in Tokens, warum der Kontext wächst, Plan und Gedächtnis, die Zuverlässigkeit langer Aufgaben mit und ohne Kontrolle und warum ein Agent Freigaben braucht.
Serie KI-Grundlagen Teil 50 von 52
- Landkarte der künstlichen Intelligenz: was was ist und wie alles zusammenpasst
- Eine kurze Geschichte der künstlichen Intelligenz: von Turing bis zu Sprachmodellen
- Daten, Modell, Training, Inferenz: die Grundbegriffe an einem einzigen Beispiel
- Mathematische Notation lesen: Symbole, Indizes, Summen und Quantoren
- Mengen und Relationen: der Baukasten, aus dem Definitionen in der KI bestehen
- Funktionen und Abbildungen: warum jedes KI-Modell eine Funktion ist
- Logik und Beweise: die Regeln, nach denen KI schließt
- Graphen und Bäume: die Struktur, auf der Suche und neuronale Netze stehen
- Lineare Algebra für maschinelles Lernen: Vektoren, Matrizen und warum KI vor allem multipliziert
- Ableitungen, Gradient und Kettenregel: wie ein Modell herausfindet, in welche Richtung es lernen soll
- Gradientenabstieg: wie ein Modell lernt
- Was ist Wahrscheinlichkeit: vom Würfelwurf zu den Kolmogorow-Axiomen
- Bedingte Wahrscheinlichkeit und der Satz von Bayes: wie du deine Einschätzung änderst, wenn du etwas Neues erfährst
- Zufallsvariable und Verteilungsfunktion: eine Funktion, die alles über eine Verteilung verrät
- Dichtefunktion und Wahrscheinlichkeitsfunktion: warum eine stetige Zufallsvariable in einem Punkt die Wahrscheinlichkeit null hat
- Erwartungswert, Varianz und Kovarianz: wo eine Verteilung liegt, wie breit sie ist und was womit zusammenhängt
- Überblick über Wahrscheinlichkeitsverteilungen: Bernoulli-, Binomial-, Poisson-, Gleich-, Normal- und Exponentialverteilung
- Gesetz der großen Zahlen und zentraler Grenzwertsatz: Warum sich Durchschnitte so vorhersagbar verhalten
- Statistik und Parameterschätzung: Maximum Likelihood, MAP und Konfidenzintervalle
- Informationstheorie: Entropie, Kreuzentropie und KL-Divergenz — woher Verlustfunktionen kommen
- Zustandsraumsuche: BFS, DFS, UCS und A* mit Animationen
- Spiele und Gegner: Minimax, Alpha-Beta-Suche und Monte Carlo Tree Search
- Constraint Satisfaction: Backtracking, Constraint-Propagierung und AC-3 an Sudoku und einer Karte tschechischer Regionen
- Logik und wissensbasierte Systeme: Vorwärts- und Rückwärtsverkettung, Resolution und Expertensysteme
- Planung: STRIPS, die Blockwelt, Heuristiken aus Relaxierung und Planung in KI-Agenten
- Lokale Suche und simulierte Abkühlung: ein Handlungsreisender durch die tschechischen Regionalhauptstädte
- Genetische Algorithmen: Population, Kreuzung, Mutation und Selektion am Rucksack für die Wanderung
- Evolutionsstrategien und genetische Programmierung: von der 1/5-Erfolgsregel zum Keplerschen Gesetz
- Ameisenkolonieoptimierung: wie eine Pheromonspur einen kurzen Weg findet
- Partikelschwarmoptimierung: Trägheit, eigene Erfahrung und die Erfahrung des Schwarms
- Neuroevolution: Evolution der Gewichte und der Gestalt neuronaler Netze und der Algorithmus NEAT
- Fuzzy-Mengen und Zugehörigkeitsfunktionen: wie man „etwas warm“ aufschreibt
- Fuzzy-Logik und Wahrscheinlichkeit: warum „etwas warm“ nicht „wahrscheinlich warm“ bedeutet
- Fuzzy-Logik: t-Normen, Implikationen und WENN–DANN-Regeln
- Fuzzy-Regelung: Mamdani und Sugeno vom Ventilator bis zum Pendel auf dem Wagen
- Fuzzy-Clustering: der Algorithmus fuzzy c-means und Punkte zwischen den Clustern
- Neuro-Fuzzy-Systeme (ANFIS): Fuzzy-Regeln, die aus Daten lernen
- Markow-Ketten: Übergangsmatrix, stationäre Verteilung und PageRank
- Hidden-Markov-Modelle: der Viterbi-Algorithmus und das unehrliche Kasino
- Bayessche Netze: warum das Gras nass ist und was das für den Rasensprenger bedeutet
- Der Kalman-Filter: wie man aus ungenauen Messungen schätzt, wo ein Auto ist und wie schnell es fährt
- Arten des maschinellen Lernens: überwacht, unüberwacht, halbüberwacht und mehr
- Prompts, Kontext und RAG: wie man einem Modell die richtigen Informationen gibt
- Variational Autoencoder (VAE): neue Bilder aus einem stetigen latenten Raum
- Generative Adversarial Networks (GAN): der Fälscher gegen den Detektiv
- Diffusionsmodelle: wie aus reinem Rauschen ein Bild wird
- Markow-Entscheidungsprozesse: Zustände, Aktionen, Belohnungen und Bellman-Gleichungen
- Q-Learning und DQN: den Wert von Aktionen lernen, von der Tabelle bis zum neuronalen Netz
- Policy Gradient und PPO: die Strategie direkt lernen
- Wie ein KI-Agent funktioniert: ein Sprachmodell in einer Schleife mit Werkzeugen
- Programmieren mit KI-Agenten: Auftrag, Tests und Kontrolle
- Bewertung und Sicherheit von KI-Systemen: wie man misst und wie man überwacht
Der ganze Lehrplan der Serie 52 von 83 Themen fertig
- Was in einem Agenten Schritt für Schritt passiert und was das Modell und was das Rahmenprogramm macht.
- Warum Kontext teuer ist und wie gute Agenten ihn sparen.
- Warum lange Aufgaben ohne Kontrolle scheitern und wie Tests und Freigaben helfen.
Vorher gut zu wissen: Prompts, Kontext und RAG: wie man einem Modell die richtigen Informationen gibt, Markow-Entscheidungsprozesse: Zustände, Aktionen, Belohnungen und Bellman-Gleichungen
Ein Sprachmodell antwortet von sich aus nur: Es bekommt Text und gibt Text zurück. Ein Agent ist ein Modell, dem wir Hände geben — Werkzeuge, mit denen es etwas herausfinden oder tun kann — und das wir in einer Schleife arbeiten lassen, bis es die Aufgabe erledigt hat. So funktionieren Programmieragenten, die selbst Code lesen, Tests ausführen und Fehler beheben, und Assistenten, die im Web suchen. Und so funktioniert auch der Agent, den du mit coden vom Handy aus steuerst. In diesem Teil nehmen wir die Schleife an einer echten Aufgabe auseinander und rechnen aus, was sie kostet und wo sie bricht.
Er baut auf den Teilen Prompts, Kontext und RAG, Tokenisierung und Markow-Entscheidungsprozesse auf.
1. Ein Modell in der Schleife
Definition — KI-Agent
Allgemein ist ein Agent eine Funktion, die jeder bisherigen Wahrnehmungsgeschichte eine Aktion zuordnet (Agentenfunktion aus der KI-Landkarte). Ein KI-Agent im engeren Sinn dieses Teils ist die folgende konkrete Konstruktion. Sei
- T die Menge aller Texte (endlicher Folgen von Tokens) und ⊕ : T × T → T das Anhängen von Text ans Ende;
- M : T → T ein Sprachmodell, das aus dem Kontext den nächsten Schritt schreibt (ein Modell mit Sampling ist in Wirklichkeit zufällig; hier nehmen wir einen festen Verlauf);
- F ⊆ T die Menge der Schritte, die eine endgültige Antwort sind; die übrigen Schritte v ∈ T ∖ F sind Werkzeugaufrufe;
- N : T ∖ F → T das Rahmenprogramm: Es führt einen Werkzeugaufruf tatsächlich aus und gibt sein Ergebnis als Text zurück;
- c1 ∈ T der Anfangskontext (Systemprompt, Werkzeugbeschreibungen und Aufgabe) und Kmax ∈ ℕ, Kmax ≥ 1, das Schrittbudget.
Ein Lauf des Agenten ist die Folge von Kontexten c1, c2, … und Schritten v1, v2, …, gegeben für k = 1, 2, …, Kmax durch die Vorschrift
vk = M(ck), ck+1 = ck ⊕ vk ⊕ N(vk) (falls vk ∉ F).
Der Lauf hält an im ersten Schritt k, für den vk ∈ F — die Ausgabe ist die Antwort vk —, oder nach Schritt Kmax, falls kein Schritt eine endgültige Antwort war — die Ausgabe ist „Schrittbudget aufgebraucht“.
Der Agent wechselt also zwischen einem Modellschritt und der Ausführung eines Werkzeugs ab, bis das Modell antwortet oder das Budget aufgebraucht ist. Das Abwechseln von Überlegung und Aktion haben Shunyu Yao u. a. (2022) unter dem Namen ReAct (reason + act) beschrieben; die Notation oben ist eine vereinfachte Formalisierung für diesen Teil.
Ein kluger Kollege am Telefon, der deinen Computer nicht sieht. Er sagt „öffne den Ordner src“, du liest ihm vor, was darin ist, er sagt „jetzt die Datei server.js, Zeilen 100 bis 150“ — und so weiter, bis er die Antwort hat. Das Modell ist dieser Kollege, das Rahmenprogramm sind deine Hände und Augen. In der Sprache des bestärkenden Lernens: Der Zustand ist das bisherige Gespräch, die Aktion ein Werkzeugaufruf.
vk = M(ck), ck+1 = ck ⊕ vk ⊕ N(vk)
- ck
- der Kontext vor dem k-ten Modellaufruf: Systemprompt, Aufgabe und alles, was bisher passiert ist. Er ist der ganze „Zustand“ des Agenten — sonst merkt sich das Modell nichts
- M
- das Sprachmodell; aus dem Kontext schreibt es den nächsten Schritt. Der einzige Teil, der „nachdenkt“, und der einzige, dem man nicht ganz trauen kann
- vk
- der Schritt des Modells: Überlegung und Werkzeugaufruf oder die endgültige Antwort (dann endet die Schleife)
- N(vk)
- das Ergebnis des Werkzeugs, berechnet vom Rahmenprogramm; es fügt dem Kontext hinzu, was das Modell selbst nicht wissen kann (Inhalt einer Datei, Ausgabe der Tests)
kontext = [Systemprompt, Werkzeugbeschreibungen, Aufgabe]
for k = 1 … K_max: # Schrittbudget
krok = model(kontext) # liest den GANZEN Kontext
kontext += krok
if krok ist die endgültige Antwort: return sie
if das Werkzeug braucht Zustimmung und der Mensch gab sie nicht:
kontext += "abgelehnt"; continue
výsledek = proveď(krok.nástroj, krok.parametry) # Rahmenprogramm
kontext += výsledek
return "Schrittbudget aufgebraucht"
2. Werkzeuge
Definition — Werkzeugaufrufe (tool use, function calling)
Der Agent habe m ≥ 1 Werkzeuge. Ein Werkzeug i ∈ {1, …, m} ist gegeben durch
- einen Namen ji (die Namen verschiedener Werkzeuge sind verschieden),
- eine Beschreibung in Worten, wozu es dient,
- ein Parameterschema Si — eine Beschreibung, welche Parameter welcher Typen das Werkzeug annimmt (typischerweise als JSON-Schema),
- eine Prozedur, die das Rahmenprogramm für gültige Parameter startet und die das Ergebnis als Text zurückgibt.
Name, Beschreibung und Schema aller Werkzeuge werden in den Prompt eingefügt. Ein Werkzeugaufruf ist eine strukturierte Ausgabe des Modells der Form (j, x) — Name und Parameter, etwa {"nastroj": "hledej", "text": "KL divergence"}. Das Modell ist so feinabgestimmt, dass es statt gewöhnlichen Texts eine solche Ausgabe schreiben kann. Das Rahmenprogramm verarbeitet den Aufruf (j, x) so:
- gibt es ein i mit j = ji und entsprechen die Parameter x dem Schema Si, startet es die Prozedur des Werkzeugs i mit den Parametern x und hängt ihr Ergebnis als weitere Nachricht an den Kontext an;
- andernfalls hängt es eine Fehlermeldung an den Kontext an und startet das Werkzeug nicht.
Das Modell selbst startet also nichts — es schreibt nur, was gestartet werden soll; starten (oder den Start verweigern) tut das Rahmenprogramm.
Speisekarte und Bestellung. Das Modell bekommt die Karte („diese Werkzeuge hast du, und so bestellt man sie“) und schreibt die Bestellung genau in der Form, die die Küche versteht. Es kocht die Küche, nicht der Gast. Deshalb kann man der Küche vorschreiben, manche Gerichte nicht ohne Zustimmung herauszugeben.
Unser Agent arbeitet über den Texten von 21 älteren Artikeln dieser Website (denselben wie in den Teilen über Tokenisierung und RAG; sie sind tschechisch, deshalb arbeitet auch der Agent auf Tschechisch) und hat drei Werkzeuge. Sein ganzer Systemprompt hat 157 Tokens:
Jsi agent, který odpovídá na otázky podle článků webu. Máš nástroje:
- seznam(): Vypíše články a jejich délku ve znacích.
- hledej(text, max): Najde výskyty textu ve všech článcích; vrátí článek, pozici a okolí.
- cti(clanek, od, do): Vrátí úsek článku od pozice do pozice (znaky).
V každém kroku napiš krátkou úvahu a zavolej jeden nástroj, nebo napiš konečnou odpověď s odkazem na článek. Když něco nenajdeš, zkus jiný dotaz.
Die echten Werkzeuge von Programmieragenten sind ähnlich: in Dateien suchen, einen Abschnitt einer Datei lesen, ihn bearbeiten, einen Befehl im Terminal ausführen. Seit 2024 lassen sich Werkzeuge auch über das gemeinsame Protokoll MCP (Model Context Protocol) anbinden, sodass dasselbe Werkzeug — eine Datenbank, ein Kalender, ein Browser — von jedem Agenten benutzt werden kann.
3. Eine Frage, drei Vorgehensweisen
Die Frage: „Warum ist die KL-Divergenz kein Abstand? Nenne ein Beispiel aus den Artikeln.“ (im Original: „Proč KL divergence není vzdálenost? Uveď příklad z článků.“). Die Antwort steht im Artikel über Informationstheorie: Die KL-Divergenz ist nicht symmetrisch, DKL(0,7 ‖ 0,5) = 0,119, aber DKL(0,5 ‖ 0,7) = 0,126. Die Schritte des Agenten haben wir von Hand aufgeschrieben — anstelle des Modells haben wir die Überlegungen und Aufrufe geschrieben. Die Werkzeuge, ihre Ergebnisse und die Tokens sind aber echt.
Beispiel — warum DKL(0,7 ‖ 0,5) ≠ DKL(0,5 ‖ 0,7)
Für zwei Ja/Nein-Verteilungen (Regen mit Wahrscheinlichkeit p, das Modell sagt q; p, q ∈ (0, 1)) ist DKL(p ‖ q) = p log2 p/q + (1 − p) log2 1 − p/1 − q Bit (Informationstheorie).
DKL(0,7 ‖ 0,5) = 0,7 · log2 0,7/0,5 + 0,3 · log2 0,3/0,5 = 0,7 · log2 1,4 + 0,3 · log2 0,6 = 0,340 − 0,221 = 0,119.
DKL(0,5 ‖ 0,7) = 0,5 · log2 5/7 + 0,5 · log2 5/3 = −0,243 + 0,368 = 0,126.
Gemittelt wird jedes Mal über eine andere Verteilung (je nachdem, was die Wirklichkeit ist), deshalb ergibt das Vertauschen der Argumente eine andere Zahl — und ein Abstand (eine Metrik) muss symmetrisch sein. Das ist die Antwort, die der Agent sucht.
-
Ich suche genau die Wörter aus der Frage.
hledej(text: "KL divergence není metrika")nic nenalezeno
+34 Tokens, Kontext 209 -
Nichts. Ich versuche nur den Namen des Begriffs.
hledej(text: "KL divergence")5 výskytů: informace:3258: … minimum je tam, kde model říká pravdu. KL divergence Definice — Kullbackova–Leiblerova diver… informace:3656: …,222 bitu. Podle Gibbsovy nerovnosti je KL divergence vždy nezáporná a nulová jen pro q = p .… informace:3717: …záporná … (weitere 310 Zeichen)
+205 Tokens, Kontext 414 -
Es steht im Artikel informace. Ich lese die Umgebung.
cti(clanek: "informace", od: 3660, do: 3960)ivergence vždy nezáporná a nulová jen pro q = p . Pozor, KL divergence není vzdálenost: není symetrická. D KL (0,7 ‖ 0,5) = 0,119, ale D KL (0,5 ‖ 0,7) = 0,126. Záleží na tom, co je skutečnost a co model. Informační zisk Definice — podmíněná entropie H ( Y | X … (weitere 40 Zeichen)
+146 Tokens, Kontext 560
Drei Werkzeugaufrufe, und der vierte Modellaufruf schreibt die Antwort. Die erste Suche findet nichts — die Wörter der Frage stehen nicht im Text. Der Agent sieht das und versucht eine allgemeinere Anfrage; das ist der Vorteil der Schleife gegenüber einer einmaligen Suche. Am Ende hat der Kontext 560 Tokens.
-
Ich weiß nicht, wo es steht. Ich gehe die Artikel einen nach dem anderen durch.
cti(clanek: "co-je-pravdepodobnost")Jazykový model nevybírá další slovo, ale pravděpodobnosti všech slov. Klasifikátor neříká „je to kočka“, ale „s pravděpodobností 0,93 je to kočka“. Celé strojov … (weitere 7 175 Zeichen)
+1 933 Tokens, Kontext 2 108 -
Hier nicht, nächster Artikel.
cti(clanek: "csp")Rozvrh hodin, ve kterém žádný učitel neučí dvě třídy naráz. Sudoku. Rozmístění součástek na desce, směny v nemocnici, přidělení letadel k branám. Všechny tyhle … (weitere 11 914 Zeichen)
+3 148 Tokens, Kontext 5 256 - … weitere 8 Schritte dieser Art (Kontext am Ende 24 927 Tokens)
Ohne Suche geht der Agent die Artikel in alphabetischer Reihenfolge durch. Auf die Antwort stößt er erst im 10. Artikel, und der Kontext wächst inzwischen auf 24 927 Tokens.
Und das dritte Vorgehen, einmaliges RAG aus dem vorigen Teil: die drei ähnlichsten Abschnitte suchen und in den Prompt einfügen. Alle drei Abschnitte stammen aus dem richtigen Artikel (informace, informace, informace), aber keiner enthält das Beispiel mit den Zahlen 0,119 und 0,126 — die Antwort käme ohne Beispiel aus. Ein Agent in der Schleife kann sich sagen „das reicht nicht, ich lese weiter“. Eine einmalige Suche nicht.
4. Kontext ist teuer
Definition — die Kosten der Schleife
Das Modell hat zwischen den Aufrufen kein Gedächtnis; bei jedem Aufruf liest es den ganzen Kontext erneut — Systemprompt, Aufgabe und alle bisherigen Schritte und Werkzeugergebnisse. Der Lauf des Agenten (Definition oben) habe nach K ≥ 1 Modellaufrufen geendet, und für k = 1, …, K sei ck ∈ ℕ die Länge des Kontexts (Anzahl der Tokens) vor dem k-ten Aufruf. Die Kosten der Schleife sind die Anzahl der Tokens, die das Modell während des Laufs als Eingabe verarbeitet:
Z = ∑k=1K ck.
Weil der Kontext mit jedem Schritt wächst, wächst Z ungefähr mit dem Quadrat der Schrittzahl (Satz unten).
Als müsstest du vor jedem Satz eines Briefes den ganzen Brief noch einmal von vorn lesen. Ein kurzer Brief macht nichts. Ein langer Brief, in den du außerdem zehn gelesene Bücher eingeklebt hast, ist teuer — und zwischen all den Seiten geht das Wesentliche leicht verloren.
Das Vorgehen „alles lesen“ kostet 141 820 verarbeitete Tokens, „suchen und einen Ausschnitt lesen“ nur 1 358 — 104-mal weniger, für dieselbe Antwort. Deshalb suchen gute Programmieragenten zuerst (grep) und lesen nur Stücke von Dateien. Und deshalb wird eine lange Sitzung von Zeit zu Zeit verdichtet: Der ältere Teil des Gesprächs wird durch eine Zusammenfassung ersetzt, damit der Kontext hineinpasst und das Modell sich darin nicht verliert. Auch das Zwischenspeichern des Prompt-Anfangs (prompt caching) hilft: Das wiederholte Lesen desselben Anfangs wird dann günstiger abgerechnet.
Z = ∑k=1K ck, ck = c1 + ∑j<k (vj + oj)
- Z
- insgesamt verarbeitete Tokens — das, wofür man bezahlt und worauf man wartet
- K
- Anzahl der Modellaufrufe (Schritte mit Werkzeug + endgültige Antwort); jeder Aufruf liest den Kontext erneut von vorn
- c1
- Systemprompt und Aufgabe; sie stehen ab dem ersten Aufruf im Kontext und werden also K-mal bezahlt — deshalb lohnt es sich, sie kurz zu halten und zwischenzuspeichern
- vj + oj
- die Tokens, die Schritt j hinzugefügt hat: Aufruf und Werkzeugergebnis. Schritt j wird in allen späteren Aufrufen gelesen, deshalb wird ein langes Werkzeugergebnis viele Male bezahlt
Satz — die Kosten wachsen mit dem Quadrat der Schrittzahl
Sei K ∈ ℕ, K ≥ 1, die Anzahl der Modellaufrufe, c1 ≥ 0 die Länge des Anfangskontexts und d ≥ 0 die Anzahl der Tokens, die jeder Schritt hinzufügt (Aufruf und Werkzeugergebnis zusammen), sodass ck = c1 + (k − 1) d für k = 1, …, K. Dann gilt
Z = K c1 + d · K(K − 1)/2.
Beweis: Z = ∑k=1K (c1 + (k − 1) d) = K c1 + d ∑k=1K (k − 1) und ∑k=1K (k − 1) = 0 + 1 + … + (K − 1) = K(K − 1)/2. ∎ Für großes K überwiegt der zweite Term ≈ d K²/2: Eine doppelt so lange Sitzung kostet ungefähr viermal so viel. (Die Farben entsprechen den Termen der Zerlegung oben: d ist der konstante Wert von vj + oj.)
Beispiel — Nachrechnen beider Vorgehensweisen
Suchen und einen Ausschnitt lesen. Der Systemprompt hat 157 Tokens, die Frage 18, also c1 = 175. Nach den drei Schritten hat der Kontext 209, 414, 560 Tokens. Die vier Modellaufrufe lesen Z = 175 + 209 + 414 + 560 = 1 358 Tokens (Farben wie in der Formel oben).
Alles lesen. K = 11 Aufrufe, der Kontext wächst von 175 auf 24 927 Tokens, im Schnitt um d = 24 927 − 175/10 ≈ 2 475 pro Schritt. Nach dem Satz ist Z ≈ 11 · 175 + 2 475 · 11 · 10/2 = 138 050; tatsächlich sind es 141 820 (die Artikel sind unterschiedlich lang, deshalb fügen die Schritte nicht genau gleich viel hinzu). Systemprompt und Frage machen davon nur 1 925 Tokens aus — fast alles ist wiederholtes Lesen der Artikel.
5. Plan und Gedächtnis
Definition — Planung und Gedächtnis eines Agenten
Diese Begriffe sind nicht mathematisch; es sind Rollen von Teilen eines Agentenlaufs (Definition des KI-Agenten oben, Kontexte c1, c2, …, Werkzeuge N). Eine Sitzung ist ein Lauf des Agenten von c1 bis zum Anhalten.
- Ein Plan ist Text im Kontext — eine nummerierte Liste von Schritten, die der Agent als einen seiner Schritte vk zu Beginn der Sitzung schreibt und in weiteren Schritten immer wieder umschreibt (Erledigtes abhaken, Übriges ändern). Das Modell liest ihn wie jeden anderen Teil des Kontexts; nichts erzwingt ihn.
- Das Arbeitsgedächtnis ist der Kontext ck einer Sitzung. Es vergeht mit der Sitzung und ist durch die Kontextlänge begrenzt, die das Modell bewältigt.
- Das Langzeitgedächtnis sind Daten, die außerhalb des Modells und außerhalb des Kontexts gespeichert sind (Dateien, Datenbanken) und das Ende der Sitzung überdauern. Der Agent schreibt in sie und liest aus ihnen nur über Werkzeugaufrufe; in einer weiteren Sitzung gelangen sie nur in den Kontext, wenn der Agent sie liest oder das Rahmenprogramm sie in c1 einfügt.
- Ein Teilagent ist ein anderer Agentenlauf, den der Hauptagent als Werkzeug startet: Der Teilagent beginnt mit einem eigenen Anfangskontext (nur der Beschreibung der Teilaufgabe), arbeitet in seiner eigenen Schleife, und in den Kontext des Hauptagenten kehrt als Werkzeugergebnis N(vk) nur seine endgültige Antwort zurück. Die Einzelheiten seiner Arbeit füllen den Hauptkontext so nicht.
Ein Handwerker bei einem längeren Auftrag schreibt sich eine Liste auf Papier und notiert abends in einem Heft, was er herausgefunden hat — morgens muss er sich nicht alles merken, er schlägt einfach das Heft auf. Für Hilfsarbeiten schickt er den Lehrling und will von ihm nur hören: „Fertig, es war hier.“
Bei Programmieragenten ist das Langzeitgedächtnis meist eine gewöhnliche Textdatei im Projekt (Regeln, Befehle, worauf man achten muss), die der Agent zu Beginn jeder Sitzung liest. Das ist das einfachste und durchschaubarste Gedächtnis: Ein Mensch kann es lesen und auch korrigieren.
6. Lange Aufgaben und Kontrolle
Ein Agent, der in 90 % der Fälle den richtigen Schritt macht, wirkt zuverlässig. Aber eine Aufgabe besteht aus vielen Schritten, und ein Fehler in irgendeinem davon verdirbt sie. Gelingt ein Schritt mit Wahrscheinlichkeit p, gelingt die ganze Aufgabe aus n Schritten mit Wahrscheinlichkeit pn — sofern der Agent seine Fehler nicht erkennt.
Definition — geschlossene Schleife mit Rückkopplung
Seien p ∈ [0, 1], d ∈ [0, 1], r ∈ ℕ ∪ {0} und n ∈ ℕ, n ≥ 1. Ein Schritt mit Kontrolle (geschlossene Schleife) läuft so ab:
- der Agent führt den Schritt aus; der Versuch gelingt mit Wahrscheinlichkeit p;
- der Agent prüft das Ergebnis (führt die Tests aus, liest die Ausgabe eines Befehls, vergleicht mit der Erwartung); einen gelungenen Versuch nimmt die Kontrolle immer an, einen misslungenen erkennt sie mit Wahrscheinlichkeit d als fehlerhaft;
- der Versuch ist gelungen ⇒ der Schritt endet mit Erfolg;
- der Versuch ist misslungen, die Kontrolle hat es erkannt und der Agent hat bisher weniger als r-mal wiederholt ⇒ der Agent wiederholt den Schritt ab Punkt 1;
- andernfalls (der Fehler ist durch die Kontrolle gerutscht oder die Wiederholungen sind aufgebraucht) endet der Schritt mit Misserfolg.
Die Ergebnisse der einzelnen Versuche und Kontrollen sind voneinander unabhängig. Die Erfolgsquote eines Schritts q ist die Wahrscheinlichkeit, dass der Schritt mit Erfolg endet; eine Aufgabe besteht aus n solchen unabhängigen Schritten hintereinander und gelingt genau dann, wenn alle gelingen. Dann gilt
q = p ∑k=0r ((1 − p) d)k, P(die Aufgabe gelingt) = qn.
Der Summand k ist die Wahrscheinlichkeit, dass die ersten k Versuche scheitern und das Scheitern erkannt wird (jeweils mit Wahrscheinlichkeit (1 − p) d) und Versuch k + 1 gelingt; diese Möglichkeiten schließen sich gegenseitig aus, deshalb werden sie addiert. Ohne Kontrolle (d = 0 oder r = 0) ist q = p.
Wer ein langes Programm schreibt, ohne es auszuführen, hat fast sicher einen Fehler darin. Wer nach jeder Änderung die Tests laufen lässt, findet den Fehler sofort, solange er noch klein ist und man weiß, wo er steckt. Bei Agenten ist es nicht anders.
q = p ∑k=0r ((1 − p) d)k = p + p (1 − p) d + p ((1 − p) d)² + …
- p
- der Versuch gelingt; jeder Summand endet mit genau einem gelungenen Versuch
- 1 − p
- der Versuch scheitert; jedes Scheitern vor dem Erfolg kostet einen solchen Faktor
- d
- die Kontrolle erkennt das Scheitern; nur dann wiederholt der Agent den Schritt — ein unerkannter Fehler geht durch und verdirbt die Aufgabe
- ∑k=0r, k
- k = wie viele Versuche gescheitert sind, bevor einer klappte; höchstens r Wiederholungen, damit der Agent es nicht endlos versucht
Mit p = 0,9 und zwanzig Schritten gelingen ohne Kontrolle nur 12 % der Aufgaben, mit Kontrolle 79 %. Eine Simulation von 20 000 Aufgaben ergibt 12 % und 79 %, die Formel passt. Selbst ein sehr guter Schritt (p = 0,99) scheitert bei hundert Schritten ohne Kontrolle öfter, als er gelingt (37 %); mit Kontrolle gelingt er in 90 %. Das ist der Hauptgrund, warum Programmieragenten so gut funktionieren: Code lässt sich ausführen und testen, also hat fast jeder Schritt eine Rückmeldung. Die Organisation METR (2025) misst, dass sich die Länge der Aufgaben, die Agenten in der Hälfte der Fälle schaffen, etwa alle sieben Monate verdoppelt.
Beispiel — p = 0,9, d = 0,9, r = 2, zwanzig Schritte
Erfolgsquote eines Schritts (Farben wie in der Formel oben): q = 0,9 + 0,9 · 0,1 · 0,9 + 0,9 · (0,1 · 0,9)² = 0,9 + 0,081 + 0,00729 = 0,98829.
Die ganze Aufgabe: ohne Kontrolle 0,920 = 0,122, mit Kontrolle 0,9882920 = 0,790. Der Schritt hat sich nur von 90 % auf 98,8 % verbessert, die Aufgabe aber von 12 % auf 79 % — die Potenz n bläst kleine Unterschiede im Schritt auf.
Definition — die Länge der Aufgabe, die ein Agent in der Hälfte der Fälle schafft
Sei q ∈ (0, 1) die Erfolgsquote eines Schritts, und eine Aufgabe aus n unabhängigen Schritten gelinge mit Wahrscheinlichkeit qn (Definition oben). Die Länge der in der Hälfte der Fälle bewältigten Aufgabe ist die reelle Zahl n50 % > 0, für die qn50 % = 1/2, also
n50 % = ln 0,5/ln q = ln 2/−ln q ≈ 0,69/1 − q für q nahe 1
(die näherungsweise Gleichheit folgt aus −ln q ≈ 1 − q für q → 1). Weil qn mit wachsendem n fällt, gilt qn ≥ 1/2 genau dann, wenn n ≤ n50 %; die größte ganze Schrittzahl, die der Agent in mindestens der Hälfte der Fälle schafft, ist also ⌊n50 %⌋.
In unserem Modell: p = 0,9 ohne Kontrolle 6,6 Schritte, mit Kontrolle 58,8; p = 0,99 ohne Kontrolle 69,0, mit Kontrolle 686. Die Aufgabe, die ein Agent zur Hälfte schafft, wird ungefähr in dem Maß länger, in dem die Fehlerquote eines Schritts 1 − q sinkt.
Dieselbe Größe (die Länge einer Aufgabe, die ein Agent in 50 % der Fälle schafft) misst METR — nur nicht in Schritten, sondern in der Zeit, die die Aufgabe einen Menschen kosten würde (Thomas Kwa u. a., Measuring AI Ability to Complete Long Tasks, 2025). Unsere Formel ist ein vereinfachtes Modell mit unabhängigen Schritten, nicht ihre Methode.
7. Berechtigungen und Aufsicht
Ein Agent, der Befehle ausführen darf, kann auch Schaden anrichten — aus Versehen (er löscht den falschen Ordner) oder auf eine Anweisung hin, die er in einem fremden Text gelesen hat (prompt injection). Die Abwehr beruht nicht auf dem Modell, sondern auf dem Rahmenprogramm: Werkzeuge mit eingeschränkten Rechten, Ausführung in einer isolierten Umgebung und vor allem Freigabe — gefährliche oder unumkehrbare Schritte werden erst nach Zustimmung eines Menschen ausgeführt. Darauf beruht auch coden: Der Agent arbeitet auf deinem Computer, und du gibst seine Schritte vom Handy aus frei.
8. Zusammenfassung
- Agent = ein Sprachmodell in einer Schleife: Überlegung, Werkzeugaufruf, Ergebnis in den Kontext, von vorn.
- Das Modell beschreibt Werkzeuge nur mit einem strukturierten Aufruf; ausgeführt werden sie vom Rahmenprogramm, das Regeln durchsetzen kann.
- Eine Schleife kann eine erfolglose Suche korrigieren — einmaliges RAG nicht.
- Jeder Aufruf liest den ganzen Kontext: „alles lesen“ kostete 141 820 Tokens, „suchen und einen Ausschnitt lesen“ 1 358.
- Ein Plan, Notizen in Dateien und Teilagenten halten den Kontext klein und übersichtlich.
- Ohne Kontrolle sinkt die Erfolgsquote mit der Länge der Aufgabe wie pn; Tests und Überprüfung ändern das (20 Schritte bei p = 0,9: 12 % → 79 %).
Willst du es selbst ausprobieren? Bitte einen KI-Agenten, dir jeden Werkzeugaufruf zu beschreiben, den er bei einer Aufgabe macht, und am Ende zu schätzen, wie viele Tokens ihn die Aufgabe gekostet hat. Dann gib ihm dieselbe Aufgabe mit der Anweisung „erst suchen, nur Ausschnitte lesen“.
Siehst du das anders? Schreib an support@coden-app.com.