Token-Nutzung verstehen
Die TypeScript- und Python-SDKs stellen die gleichen Nutzungsdaten mit unterschiedlichen Feldnamen bereit:- TypeScript bietet Token-Aufschlüsselungen pro Schritt auf jeder Assistenten-Nachricht (
message.message.id,message.message.usage), Kosten pro Modell übermodelUsageauf der Ergebnis-Nachricht und eine kumulative Summe auf der Ergebnis-Nachricht. - Python bietet Token-Aufschlüsselungen pro Schritt auf jeder Assistenten-Nachricht (
message.usage,message.message_id), Kosten pro Modell übermodel_usageauf der Ergebnis-Nachricht und die akkumulierte Summe auf der Ergebnis-Nachricht (total_cost_usdundusagedict).
query()Aufruf: eine Invokation derquery()Funktion des SDK. Ein einzelner Aufruf kann mehrere Schritte beinhalten (Claude antwortet, verwendet Tools, erhält Ergebnisse, antwortet erneut). Jeder Aufruf erzeugt am Ende eineresultNachricht.- Schritt: ein einzelner Request/Response-Zyklus innerhalb eines
query()Aufrufs. Jeder Schritt erzeugt Assistenten-Nachrichten mit Token-Nutzung. - Sitzung: eine Serie von
query()Aufrufen, die durch eine Sitzungs-ID verknüpft sind (mit derresumeOption). Jederquery()Aufruf innerhalb einer Sitzung meldet seine eigenen Kosten unabhängig.
query() Aufruf, mit Token-Nutzung, die bei jedem Schritt gemeldet wird, und der kumulativen Schätzung am Ende:
1
Jeder Schritt erzeugt Assistenten-Nachrichten
Wenn Claude antwortet, sendet es eine oder mehrere Assistenten-Nachrichten. In TypeScript enthält jede Assistenten-Nachricht eine verschachtelte
BetaMessage (zugänglich über message.message) mit einer id und einem usage Objekt mit Token-Zählungen (input_tokens, output_tokens). In Python stellt die AssistantMessage Dataclass die gleichen Daten direkt über message.usage und message.message_id bereit. Wenn Claude mehrere Tools in einer Runde verwendet, teilen alle Nachrichten in dieser Runde die gleiche ID, daher deduplizieren Sie nach ID, um Doppelzählungen zu vermeiden.2
Die Ergebnis-Nachricht bietet die kumulative Schätzung
Wenn der
query() Aufruf abgeschlossen ist, gibt das SDK eine Ergebnis-Nachricht mit total_cost_usd und kumulativer usage aus. Dies ist in TypeScript (SDKResultMessage) und Python (ResultMessage) verfügbar. Wenn Sie mehrere query() Aufrufe tätigen (zum Beispiel in einer mehrstufigen Sitzung), spiegelt jedes Ergebnis nur die Kosten dieses einzelnen Aufrufs wider. Wenn Sie nur die geschätzte Summe benötigen, können Sie die Nutzung pro Schritt ignorieren und diesen einzelnen Wert lesen.Gesamtkosten einer Abfrage abrufen
Die Ergebnis-Nachricht (TypeScript, Python) markiert das Ende der Agent-Schleife für einenquery()-Aufruf. Sie enthält total_cost_usd, die geschätzte kumulative Kosten über alle Schritte in diesem Aufruf. Dies funktioniert sowohl für erfolgreiche als auch für Fehler-Ergebnisse. Wenn Sie Sitzungen verwenden, um mehrere query()-Aufrufe zu tätigen, spiegelt jedes Ergebnis nur die Kosten dieses einzelnen Aufrufs wider.
Die drei Felder auf Ergebnis-Ebene unterscheiden sich darin, was sie zählen, wenn der Agent Subagenten erzeugt. Verwenden Sie modelUsage oder model_usage in Python für die Gesamtbaum-Token-Abrechnung; das Feld usage unterschätzt, sobald Verschachtelung auftritt.
Die folgenden Beispiele durchlaufen den Nachrichtenstrom aus einem
query()-Aufruf und geben die Gesamtkosten aus, wenn die result-Nachricht ankommt: