|
17 | 17 | from openai.types.responses.response_function_call_arguments_delta_event import ResponseFunctionCallArgumentsDeltaEvent |
18 | 18 | from openai.types.responses.response_input_text import ResponseInputText |
19 | 19 | from openai.types.responses.response_item import ResponseItem |
| 20 | +from openai.types.responses.response_mcp_call_arguments_delta_event import ResponseMcpCallArgumentsDeltaEvent |
| 21 | +from openai.types.responses.response_mcp_call_arguments_done_event import ResponseMcpCallArgumentsDoneEvent |
20 | 22 | from openai.types.responses.response_output_item import ResponseOutputItem |
21 | 23 | from openai.types.responses.response_output_item_added_event import ResponseOutputItemAddedEvent |
22 | 24 | from openai.types.responses.response_output_item_done_event import ResponseOutputItemDoneEvent |
@@ -434,6 +436,37 @@ async def invoke_stream( |
434 | 436 | choice_index=request_index, |
435 | 437 | ) |
436 | 438 | all_messages.append(msg) |
| 439 | + # MCP-specific streaming of arguments |
| 440 | + case ResponseMcpCallArgumentsDeltaEvent(): |
| 441 | + if on_intermediate_message: |
| 442 | + mcp_arg_delta = FunctionCallContent( |
| 443 | + id=event.item_id, |
| 444 | + index=getattr(event, "index", None), # TODO: 要検証 |
| 445 | + arguments=event.delta, |
| 446 | + ) |
| 447 | + mcp_msg = cls._build_streaming_msg( |
| 448 | + agent=agent, |
| 449 | + metadata=metadata, |
| 450 | + event=event, |
| 451 | + items=[mcp_arg_delta], |
| 452 | + choice_index=request_index, |
| 453 | + ) |
| 454 | + await on_intermediate_message(mcp_msg) |
| 455 | + case ResponseMcpCallArgumentsDoneEvent(): |
| 456 | + if on_intermediate_message: |
| 457 | + mcp_args_done = FunctionCallContent( |
| 458 | + id=event.item_id, |
| 459 | + index=getattr(event, "index", None), # TODO: 要検証 |
| 460 | + arguments=event.arguments, |
| 461 | + ) |
| 462 | + mcp_msg = cls._build_streaming_msg( |
| 463 | + agent=agent, |
| 464 | + metadata=metadata, |
| 465 | + event=event, |
| 466 | + items=[mcp_args_done], |
| 467 | + choice_index=request_index, |
| 468 | + ) |
| 469 | + await on_intermediate_message(mcp_msg) |
437 | 470 | case ResponseTextDeltaEvent(): |
438 | 471 | text_content = StreamingTextContent( |
439 | 472 | text=event.delta, |
|
0 commit comments