[BOT ISSUE] Anthropic server_tool_use usage metrics silently dropped
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 72/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Tranquilla
- Stack tecnologico
- ruby
- Ambito
- observability
Direzione di ricerca
Inizia in lib/braintrust/contrib/anthropic/instrumentation/common.rb, all'interno di parse_usage_tokens, e confronta come messages.rb e beta_messages.rb lo utilizzano per le risposte in streaming e non in streaming. Assicurati che il valore di utilizzo di server_tool_use.web_search_requests venga mantenuto nelle metriche di Braintrust, anche attraverso entrambi i percorsi di risposta.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
When Anthropic's built-in web search tool is used, the API returns a server_tool_use field in the usage object containing web_search_requests counts. The SDK's Common.parse_usage_tokens silently drops this field because it only maps 4 hardcoded usage fields. Users paying for web search ($10/1000 searches) have no visibility into their server-side tool usage through Braintrust metrics.
What is missing
The Anthropic Messages API returns usage like this when web search is active:
"usage": {
"input_tokens": 105,
"output_tokens": 6039,
"cache_read_input_tokens": 7123,
"cache_creation_input_tokens": 7345,
"server_tool_use": {
"web_search_requests": 1
}
}
Common.parse_usage_tokens (lines 22–27) only maps these fields:
| Anthropic field | Braintrust metric |
|---|---|
input_tokens |
prompt_tokens |
output_tokens |
completion_tokens |
cache_read_input_tokens |
prompt_cached_tokens |
cache_creation_input_tokens |
prompt_cache_creation_tokens |
The server_tool_use object is silently ignored. Any future server-side tool usage fields added by Anthropic will also be silently dropped.
Impact
- Web search is a stable, GA Anthropic feature with two tool versions (
web_search_20250305,web_search_20260209) - Each web search is billed at $10/1000 requests — a meaningful cost that users would want to track
- The
server_tool_usecontent block type already appears in responsecontentarrays (captured inbraintrust.output_json), but the aggregate usage count in theusageobject is lost
Braintrust docs status
not_found — The Braintrust Anthropic integration docs at https://www.braintrust.dev/docs/integrations/ai-providers/anthropic document metric collection including cached tokens, but do not mention server_tool_use or web search request tracking.
Upstream sources
- Anthropic web search tool docs: https://docs.anthropic.com/en/docs/agents-and-tools/tool-use/web-search-tool — documents the
server_tool_use.web_search_requestsusage field and pricing - Anthropic Messages API: https://docs.anthropic.com/en/api/messages —
usageobject in response includesserver_tool_use
Local repo files inspected
lib/braintrust/contrib/anthropic/instrumentation/common.rb—parse_usage_tokensmethod (lines 14–48) defines a 4-fieldfield_mapand skips all unrecognized keys vianext unless ... targetlib/braintrust/contrib/anthropic/instrumentation/messages.rb— callsCommon.parse_usage_tokensfor both streaming and non-streaming responseslib/braintrust/contrib/anthropic/instrumentation/beta_messages.rb— same pattern
- Lingua principale
- Ruby
- Stelle
- 9
- Fork
- 10
- Merge medio
- 3g 43m
- PR unite (30g)
- 9
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di braintrustdata/braintrust-sdk-ruby
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
[BOT ISSUE] OpenAI Chat Completions missing reasoning model and web search metadata parametersAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
-
ruby
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
-
ruby
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
Tutte le issue di braintrustdata/braintrust-sdk-ruby
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
scanaislop/aislop#482 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
-
ETQ admin, le select de condition d'une annotation répétable liste les champs publics deux foisAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
demarche-numerique/demarche.numerique.gouv.fr#14301 ·
I maintainer di solito rispondono entro 1 giorno
-
Wrong permissions for sqliteAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
voxpupuli/puppet-powerdns#251 ·