core/agent: surface openai responses stream error events

This commit is contained in:
2026-08-01 01:05:09 +08:00
parent 9aea91e77c
commit e29e66dbc7
3 changed files with 23 additions and 0 deletions
+6
View File
@@ -62,6 +62,12 @@ async def _stream_as_chat_chunks(
final: ResponseModel | None = None
async for event in stream:
etype = event.type
if etype == "error":
code = event.code if event.code is not UNSET else ""
message = event.message if event.message is not UNSET else ""
detail = message.strip() or code
label = detail.strip() or etype
raise RuntimeError(f"openai responses stream error: {label}") # noqa: TRY003 — transport failure
if etype == "response.output_text.delta" and isinstance(event.delta, str) and event.delta:
yield text_delta_chunk(model=model, content=event.delta)
continue
+3
View File
@@ -282,6 +282,9 @@ class ResponseStreamEvent(Struct, omit_defaults=True):
name: str | Unset = UNSET
arguments: str | Unset = UNSET
call_id: str | Unset = UNSET
# error events (type == "error")
code: str | Unset = UNSET
message: str | Unset = UNSET
# --- Helpers -----------------------------------------------------------------------
@@ -314,3 +314,17 @@ async def test_unknown_kind_not_implemented() -> None:
stream=False,
):
pass
async def test_dispatch_stream_raises_on_error_event() -> None:
import pytest
events = [
ResponseStreamEvent(type="error", code="server_error", message="boom"),
]
client = ScriptedResponsesClient(stream_events=[events])
param = ChatCompletionsParam(model="gpt-test", messages=[UserChatMessage(content="x")])
stream = await dispatch_responses(cast("Any", client), param, stream=True)
with pytest.raises(RuntimeError, match="boom"):
async for _ in cast("Any", stream):
pass