Skip to content

Commit 7f4c45e

Browse files
committed
Python: Add MCP-specific streaming support for argument events
1 parent 5272beb commit 7f4c45e

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

python/semantic_kernel/agents/open_ai/responses_agent_thread_actions.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
from openai.types.responses.response_function_call_arguments_delta_event import ResponseFunctionCallArgumentsDeltaEvent
1818
from openai.types.responses.response_input_text import ResponseInputText
1919
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
2022
from openai.types.responses.response_output_item import ResponseOutputItem
2123
from openai.types.responses.response_output_item_added_event import ResponseOutputItemAddedEvent
2224
from openai.types.responses.response_output_item_done_event import ResponseOutputItemDoneEvent
@@ -434,6 +436,37 @@ async def invoke_stream(
434436
choice_index=request_index,
435437
)
436438
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)
437470
case ResponseTextDeltaEvent():
438471
text_content = StreamingTextContent(
439472
text=event.delta,

0 commit comments

Comments
 (0)