Merge pull request #112 from openai/pr112

Fix streaming in chat completions
This commit is contained in:
Rohan Mehta 2025-03-12 17:21:55 -07:00 committed by GitHub
commit 1670d409b0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 24 additions and 1 deletions

View file

@ -51,8 +51,10 @@ from openai.types.responses import (
ResponseOutputText,
ResponseRefusalDeltaEvent,
ResponseTextDeltaEvent,
ResponseUsage,
)
from openai.types.responses.response_input_param import FunctionCallOutput, ItemReference, Message
from openai.types.responses.response_usage import OutputTokensDetails
from .. import _debug
from ..agent_output import AgentOutputSchema
@ -405,7 +407,23 @@ class OpenAIChatCompletionsModel(Model):
for function_call in state.function_calls.values():
outputs.append(function_call)
final_response = response.model_copy(update={"output": outputs, "usage": usage})
final_response = response.model_copy()
final_response.output = outputs
final_response.usage = (
ResponseUsage(
input_tokens=usage.prompt_tokens,
output_tokens=usage.completion_tokens,
total_tokens=usage.total_tokens,
output_tokens_details=OutputTokensDetails(
reasoning_tokens=usage.completion_tokens_details.reasoning_tokens
if usage.completion_tokens_details
and usage.completion_tokens_details.reasoning_tokens
else 0
),
)
if usage
else None
)
yield ResponseCompletedEvent(
response=final_response,

View file

@ -107,6 +107,11 @@ async def test_stream_response_yields_events_for_text_content(monkeypatch) -> No
assert isinstance(completed_resp.output[0].content[0], ResponseOutputText)
assert completed_resp.output[0].content[0].text == "Hello"
assert completed_resp.usage, "usage should not be None"
assert completed_resp.usage.input_tokens == 7
assert completed_resp.usage.output_tokens == 5
assert completed_resp.usage.total_tokens == 12
@pytest.mark.allow_call_model_methods
@pytest.mark.asyncio