Design wechseln

AI-Agent-Kosten kontrollieren: Modell-Routing, Tool-Budgets, Caching und Retry-Limits

Easton editorial illustration: agent rollout and rollback rail
7
Budget-Ebenen
user, tenant, workflow, task, tool, retry, cache.
4
Kontrollaktionen
route, degrade, pause, abort.
3
Cache-Typen
prompt prefix cache, business result cache, tool response cache.
数据来源: Diese Engineering-Checkliste basiert auf der offiziellen Dokumentenrecherche aus Phase 1. Preise, Rabatte und Modellverfuegbarkeit muessen vor der Veroeffentlichung gegen offizielle Seiten geprueft werden.

"OpenAI API Pricing"

Um 3 Uhr morgens liefert ein Hintergrund-report-Agent eine leere Antwort. Der HTTP-Status ist 200, aber der body ist leer. Die Retry-Logik prueft nur den Statuscode und versucht es weiter. Jede Anfrage sendet 500 input tokens. Nach 1.500 Retries sind 750.000 Tokens verbraucht. Die Rechnung am naechsten Morgen ist dann der eigentliche Alarm.

Die Ursache ist nicht “das Modell war zu teuer”. Es fehlten drei Dinge: Circuit Breaker, Budgetpruefung und Fehlerklassifikation. Agent-Kosten laufen typischerweise in drei Mustern aus dem Ruder:

Unbegrenzte Retries. Fehlermodi werden nicht klassifiziert, also gilt eine leere Antwort als retryable error. Es gibt keinen Circuit Breaker, daher stoppen auch 1.500 Fehlversuche nicht. Jeder Retry sendet den kompletten Kontext erneut und vervielfacht die Kosten um 2-5x.

Aufgeblaehter Kontext. Ein Langlaeufer laeuft 6 Stunden und die Conversation History waechst auf 80K tokens. Ohne checkpoint startet der Task nach einem Fehler von vorn und jeder Schritt wird erneut bezahlt.

Modell-Uebernutzung. Alle Aufgaben laufen auf einem frontier model, weil es keine Routing-Strategie gibt. Selbst einfache Klassifikation nutzt den teuersten Pfad und verschwendet 70% der Tokens.

Kostenkontrolle fuer AI-Agents ist keine Einzeloptimierung. Sie besteht aus mehreren Schichten: Budget-Objekten, Routing-Strategie, Cache-Hits, Retry-Circuit-Breakern, Kostenlogs und Alert-Schwellen. Diese sechs Engineering-Objekte sollten als Entscheidungstabellen oder ausfuehrbare Checks enden.

Budget-Objekte: Was Sie erfassen, wo Sie es speichern und wann Sie abbrechen

Kostenkontrolle beginnt mit einem Budget-Objekt. Eine Gesamtsumme reicht nicht. Ohne Aufteilung koennen Sie bei einer Rechnungsspitze nicht erkennen, welcher Nutzer, welcher Task oder welches Tool die Kosten verursacht hat.

Sieben Budget-Ebenen

Budget-Objekte lassen sich von grob nach fein in sieben Ebenen aufteilen:

Budget-EbeneBudget-ObjektEmpfohlene ObergrenzeAlert-Ausloeser
Layer 1userTages-/Monatslimit pro NutzerAlert bei Restbudget < 20%
Layer 2tenantEigener Budgetpool pro TenantAlert bei Restbudget < 30%
Layer 3workflowEigenes Budget pro Workflow-TypAlert bei Restbudget < 40%
Layer 4taskEigenes Budget pro Task-TypAlert bei Restbudget < 50%
Layer 5toolEigenes Budget pro Tool-AufrufTool bei Ueberschreitung ueberspringen
Layer 6retryRetry-Limit + Circuit BreakerTool nach N Folgefehlern deaktivieren
Layer 7cacheCache-Hit-Rate beobachtenAlert, wenn Hit-Rate unter Erwartung liegt

Die konkreten Limits haengen vom Geschaeftsmodell ab und sind veraenderliche Konfiguration. Die Schichtstruktur ist stabiler. Das Feld fuer Restbudget gehoert in die Kostenlogs, damit Alerts und Circuit Breaker darauf zugreifen koennen.

Felder, die jede Ebene erfassen sollte

Jede Budget-Ebene sollte diese Felder erfassen:

FeldnameZweckTypWarum es noetig ist
modelModell identifizierenstringZeigt, ob das Modell-Routing passt
inputTokensInput-Token-ZahlintegerBerechnet Input-Kosten
outputTokensOutput-Token-ZahlintegerOutput-Kosten unterscheiden sich und muessen separat erfasst werden
cachedTokensCache-hit TokensintegerMisst Cache-Ersparnis
costEstimateKostenschaetzung fuer diesen AufruffloatErmoeglicht laufende Kostenakkumulation
budgetRemainingRestbudgetfloatGrundlage fuer Circuit-Breaker-Entscheidungen

Der Kern ist Buchhaltung nach Dimensionen, nicht “nur total_cost speichern”. In Multi-Tenant-Systemen muessen Kosten nach tenantId verteilt werden. Bei vielen Tools ist toolName der Weg, die Blackbox zu finden.

Circuit-Breaker-Logik

Wenn das Restbudget unter einen Schwellwert faellt, greift der Circuit Breaker:

def check_budget_before_retry(budget_remaining, retry_cost_estimate):
    if budget_remaining < retry_cost_estimate:
        return "skip_retry"  # Retry ueberspringen, weil er das Budget sprengen wuerde
    if budget_remaining < threshold:  # threshold zum Beispiel 20%
        return "wait_approval"  # Restbudget ist niedrig, Freigabe abwarten
    return "continue"

Die Logik prueft das Restbudget vor dem Retry, nicht erst danach. Schaetzen Sie vor jedem Retry die Kosten und stoppen Sie, wenn der naechste Versuch das Budget sprengen wuerde. So verhindern Sie den Fall “leere Antwort 1.500-mal wiederholt”.

Welche Kontextteile in einen stabilen prefix gehoeren und welche nur Laufzeitvariablen sind, behandelt der Kontext-Engineering-Artikel derselben Serie.

Modell-Routing: Nicht jede Aufgabe braucht das teuerste Modell

Ein ticket triage Agent hat oft diese Verteilung: 70% einfache Klassifikation, 20% Entwurf einer Antwort, und nur 10% sollten vor einer Kundenmail auf ein frontier model hochgestuft werden. Eine Routing-Strategie kann 40-85% Kosten sparen.

Modell-Ebenen-Routing

Routen Sie nach Aufgabenkomplexitaet:

Task-EbeneTypische AufgabenEmpfohlene Modell-EbeneAnteilKostenprofil
70% - S-StufeKlassifikation, Extraktion, Filterung, einfache Q&Anano/flash (guenstigste Stufe)70%Kurzer Output, wenige Turns, wenige Tool-Aufrufe
20% - M-StufeEntwurf, Zusammenfassung, Codegenerierung, mittlere Schlussfolgerungmid-tier (mittlere Kosten)20%Mittlere Output-Laenge, moegliche Tool-Nutzung
10% - L-StufeReview, Architekturdesign, komplexe Schlussfolgerung, Koordination mehrerer Toolsfrontier (teuerste Stufe)10%Langer Output, viele Turns, haeufige Tool-Aufrufe

Die Routing-Strategie hat drei Schritte:

Schritt 1: Aufgabe einstufen. Definieren Sie fuer jeden workflow S/M/L-Kriterien: Output-Laenge, Tool-Call-Anzahl, reasoning depth und Risikostufe.

Schritt 2: Standardmaessig S-Stufe nutzen. Nur wenn komplexe Merkmale auftreten, wird auf M oder L hochgestuft.

Schritt 3: Kaskadisch routen. Wenn S scheitert, auf M hochstufen. Wenn M scheitert, auf L hochstufen. Wenn L scheitert, menschliche Intervention. Vor jeder Hochstufung das Restbudget pruefen und bei Budgetueberschreitung nicht hochstufen.

Service-Tier-Routing

Dasselbe Modell kann auch nach latency priority verzweigen. Rabatte und Fertigstellungsfenster sind veraenderliche Fakten; pruefen Sie offizielle Preise vor der Veroeffentlichung.

Service-TierKostenrabattFertigstellungszeitGeeignete Nutzung
Realtime APIKein RabattSofortige AntwortInteraktive Agent-Chats, hohe Prioritaet
Batch API50% cost discount (vor Veroeffentlichung pruefen)24-hour turnaround (vor Veroeffentlichung pruefen)Batch-Evals, Klassifikation, Embeddings, Repository-Verarbeitung
Flex ProcessingNiedrigere Kosten (vor Veroeffentlichung pruefen)Langsamere Antwort, gelegentlich nicht verfuegbarNiedrige Prioritaet, asynchrone Tasks, model evaluations, data enrichment

Checkliste fuer Offline-Routing:

  • Braucht die Aufgabe sofortige Antwort? Ja -> Realtime API mit Modell-Routing.
  • Kann sie 24 Stunden warten? Ja -> Batch API.
  • Hat sie niedrige Prioritaet und toleriert gelegentliche Fehler? Ja -> Flex Processing.
  • Ist es Batch-Arbeit wie eval, Klassifikation oder embedding? Ja -> Batch API.

Risikostufen

Aufgaben werden auch nach Risiko geroutet:

RisikostufeTypische OperationRouting-StrategieBudget-Zweig
Niedriges RisikoKlassifikation, Extraktion, interne ZusammenfassungS-Stufe + automatischer PfadKeine Freigabe, lockeres Budgetlimit
Mittleres RisikoKundenantwort entwerfen, Codeaenderung vorschlagenM-Stufe + optionale FreigabeBei Budgetueberschreitung Freigabe anfordern
Hohes RisikoKundenmail senden, Zahlung ausloesen, Architektur aendernL-Stufe + PflichtfreigabeFreigabe-Warten, Ablehnung und Timeout werden Budget-Zweige

Wie Wartezeit, Ablehnung und Timeout bei Freigaben die Budgetzweige beeinflussen, behandelt der Human-in-the-Loop-Artikel derselben Serie.

Wichtige Constraints

Routing braucht klare Constraints:

  • Keine Preise hart codieren: Preise sind veraenderlich. Speichern Sie model + pricingVersion, statt eine Kostenformel in Business-Logik einzubrennen.
  • Restbudget pruefen: Vor dem Upgrade budgetRemaining pruefen. Bei Ueberschreitung Upgrade ueberspringen oder Freigabe anfordern.
  • Fehler klassifizieren: Routing-Fehler muessen recoverable Modellgrenzen von unrecoverable Parameterfehlern oder Permission Denials trennen.

Tool-Call-Budgets: per-tool budget, timeout und Retry-Limits

Tool-Aufrufe haben Schema- und API-Kosten. Jeder Aufruf sendet Schema, Argumente und Kontext fuer Response-Parsing; externe APIs koennen ausserdem rate-limiten oder timeouts liefern. Diese Kosten stehen neben dem Modellaufruf.

Tool-Budget-Kontrolle

Jedes Tool bekommt eigene Budgetkontrollen:

KontrolleEmpfohlene KonfigurationMonitoring-FeldAusgeloeste Aktion
Per-tool budgetLimit pro Aufruftool_cost_estimateTool ueberspringen oder degradieren
Tool timeoutTimeout fuer externe APItool_durationTimeout als retryable error markieren
Retry limit per toolRetry-Limit pro Tooltool_retry_countTool aufgeben, nicht in Retry-Schleife laufen

Tools fuer externe APIs, etwa Suche, Datenbanken oder Drittanbieter, brauchen eigene Buchhaltung. Sonst wird Tool Calling zur Kosten-Blackbox.

Tool-Fehler klassifizieren

Tool-Fehler teilen sich in recoverable und unrecoverable cases:

FehlertypTypische FehlerStrategieKostenwirkung
Recoverable failureNetzwerk-Timeout, 503 Service Unavailable, 429 Rate LimitAutomatisch mit Exponential Backoff und retry-after wiederholenJeder Retry sendet kompletten Kontext
Unrecoverable failure403 Permission Denied, 400 Bad Request, fehlendes ToolNicht wiederholen, Fehler dem Modell zur Entscheidung gebenKein Retry, keine wiederholte Verschwendung

Die Regel: Nur temporaere Fehler aus externen Bedingungen werden wiederholt. Interne Konfigurationsfehler werden nicht wiederholt.

Circuit Breaker

Nach N Folgefehlern deaktiviert der Breaker das Tool:

def circuit_breaker_tool(tool_name, consecutive_failures, threshold=5):
    if consecutive_failures >= threshold:
        return "disable_tool"  # Tool deaktivieren
    return "continue"

Der Zustand des Circuit Breakers gehoert ins Log, damit Sie spaeter erklaeren koennen, warum ein Tool deaktiviert wurde. Nach dem Ausloesen warten Sie auf menschliche Intervention oder einen automatischen Recovery-Check, statt ein instabiles Tool weiter aufzurufen.

Grundlagen zu Tool Calling stehen in Tool Calling. Dieser Artikel erweitert sie um per-tool budgets, timeouts und Retry-Limits.

Prompt-Caching-Design: Stabiler Prefix, variable Positionen und 1024-Token-Schwelle

Prompt Caching optimiert Input-Token-Kosten fuer einen stabilen prompt prefix. Es ist kein Business-Result-Cache. Requests mit demselben prompt prefix werden zu einem Server geroutet, der diesen Prefix kuerzlich verarbeitet hat; das kann Latenz und Input-Kosten senken.

Prompt Caching ist kein Result-Cache

Prompt Caching speichert den stabilen prompt prefix, nicht das Business-Ergebnis. Der Unterschied ist wichtig:

  • Prompt Caching: speichert einen stabilen prompt prefix wie system prompt oder tool schema. Ein Hit spart input tokens, aber die Inferenz laeuft trotzdem.
  • Business-Result-Cache: speichert vollstaendige Ausgaben wie Tool-Ergebnisse oder Datenbankabfragen. Ein Hit wird direkt zurueckgegeben und ruft kein Modell auf.

Die Ziele sind verschieden: Prompt Caching optimiert Input-Token-Kosten, Business-Caching optimiert den kompletten Aufruf. Beides kann zusammenlaufen: stabile Prefixe ueber Prompt Caching, haeufige Tool-Ergebnisse ueber Business-Cache.

Strukturelle Anforderungen

Entscheidend ist die Trennung von stabilem Prefix und Laufzeitvariablen:

InhaltstypPositionCache-Hit-WahrscheinlichkeitTypische Inhalte
Stabiler Prefix (geht in den Cache)Anfang des PromptsHochSystem prompt, Tool schema, Policy-Dokumente, Few-shot-Beispiele
Laufzeitvariablen (nicht in den Cache)Spaeter im PromptNiedrigUser input, File fragments, Runtime state wie aktueller Turn und temporaere Variablen

Design-Schritte:

  1. System prompt, Tool schema und Policy nach vorne legen: Diese Inhalte bleiben ueber mehrere Aufrufe stabil und treffen leichter den Cache.
  2. User input, File fragments und Runtime state nach hinten legen: Diese Inhalte aendern sich jedes Mal und gehoeren nicht in den stabilen Prefix.
  3. Cache hit rate beobachten: cachedTokens und gesamte input tokens erfassen, dann Hit-Rate berechnen. Ueber 40% ist gesund, unter 20% sollten Sie die Prompt-Struktur pruefen.

Schwelle und Wirkung

Die automatische Schwelle und Wirkung von Prompt Caching sind veraenderliche Fakten. Pruefen Sie die offiziellen Docs vor der Veroeffentlichung:

  • Schwelle: ab 1024 tokens automatisch aktiviert (vor Veroeffentlichung pruefen).
  • Wirkung: Hits koennen Kosten und Latenz senken (konkrete Werte pruefen).
  • Hit pruefen: Feld usage.prompt_tokens_details.cached_tokens.

Unterstuetzte Modelle, Schwellen und Rabatte fuer Prompt Caching koennen sich aendern. Pruefen Sie sie gegen die offizielle Pricing-Seite. Das stabile Prinzip bleibt: statische Inhalte nach vorn, variable Inhalte nach hinten.

Retry-Circuit-Breaker: Idempotenz, Checkpoints und Restbudget

Retries sind eine der groessten Quellen fuer ausufernde Kosten. Wenn ein report-Agent an einem instabilen Tool haengt und bei jedem Fehler den kompletten Kontext erneut sendet, liegt der Task nach 1.500 Retries weit ausserhalb des normalen Kostenpfads.

Budget vor dem Retry pruefen

Pruefen Sie das Restbudget vor dem Retry, nicht danach:

def should_retry(error_type, budget_remaining, retry_cost_estimate):
    # Fehlerklassifikation
    if error_type in ["403", "400", "tool_not_exist"]:
        return False  # Unrecoverable error, nicht wiederholen

    # Budgetpruefung
    if budget_remaining < retry_cost_estimate:
        return False  # Ueber Budget, nicht wiederholen

    return True  # Retry moeglich

Die Budgetpruefung gehoert vor die Retry-Logik. So verhindern Sie, dass eine leere Antwort 1.500-mal wiederholt und ein Tagesbudget verbraucht wird.

Idempotenz

Retries duerfen Nebenwirkungen wie E-Mails oder Zahlungen nicht doppelt ausfuehren:

  • Tool-Aufrufe nutzen eine Idempotenz-ID wie requestId. Wenn die externe API dieselbe ID erneut erhaelt, liefert sie das gecachte Ergebnis statt die Operation erneut auszufuehren.
  • Die Idempotenz-ID gehoert ins Kostenlog, damit doppelte Aufrufe nachvollziehbar sind.

Der Kern von Idempotenz: dieselbe Operation sollte nicht zweimal Kosten und Nebenwirkungen erzeugen.

Zustand speichern (Checkpoint)

Lang laufende Tasks sollten nicht den ganzen Workflow neu starten:

  • Speichern Sie an wichtigen Knoten einen checkpoint mit erledigten Schritten, aktuellem Zustand und Kontextzusammenfassung.
  • Nach einem Fehler geht es vom checkpoint weiter, nicht von vorn.
  • Persistieren Sie den checkpoint. Nur im Speicher reicht nicht.

Checkpoint- und Thread-State-Design behandelt LangGraph Agent Architecture.

Retry-Strategie

Verschiedene Fehlertypen brauchen verschiedene Retry-Strategien:

FehlertypTypischer FehlerRetry-StrategieKostenwirkung
Netzwerk-Timeout10 Sekunden ohne AntwortExponential Backoff + retry-after, maximal 3 RetriesJeder Retry sendet kompletten Kontext
503/429Service Unavailable, Rate LimitRate-Limit-Fenster + retry-after abwarten, maximal 3 RetriesWarten verbraucht keine Tokens, der Retry schon
403/400Permission Denied, Bad RequestNicht wiederholen, Fehler dem Modell gebenKein Retry, vermeidet ungueltige Kosten

Die Regel lautet: Nur recoverable errors werden wiederholt. Ungueltige Requests gehoeren nicht immer wieder zurueck zum Modell.

Circuit Breaker

Nach N Folgefehlern stoppt der Retry und wartet auf Intervention:

def circuit_breaker(consecutive_failures, threshold=5):
    if consecutive_failures >= threshold:
        return "stop_retry"  # Retry stoppen
    return "continue"

Die Circuit-Breaker-Entscheidung gehoert ins Log, damit Sie erklaeren koennen, warum Retries gestoppt wurden. Danach warten Sie auf menschliche Intervention oder Budgeterholung, statt instabile Tools oder Modelle weiter aufzurufen.

Kostenlogs und Alerts: Welche Felder und welche Schwellwerte

Kostenbeobachtung ist die Voraussetzung fuer Kostenkontrolle. Sind die Logfelder unvollstaendig, finden Sie die Ursache nicht.

OpenTelemetry trace span attributes

Kostenlogs lassen sich in drei Span-Ebenen entwerfen:

Agent run span (oberste Ebene):

FeldnameZweckTypWarum es noetig ist
runIdKonkrete Ausfuehrung identifizierenstringTrennt mehrere Laeufe desselben Workflows
tenantIdTenant identifizierenstringVerteilt Kosten in Multi-Tenant-Systemen
userIdNutzer identifizierenstringZeigt Kostentrends pro Nutzer
workflowNameWorkflow identifizierenstringErfasst Kosten nach Workflow-Typ
totalCostGesamtkostenschaetzungfloatErmoeglicht laufende Kostenakkumulation
budgetRemainingRestbudgetfloatGrundlage fuer Circuit Breaker
totalRetriesGesamtzahl der RetriesintegerZeigt Retry-Verstaerkung

Model call span (Kind-Span):

FeldnameZweckTypWarum es noetig ist
modelModell identifizierenstringZeigt, ob Modell-Routing passt
pricingVersionPricing-VersionstringVerhindert hart codierte Kostenformeln
inputTokensInput-Token-ZahlintegerBerechnet Input-Kosten
outputTokensOutput-Token-ZahlintegerErfasst Output-Kosten separat
cachedTokensCache-hit TokensintegerMisst Cache-Ersparnis
costEstimateKostenschaetzung dieses AufrufsfloatErmoeglicht laufende Kostenakkumulation
latencyMsAufruflatenzintegerHilft zu entscheiden, ob Batch/Flex passt

Tool call span (Kind-Span):

FeldnameZweckTypWarum es noetig ist
toolNameTool identifizierenstringIdentifiziert Tool-Call-Overhead
toolBudgetTool-BudgetlimitfloatGrundlage fuer Circuit Breaker
toolTimeoutTool-TimeoutintegerKlassifiziert Timeout-Fehler
retryCountRetry-AnzahlintegerZeigt Retry-Verstaerkung
errorTypeFehlertypstringTrennt recoverable und unrecoverable failures

Speichern Sie nicht nur total_cost. Zerlegen Sie Kosten nach Dimensionen. Ohne diese Felder sagt eine Rechnungsspitze nur “ueber Budget”; sie sagt nicht, welcher Nutzer, welches Tool oder welcher Retry-Pfad schuld war.

Das vollstaendige Design fuer Logs, Alerts und Recovery steht in Agent Monitoring and Recovery. Dieser Artikel ergaenzt Kostenfelder und Budget-Objekte.

Alert-Schwellwerte

Setzen Sie Alert-Schwellen je Dimension:

Alert-DimensionAlert-SchwelleAlert-KanalAusgeloeste Aktion
Globaler Budgetverbrauch70%, 90%, 100%Slack/E-Mail70% Hinweis, 90% Degradation, 100% Break
Verbrauch eines Nutzers/TenantsMehr als 3x DurchschnittSlack/E-MailAuf ungewoehnliche Aufrufe pruefen
Fehlerrate eines Modells> 5%Dashboard-AlertModell-Routing oder Service-Status pruefen
Retry-Anzahl eines Tools> SchwellwertDashboard-AlertTool-Stabilitaet pruefen
Cache-Hit-Rate< ErwartungswertDashboard-AlertPrompt-Struktur pruefen

Alert-Schwellen gehoeren in die Kostenlogik, damit Alerts und Circuit Breaker automatisch ausloesen.

Degradationsstrategie

Nach einem Alert kann die Degradation so aussehen:

DegradationspfadDegradationGeeigneter FallKostenwirkung
ModelldegradationGrosses Modell -> kleines ModellEin Modell hat hohe FehlerrateWeniger Kosten, moeglicher Qualitaetsverlust
PfaddegradationRealtime API -> Batch API -> Flex ProcessingGlobales Budget wird zu schnell verbrauchtMehr Latenz, weniger Kosten
Feature-DegradationNicht-kritische Tool-Aufrufe deaktivierenEin Tool hat zu viele RetriesReduziert Tool-Call-Overhead
NutzerdegradationRate Limit, Queue, Hinweis “spaeter erneut versuchen”Ein Nutzer verbraucht ungewoehnlich vielVerhindert, dass ein Nutzer das Budget verbrennt

Degradation gehoert in die Budgetlogik. Bei einem Alert sollte das System automatisch degradieren, nicht erst nach manueller Reaktion.

Naechste Schritte

Agent-Kostenkontrolle steht nicht allein. Sie braucht Monitoring, Tool Calling und Kontext-Engineering:

  • Veroeffentlicht: Agent Monitoring and Recovery: Logfelder, Alerts und Fehlerwiederherstellung. Dieser Artikel ergaenzt Kostenfelder und Budget-Objekte.
  • Veroeffentlicht: LangGraph Agent Architecture: Checkpoints, thread state und Recovery fuer Langlaeufer.
  • Veroeffentlicht: Tool Calling: Grundlagen von Tool Calling. Dieser Artikel ergaenzt per-tool budgets, timeouts und Retry-Limits.
  • Gleiche Serie: Kontext-Engineering: stabile Prefixe, Cache-Hits und welche Kontexte in den stabilen prefix gehoeren.
  • Gleiche Serie: Human-in-the-Loop: Freigabewartezeit, Ablehnung, Timeout-Zweige und wie Freigaben Kosten und Retries veraendern.

Beginnen Sie mit der Session-Schutzlinie: Setzen Sie ein per-session cost limit und beenden Sie eine Session automatisch, wenn sie das Budget ueberschreitet. Das ist der schnellste Schutz dagegen, dass ein entgleister Task das Tagesbudget verbrennt. Danach erweitern Sie das Design auf Budget-Ebenen, Modell-Routing, Tool-Call-Budgets, Prompt Caching, Retry-Circuit-Breaker und Kostenlogs.

Ein Kostenbudget und Circuit Breaker fuer AI-Agents entwerfen

Mit Budget-Objekten, Modell-Routing, Service-Tier-Routing, Caching, Tool-Budgets und Retry-Circuit-Breakern verschieben Sie Kostenkontrolle vor die Ausfuehrung jedes runs.

⏱️ Estimated time: 45 min

  1. 1

    Step 1: Alle Kostenpfade auflisten

    Listen Sie Modellaufrufe, Tool-Aufrufe, Dateizugriffe, externe APIs, Batch-Jobs, Caches und Retry-Pfade des Agents auf.
  2. 2

    Step 2: Das Budget-Objekt definieren

    Erfassen Sie Budgets nach tenant, user, run, workflow, model, tool, retry, cache und time window.
  3. 3

    Step 3: Die Routing-Strategie festlegen

    Definieren Sie Modell-Routing und Service-Tier-Routing fuer unterschiedliche Aufgabentypen: online, batch, flex und queue.
  4. 4

    Step 4: Cache-Hits entwerfen

    Legen Sie stabilen Kontext in den prompt prefix, variable Inhalte dahinter, und trennen Sie prompt caching, Business-Result-Cache und Tool-Response-Cache.
  5. 5

    Step 5: Tools und Retries begrenzen

    Geben Sie jedem Tool timeout, max retries, idempotency key, per-tool budget und fallback.
  6. 6

    Step 6: Kosten-Spans protokollieren

    Erfassen Sie auf run/span-Ebene token, cached token, tool, retry, latency, estimated cost, budget remaining und traceId.
  7. 7

    Step 7: Degradation und Circuit Breaker konfigurieren

    Setzen Sie Schwellwerte fuer Degradation, Pause, Circuit Breaker und Alerts, und testen Sie diese mit echten Fehlerfaellen.

FAQ

Sollten AI-Agent-Kosten nach Nutzer, Session, Aufgabe oder Tool erfasst werden?
Nutzen Sie mehrere Ebenen: user, tenant, workflow, task, tool, retry und cache. Jede Ebene braucht ein eigenes Budget und einen Circuit Breaker. Wenn Sie nur total_cost speichern, finden Sie bei einer Kostenanomalie nicht den Nutzer, das Tool oder den Retry-Pfad.
Heisst Modell-Routing nur, einfache Aufgaben auf ein kleineres Modell zu legen?
Nein. Sie brauchen auch Service-Tier-Routing wie Batch/Flex/Realtime und eine Risikoklassifikation. Dasselbe Modell kann nach latency priority verzweigen. Offline-Arbeit passt zu Batch API, niedrige Prioritaet zu Flex Processing.
Was ist der Unterschied zwischen Prompt Caching und normalem Business-Caching?
Prompt Caching speichert einen stabilen prompt prefix, etwa system prompt, tool schema und policy. Es speichert kein Business-Ergebnis. Ein Business-Cache speichert komplette Ausgaben oder Tool-Antworten. Beides loest unterschiedliche Probleme und kann kombiniert werden.
Wie oft sollte ein fehlgeschlagener Tool-Aufruf wiederholt werden?
Nicht nur nach einer festen Zahl. Entscheiden Sie nach Fehlerklasse, Restbudget und Circuit-Breaker-Status. Wiederholen Sie nur wenige recoverable errors. 403, 400 oder ein fehlendes Tool sollten nicht erneut versucht werden.
Was tun, wenn einem langen Agent-Task das Budget ausgeht?
Pausieren Sie bevorzugt und speichern Sie einen Checkpoint. Warten Sie dann auf Budget-Erholung oder menschliche Freigabe. Ein harter Abbruch verliert Fortschritt, blinde Degradation kann Qualitaet kosten.
Welche Felder gehoeren in ein Kostenlog?
Mindestens runId, tenantId, workflow, model, input/output/cached tokens, toolName, retryCount, latency, costEstimate, budgetRemaining, decision und traceId.

13 Min. Lesezeit · Veröffentlicht am: 17. Sept. 2026

Kommentare

Melde dich mit GitHub an, um einen Kommentar zu hinterlassen

Easton BlogEaston Blog