Skip to content

Commit 9724b70

Browse files
authored
fix(google_genai): preserve tool use tokens as metadata (#637)
- remove the nonstandard `tool_use_tokens` metric from Google Interactions spans - preserve the provider value as `metadata.total_tool_use_tokens`
1 parent 6bee0d6 commit 9724b70

2 files changed

Lines changed: 5 additions & 2 deletions

File tree

py/src/braintrust/integrations/google_genai/test_google_genai.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1656,6 +1656,8 @@ def test_interactions_create_and_get(memory_logger):
16561656
response.usage.total_output_tokens + response.usage.total_thought_tokens
16571657
)
16581658
assert create_span["metrics"]["tokens"] == response.usage.total_tokens
1659+
assert "tool_use_tokens" not in create_span["metrics"]
1660+
assert create_span["metadata"]["total_tool_use_tokens"] == response.usage.total_tool_use_tokens
16591661

16601662
assert get_span["input"]["id"] == response.id
16611663
assert get_span["metadata"]["interaction_id"] == response.id

py/src/braintrust/integrations/google_genai/tracing.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -527,8 +527,6 @@ def _extract_interaction_usage_metrics(usage: Any, metrics: dict[str, Any]) -> N
527527
metrics["prompt_cached_tokens"] = usage.total_cached_tokens
528528
if total_thought_tokens is not None:
529529
metrics["completion_reasoning_tokens"] = total_thought_tokens
530-
if hasattr(usage, "total_tool_use_tokens") and usage.total_tool_use_tokens is not None:
531-
metrics["tool_use_tokens"] = usage.total_tool_use_tokens
532530

533531

534532
def _extract_interaction_text(outputs: list[dict[str, Any]]) -> str | None:
@@ -599,6 +597,9 @@ def _extract_interaction_metadata(response: "Interaction") -> dict[str, Any]:
599597
"role": getattr(response, "role", None),
600598
"response_mime_type": getattr(response, "response_mime_type", None),
601599
"response_modalities": _materialize_interaction_value(getattr(response, "response_modalities", None)),
600+
"total_tool_use_tokens": (
601+
usage_serialized.get("total_tool_use_tokens") if isinstance(usage_serialized, dict) else None
602+
),
602603
"usage_by_modality": usage_by_modality,
603604
}
604605
)

0 commit comments

Comments
 (0)