From 6d6b35d8b39727ad4a6736fe6005f8bc11a458b7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 19 May 2026 05:53:40 +0000 Subject: [PATCH] test: use public API for streaming structured output Agent-Logs-Url: https://github.com/microsoft/agent-framework/sessions/f62076ef-558d-49e8-8fe2-f38d527c9639 Co-authored-by: eavanvalkenburg <13749212+eavanvalkenburg@users.noreply.github.com> --- .../packages/openai/agent_framework_openai/_chat_client.py | 3 +++ .../packages/openai/tests/openai/test_openai_chat_client.py | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/python/packages/openai/agent_framework_openai/_chat_client.py b/python/packages/openai/agent_framework_openai/_chat_client.py index 75a9af765f..7fa68f1f86 100644 --- a/python/packages/openai/agent_framework_openai/_chat_client.py +++ b/python/packages/openai/agent_framework_openai/_chat_client.py @@ -619,6 +619,9 @@ class RawOpenAIChatClient( # type: ignore[misc] response_format: Any | None = None def _finalize_with_captured_format(updates: Sequence[ChatResponseUpdate]) -> ChatResponse[Any]: + # ResponseStream only calls the finalizer after iterating or draining `_stream()`, + # so `response_format` has already been populated from the validated request state + # unless request setup failed before streaming began. return self._finalize_response_updates(updates, response_format=response_format) async def _stream() -> AsyncIterable[ChatResponseUpdate]: diff --git a/python/packages/openai/tests/openai/test_openai_chat_client.py b/python/packages/openai/tests/openai/test_openai_chat_client.py index 170bcbdf95..31c3c26fe0 100644 --- a/python/packages/openai/tests/openai/test_openai_chat_client.py +++ b/python/packages/openai/tests/openai/test_openai_chat_client.py @@ -874,7 +874,11 @@ async def test_streaming_text_format_preserves_final_structured_output() -> None patch.object(client.client.responses, "stream", return_value=fake_stream_ctx), patch.object(client, "_get_metadata_from_response", return_value={}), ): - stream = client._inner_get_response(messages=[Message(role="user", contents=["Hi"])], options={}, stream=True) + stream = client.get_response( + messages=[Message(role="user", contents=["Hi"])], + options={"response_format": OutputStruct}, + stream=True, + ) response = await stream.get_final_response() assert response.model == "test-model"