From a807faa98d7c115e5d574a5c1d8fdc666acbb44d Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Thu, 8 Oct 2026 12:41:06 -0400 Subject: [PATCH 1/2] fix(mistral): capture usage service tier --- py/src/braintrust/integrations/mistral/test_mistral.py | 9 ++++++++- py/src/braintrust/integrations/mistral/tracing.py | 7 +++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/py/src/braintrust/integrations/mistral/test_mistral.py b/py/src/braintrust/integrations/mistral/test_mistral.py index 098ff3176..18262e444 100644 --- a/py/src/braintrust/integrations/mistral/test_mistral.py +++ b/py/src/braintrust/integrations/mistral/test_mistral.py @@ -289,7 +289,14 @@ def test_wrap_mistral_chat_complete_tool_spans(memory_logger): assert response.choices[0].message.tool_calls[0].function.name == "get_weather" spans = memory_logger.pop() - assert len(find_spans_by_type(spans, SpanTypeAttribute.LLM)) == 1 + llm_spans = find_spans_by_type(spans, SpanTypeAttribute.LLM) + assert len(llm_spans) == 1 + span = llm_spans[0] + service_tier = getattr(response.usage, "service_tier", None) + if service_tier is not None: + assert span["metadata"]["service_tier"] == service_tier + else: + assert "service_tier" not in span["metadata"] assert len(find_spans_by_type(spans, SpanTypeAttribute.TOOL)) == 1 diff --git a/py/src/braintrust/integrations/mistral/tracing.py b/py/src/braintrust/integrations/mistral/tracing.py index c32305822..caa61d3b1 100644 --- a/py/src/braintrust/integrations/mistral/tracing.py +++ b/py/src/braintrust/integrations/mistral/tracing.py @@ -45,6 +45,7 @@ def start_span(*args, **kwargs): } _CHAT_METADATA_KEYS = ( "model", + "service_tier", "temperature", "top_p", "max_tokens", @@ -65,6 +66,7 @@ def start_span(*args, **kwargs): ) _AGENTS_METADATA_KEYS = ( "agent_id", + "service_tier", "max_tokens", "stop", "random_seed", @@ -472,6 +474,11 @@ def _response_to_metadata(response: Any) -> dict[str, Any]: value = _get_value(response, key) if value is not None: metadata[key] = value + + service_tier = _get_value(_get_value(response, "usage"), "service_tier") + if service_tier is not None: + metadata["service_tier"] = service_tier + return metadata From d99af3bde5edd6b270e328db2d579e62a332b7e6 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Thu, 8 Oct 2026 12:48:16 -0400 Subject: [PATCH 2/2] fix(mistral): preserve requested service tier --- py/src/braintrust/integrations/mistral/test_mistral.py | 4 ++-- py/src/braintrust/integrations/mistral/tracing.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/py/src/braintrust/integrations/mistral/test_mistral.py b/py/src/braintrust/integrations/mistral/test_mistral.py index 18262e444..f3089ae7c 100644 --- a/py/src/braintrust/integrations/mistral/test_mistral.py +++ b/py/src/braintrust/integrations/mistral/test_mistral.py @@ -294,9 +294,9 @@ def test_wrap_mistral_chat_complete_tool_spans(memory_logger): span = llm_spans[0] service_tier = getattr(response.usage, "service_tier", None) if service_tier is not None: - assert span["metadata"]["service_tier"] == service_tier + assert span["metadata"]["usage_service_tier"] == service_tier else: - assert "service_tier" not in span["metadata"] + assert "usage_service_tier" not in span["metadata"] assert len(find_spans_by_type(spans, SpanTypeAttribute.TOOL)) == 1 diff --git a/py/src/braintrust/integrations/mistral/tracing.py b/py/src/braintrust/integrations/mistral/tracing.py index caa61d3b1..b8b2842ae 100644 --- a/py/src/braintrust/integrations/mistral/tracing.py +++ b/py/src/braintrust/integrations/mistral/tracing.py @@ -477,7 +477,7 @@ def _response_to_metadata(response: Any) -> dict[str, Any]: service_tier = _get_value(_get_value(response, "usage"), "service_tier") if service_tier is not None: - metadata["service_tier"] = service_tier + metadata["usage_service_tier"] = service_tier return metadata