Skip to content

Commit 1cfed81

Browse files
fix(openai): Always set gen_ai.response.streaming for Completions
1 parent 0e7078d commit 1cfed81

2 files changed

Lines changed: 7 additions & 5 deletions

File tree

sentry_sdk/integrations/openai.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -361,10 +361,6 @@ def _set_completions_api_input_data(
361361
if model is not None:
362362
span.set_data(SPANDATA.GEN_AI_REQUEST_MODEL, model)
363363

364-
stream = kwargs.get("stream")
365-
if stream is not None and _is_given(stream):
366-
span.set_data(SPANDATA.GEN_AI_RESPONSE_STREAMING, stream)
367-
368364
max_tokens = kwargs.get("max_tokens")
369365
if max_tokens is not None and _is_given(max_tokens):
370366
span.set_data(SPANDATA.GEN_AI_REQUEST_MAX_TOKENS, max_tokens)
@@ -614,12 +610,14 @@ def _new_chat_completion_common(f: "Any", *args: "Any", **kwargs: "Any") -> "Any
614610
span.__enter__()
615611

616612
span.set_data(SPANDATA.GEN_AI_SYSTEM, "openai")
613+
is_streaming_response = kwargs.get("stream", False)
614+
span.set_data(SPANDATA.GEN_AI_RESPONSE_STREAMING, is_streaming_response)
615+
617616
_set_completions_api_input_data(span, kwargs, integration)
618617

619618
start_time = time.perf_counter()
620619
response = yield f, args, kwargs
621620

622-
is_streaming_response = kwargs.get("stream", False)
623621
if is_streaming_response:
624622
_set_streaming_completions_api_output_data(
625623
span, response, kwargs, integration, start_time, finish_span=True

tests/integrations/openai/test_openai.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ def test_nonstreaming_chat_completion_no_prompts(
167167
span = tx["spans"][0]
168168
assert span["op"] == "gen_ai.chat"
169169
assert span["data"][SPANDATA.GEN_AI_SYSTEM] == "openai"
170+
assert span["data"][SPANDATA.GEN_AI_RESPONSE_STREAMING] is False
170171

171172
assert span["data"][SPANDATA.GEN_AI_REQUEST_MODEL] == "some-model"
172173
assert span["data"][SPANDATA.GEN_AI_REQUEST_MAX_TOKENS] == 100
@@ -259,6 +260,7 @@ def test_nonstreaming_chat_completion(sentry_init, capture_events, messages, req
259260
span = tx["spans"][0]
260261
assert span["op"] == "gen_ai.chat"
261262
assert span["data"][SPANDATA.GEN_AI_SYSTEM] == "openai"
263+
assert span["data"][SPANDATA.GEN_AI_RESPONSE_STREAMING] is False
262264

263265
assert span["data"][SPANDATA.GEN_AI_REQUEST_MODEL] == "some-model"
264266
assert span["data"][SPANDATA.GEN_AI_REQUEST_MAX_TOKENS] == 100
@@ -338,6 +340,7 @@ async def test_nonstreaming_chat_completion_async_no_prompts(
338340
span = tx["spans"][0]
339341
assert span["op"] == "gen_ai.chat"
340342
assert span["data"][SPANDATA.GEN_AI_SYSTEM] == "openai"
343+
assert span["data"][SPANDATA.GEN_AI_RESPONSE_STREAMING] is False
341344

342345
assert span["data"][SPANDATA.GEN_AI_REQUEST_MODEL] == "some-model"
343346
assert span["data"][SPANDATA.GEN_AI_REQUEST_MAX_TOKENS] == 100
@@ -430,6 +433,7 @@ async def test_nonstreaming_chat_completion_async(
430433
span = tx["spans"][0]
431434
assert span["op"] == "gen_ai.chat"
432435
assert span["data"][SPANDATA.GEN_AI_SYSTEM] == "openai"
436+
assert span["data"][SPANDATA.GEN_AI_RESPONSE_STREAMING] is False
433437

434438
assert span["data"][SPANDATA.GEN_AI_REQUEST_MODEL] == "some-model"
435439
assert span["data"][SPANDATA.GEN_AI_REQUEST_MAX_TOKENS] == 100

0 commit comments

Comments
 (0)