diff --git a/sentry_sdk/integrations/openai.py b/sentry_sdk/integrations/openai.py index d4fe6e2c26..064a89e0c9 100644 --- a/sentry_sdk/integrations/openai.py +++ b/sentry_sdk/integrations/openai.py @@ -751,6 +751,8 @@ def new_iterator() -> "Iterator[ChatCompletionChunk]": data_buf[0].append(x.delta or "") if isinstance(x, ResponseCompletedEvent): + span.set_data(SPANDATA.GEN_AI_RESPONSE_MODEL, x.response.model) + _calculate_token_usage( input, x.response, @@ -798,6 +800,8 @@ async def new_iterator_async() -> "AsyncIterator[ChatCompletionChunk]": data_buf[0].append(x.delta or "") if isinstance(x, ResponseCompletedEvent): + span.set_data(SPANDATA.GEN_AI_RESPONSE_MODEL, x.response.model) + _calculate_token_usage( input, x.response, diff --git a/tests/integrations/openai/test_openai.py b/tests/integrations/openai/test_openai.py index 060600ee65..20aa7049de 100644 --- a/tests/integrations/openai/test_openai.py +++ b/tests/integrations/openai/test_openai.py @@ -2445,6 +2445,7 @@ async def test_ai_client_span_streaming_responses_async_api( expected_data = { "gen_ai.operation.name": "responses", + "gen_ai.response.model": "response-model-id", "gen_ai.response.streaming": True, "gen_ai.system": "openai", "gen_ai.response.time_to_first_token": mock.ANY, @@ -2769,6 +2770,8 @@ def test_streaming_responses_api( (span,) = transaction["spans"] assert span["op"] == "gen_ai.responses" + assert span["data"][SPANDATA.GEN_AI_RESPONSE_MODEL] == "response-model-id" + if send_default_pii and include_prompts: assert span["data"][SPANDATA.GEN_AI_REQUEST_MESSAGES] == '["hello"]' assert span["data"][SPANDATA.GEN_AI_RESPONSE_TEXT] == "hello world" @@ -2824,6 +2827,8 @@ async def test_streaming_responses_api_async( (span,) = transaction["spans"] assert span["op"] == "gen_ai.responses" + assert span["data"][SPANDATA.GEN_AI_RESPONSE_MODEL] == "response-model-id" + if send_default_pii and include_prompts: assert span["data"][SPANDATA.GEN_AI_REQUEST_MESSAGES] == '["hello"]' assert span["data"][SPANDATA.GEN_AI_RESPONSE_TEXT] == "hello world"