Skip to content

Commit e4e467e

Browse files
qandrewcharlifu
authored andcommitted
[gpt-oss][1b] streaming add item id, content id (vllm-project#24788)
Signed-off-by: Andrew Xia <axia@meta.com> Signed-off-by: charlifu <charlifu@amd.com>
1 parent 526102c commit e4e467e

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

tests/entrypoints/openai/test_response_api_with_harmony.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,9 @@ async def test_streaming(client: OpenAI, model_name: str, background: bool):
318318
background=background,
319319
)
320320

321+
current_item_id = ""
322+
current_content_index = -1
323+
321324
events = []
322325
current_event_mode = None
323326
resp_id = None
@@ -329,6 +332,26 @@ async def test_streaming(client: OpenAI, model_name: str, background: bool):
329332
current_event_mode = event.type
330333
print(f"\n[{event.type}] ", end="", flush=True)
331334

335+
# verify current_item_id is correct
336+
if event.type == "response.output_item.added":
337+
assert event.item.id != current_item_id
338+
current_item_id = event.item.id
339+
elif event.type in [
340+
"response.output_text.delta",
341+
"response.reasoning_text.delta"
342+
]:
343+
assert event.item_id == current_item_id
344+
345+
# verify content_index_id is correct
346+
if event.type == "response.content_part.added":
347+
assert event.content_index != current_content_index
348+
current_content_index = event.content_index
349+
elif event.type in [
350+
"response.output_text.delta",
351+
"response.reasoning_text.delta"
352+
]:
353+
assert event.content_index == current_content_index
354+
332355
if "text.delta" in event.type:
333356
print(event.delta, end="", flush=True)
334357
elif "reasoning_text.delta" in event.type:

vllm/entrypoints/openai/serving_responses.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1260,9 +1260,9 @@ async def _process_harmony_streaming_events(
12601260
_increment_sequence_number_and_return: Callable[[BaseModel],
12611261
BaseModel],
12621262
) -> AsyncGenerator[BaseModel, None]:
1263-
current_content_index = 0 # FIXME: this number is never changed
1263+
current_content_index = -1
12641264
current_output_index = 0
1265-
current_item_id = "" # FIXME: this number is never changed
1265+
current_item_id: str = ""
12661266
sent_output_item_added = False
12671267

12681268
async for ctx in result_generator:
@@ -1353,6 +1353,7 @@ async def _process_harmony_streaming_events(
13531353
and ctx.parser.current_recipient is None):
13541354
if not sent_output_item_added:
13551355
sent_output_item_added = True
1356+
current_item_id = f"msg_{random_uuid()}"
13561357
yield _increment_sequence_number_and_return(
13571358
openai_responses_types.
13581359
ResponseOutputItemAddedEvent(
@@ -1368,6 +1369,7 @@ async def _process_harmony_streaming_events(
13681369
status="in_progress",
13691370
),
13701371
))
1372+
current_content_index += 1
13711373
yield _increment_sequence_number_and_return(
13721374
openai_responses_types.
13731375
ResponseContentPartAddedEvent(
@@ -1398,6 +1400,7 @@ async def _process_harmony_streaming_events(
13981400
and ctx.parser.current_recipient is None):
13991401
if not sent_output_item_added:
14001402
sent_output_item_added = True
1403+
current_item_id = f"msg_{random_uuid()}"
14011404
yield _increment_sequence_number_and_return(
14021405
openai_responses_types.
14031406
ResponseOutputItemAddedEvent(
@@ -1412,6 +1415,7 @@ async def _process_harmony_streaming_events(
14121415
status="in_progress",
14131416
),
14141417
))
1418+
current_content_index += 1
14151419
yield _increment_sequence_number_and_return(
14161420
openai_responses_types.
14171421
ResponseContentPartAddedEvent(
@@ -1444,6 +1448,7 @@ async def _process_harmony_streaming_events(
14441448
) and ctx.parser.current_recipient == "python":
14451449
if not sent_output_item_added:
14461450
sent_output_item_added = True
1451+
current_item_id = f"tool_{random_uuid()}"
14471452
yield _increment_sequence_number_and_return(
14481453
openai_responses_types.
14491454
ResponseOutputItemAddedEvent(
@@ -1516,6 +1521,7 @@ async def _process_harmony_streaming_events(
15161521
raise ValueError(
15171522
f"Unknown function name: {function_name}")
15181523

1524+
current_item_id = f"tool_{random_uuid()}"
15191525
yield _increment_sequence_number_and_return(
15201526
openai_responses_types.ResponseOutputItemAddedEvent(
15211527
type="response.output_item.added",

0 commit comments

Comments
 (0)