Um 07:20 habe ich die Abrechnung gesehen: 41,80 Euro für eine Nacht. Ich habe in dieser Nacht geschlafen, der Agent hat gearbeitet, und das war der Plan. Er sollte 30 Dateien durchsehen, Fehler finden und mir morgens einen Bericht hinlegen. Bekommen habe ich eine Rechnung und einen Bericht mit vier Zeilen.
Das Teure war nicht die eine falsche Antwort. Es war die Schleife, in der er sie gesucht hat, und die Tatsache, dass jede Runde teurer wurde als die vorherige.
Der Agent hat nicht geantwortet, er hat gearbeitet
Ein Chat-Modell kostet Geld pro Token, und ein Agent produziert Tokens, ohne dass jemand zusieht. Jede Runde besteht aus einem Aufruf mit dem bisherigen Gesprächsverlauf, einem Werkzeugaufruf, dessen Ergebnis zurückkommt, und einem neuen Aufruf mit dem Verlauf plus Ergebnis. Der Verlauf wächst. Der Preis pro Runde wächst mit ihm, und zwar nicht linear, sondern mit der Anzahl der bisherigen Runden.
Genau diese Stelle habe ich unterschätzt. Ich hatte ein Budget im Kopf, aber ein Budget pro Frage. Der Agent hat keine Frage gestellt, er hat 38 Runden lang gearbeitet.
Wo das Geld hingeht

| Phase | Runden | Token pro Aufruf | Kosten |
|---|---|---|---|
| Orientierung | 1 bis 10 | 4.000 bis 9.000 | 1,70 Euro |
| Dateien lesen | 11 bis 25 | 12.000 bis 31.000 | 11,10 Euro |
| Schleife | 26 bis 38 | 34.000 bis 58.000 | 28,00 Euro |
| Bericht | 1 | 61.000 | 1,00 Euro |
Die letzte Zeile ist die bitterste. Der Abschlussbericht hat mehr gekostet als die ersten zehn Runden zusammen, weil er den gesamten Verlauf mitgeschickt bekommt. Ein Agent, der lange arbeitet, bezahlt für seine eigene Geschichte.
Der teuerste Bug war eine Schleife, die aussah wie Sorgfalt
Ab Runde 26 hat der Agent eine Datei gesucht, die er in Runde 12 schon gelesen hatte. Er hat sie nicht gefunden, weil er im falschen Verzeichnis gesucht hat, und statt das Verzeichnis zu ändern, hat er die Suche wiederholt. Zwölfmal. Jedes Mal mit demselben Ergebnis und einem etwas längeren Verlauf.
Von außen sah das nach Sorgfalt aus. Ein Agent, der prüft, ist besser als einer, der rät. Aber es gab keine Bedingung, unter der er aufhört, und keine Erinnerung daran, dass er diese Suche schon gemacht hatte. Für mich war es ein Bug. Für das Modell war es eine plausible nächste Handlung.
Das ist die unangenehme Eigenschaft von Agenten: Sie haben kein Gefühl für Fortschritt. Ein Mensch merkt nach der dritten erfolglosen Suche, dass er etwas falsch macht. Ein Modell sieht nur den Verlauf und die letzte Fehlermeldung, und die sieht nach einem neuen Problem aus, auch wenn es dasselbe ist. Ohne einen Zähler von außen wiederholt es die Höflichkeit so lange, bis das Budget entscheidet.
Was ich einbaue, bevor ich ihn wieder starte
Drei Dinge, alle billig, alle langweilig. Erstens eine harte Obergrenze für Runden. Zweitens ein Budget in Euro, nicht in Tokens, weil ich die Preise nicht im Kopf habe und das Modell sie auch nicht kennt. Drittens ein Gedächtnis für Werkzeugaufrufe: Wenn dieselbe Suche mit derselben Eingabe zweimal passiert, bekommt der Agent das gespeicherte Ergebnis und einen Hinweis, dass er das schon versucht hat.
class Budget:
def __init__(self, max_eur: float, max_steps: int = 20):
self.left = max_eur
self.steps = max_steps
self.spent = 0.0
def charge(self, prompt_tokens: int, completion_tokens: int, price: dict):
cost = (
prompt_tokens * price["in"] + completion_tokens * price["out"]
) / 1_000_000
self.spent += cost
self.left -= cost
self.steps -= 1
if self.steps == 0 or self.left <= 0:
raise RuntimeError(
f"budget exhausted after {self.spent:.2f} EUR"
)
def should_stop(self) -> bool:
return self.steps == 0 or self.left <= 0
Die Ausnahme ist Absicht. Ein Agent, der bei leerem Budget weiterläuft und nur eine Warnung loggt, ist ein Agent, der weiter Geld ausgibt. Der Abbruch muss wehtun, sonst ist er eine Empfehlung.
Fazit
41,80 Euro sind kein Weltuntergang, und ich habe für dieses Geld eine Lektion bekommen, die in keiner Dokumentation steht: Bei Agenten ist der Verlauf das Produkt und die Rechnung gleichzeitig. Wer die Runden nicht zählt, zahlt für die Geschichte, die der Agent sich selbst erzählt. Seitdem ich Runden, Kosten und Werkzeugaufrufe mitschreibe, ist der Agent langsamer geworden und hat mehr gefunden, weil er nicht mehr im Kreis läuft.
Wenn du einen Agenten über Nacht laufen lassen würdest: Welche Zahl möchtest du morgens sehen, bevor du den Bericht liest?
hannahweiss
wie viele runden waren es am ende, und ab welcher runde war klar, dass er im kreis läuft?
linabrueckner
eine schleife, in der jede runde teurer wird, ist ein gutes bild für das ganze thema
marwankhalil
ein budget pro lauf ist die einzige bremse, die funktioniert, weil der agent sich selbst nicht bremst
yaraosman
41 euro für eine nacht ist kein argument gegen agenten, das ist ein argument gegen fehlende limits
tobiaskrueger
vier zeilen bericht für 41 euro, das ist der teuerste text, den ich diese woche gelesen habe 😅
benosei
elf runden, und ab der fünften hat er dieselben drei dateien wieder gelesen