Skip to content

Commit c4d0b28

Browse files
committed
Fix mypy errors; still need to verify the sample
1 parent 494514c commit c4d0b28

File tree

9 files changed

+55
-34
lines changed

9 files changed

+55
-34
lines changed

python/samples/getting_started_with_agents/multi_agent_orchestration/step2b_sequential_streaming_agent_response_callback.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from semantic_kernel.agents import Agent, ChatCompletionAgent, SequentialOrchestration
66
from semantic_kernel.agents.runtime import InProcessRuntime
77
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
8-
from semantic_kernel.contents.streaming_chat_message_content import StreamingChatMessageContent
8+
from semantic_kernel.contents import StreamingChatMessageContent
99

1010
"""
1111
The following sample demonstrates how to create a sequential orchestration for

python/samples/getting_started_with_agents/multi_agent_orchestration/step4b_handoff_streaming_agent_response_callback.py

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,9 @@ def get_agents() -> tuple[list[Agent], OrchestrationHandoffs]:
132132
is_new_message = True
133133

134134

135-
def streaming_agent_response_callback(message: StreamingChatMessageContent, is_final: bool) -> None:
135+
def streaming_agent_response_callback(
136+
message: StreamingChatMessageContent | ChatMessageContent, is_final: bool
137+
) -> None:
136138
"""Observer function to print the messages from the agents.
137139
138140
Please note that this function is called whenever the agent generates a response,
@@ -143,24 +145,26 @@ def streaming_agent_response_callback(message: StreamingChatMessageContent, is_f
143145
complete message.
144146
145147
Args:
146-
message (StreamingChatMessageContent): The streaming message content from the agent.
148+
message (StreamingChatMessageContent | ChatMessageContent): The message content from the agent.
147149
is_final (bool): Indicates if this is the final part of the message.
148150
"""
149-
global is_new_message
150-
if is_new_message:
151+
if isinstance(message, StreamingChatMessageContent):
152+
global is_new_message
153+
if is_new_message:
154+
print(f"{message.name}: ", end="", flush=True)
155+
is_new_message = False
156+
print(message.content, end="", flush=True)
157+
158+
if is_final:
159+
print()
160+
is_new_message = True
161+
else:
151162
print(f"{message.name}: ", end="", flush=True)
152-
is_new_message = False
153-
print(message.content, end="", flush=True)
154-
155-
for item in message.items:
156-
if isinstance(item, FunctionCallContent):
157-
print(f"Calling '{item.name}' with arguments '{item.arguments}'", end="", flush=True)
158-
if isinstance(item, FunctionResultContent):
159-
print(f"Result from '{item.name}' is '{item.result}'", end="", flush=True)
160-
161-
if is_final:
162-
print()
163-
is_new_message = True
163+
for item in message.items:
164+
if isinstance(item, FunctionCallContent):
165+
print(f"Calling '{item.name}' with arguments '{item.arguments}'")
166+
if isinstance(item, FunctionResultContent):
167+
print(f"Result from '{item.name}' is '{item.result}'")
164168

165169

166170
def human_response_function() -> ChatMessageContent:

python/semantic_kernel/agents/orchestration/agent_actor_base.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ def __init__(
4444
agent: Agent,
4545
internal_topic_type: str,
4646
agent_response_callback: Callable[[DefaultTypeAlias], Awaitable[None] | None] | None = None,
47-
streaming_agent_response_callback: Callable[[StreamingChatMessageContent, bool], Awaitable[None] | None]
47+
streaming_agent_response_callback: Callable[
48+
[StreamingChatMessageContent | ChatMessageContent, bool], Awaitable[None] | None
49+
]
4850
| None = None,
4951
) -> None:
5052
"""Initialize the agent container.
@@ -82,20 +84,21 @@ async def _call_agent_response_callback(self, message: DefaultTypeAlias) -> None
8284

8385
async def _call_streaming_agent_response_callback(
8486
self,
85-
message_chunk: StreamingChatMessageContent,
87+
message: StreamingChatMessageContent | ChatMessageContent,
8688
is_final: bool,
8789
) -> None:
8890
"""Call the streaming_agent_response_callback function if it is set.
8991
9092
Args:
91-
message_chunk (StreamingChatMessageContent): The message chunk.
92-
is_final (bool): Whether this is the final chunk of the response.
93+
message (StreamingChatMessageContent | ChatMessageContent): The message. Can be either a full message
94+
or a chunk of a streaming message.
95+
is_final (bool): Whether this is the final chunk of the response (if it's a streaming chunk).
9396
"""
9497
if self._streaming_agent_response_callback:
9598
if inspect.iscoroutinefunction(self._streaming_agent_response_callback):
96-
await self._streaming_agent_response_callback(message_chunk, is_final)
99+
await self._streaming_agent_response_callback(message, is_final)
97100
else:
98-
self._streaming_agent_response_callback(message_chunk, is_final)
101+
self._streaming_agent_response_callback(message, is_final)
99102

100103
async def _invoke_agent(self, additional_messages: DefaultTypeAlias | None = None, **kwargs) -> ChatMessageContent:
101104
"""Invoke the agent with the current chat history or thread and optionally additional messages.
@@ -112,11 +115,11 @@ async def _invoke_agent(self, additional_messages: DefaultTypeAlias | None = Non
112115
messages = self._create_messages(additional_messages)
113116

114117
async for response_item in self._agent.invoke_stream(
115-
messages=messages,
118+
messages, # type: ignore[arg-type]
116119
thread=self._agent_thread,
117120
on_intermediate_message=self._handle_intermediate_message,
118121
**kwargs,
119-
): # type: ignore[arg-type]
122+
):
120123
# Buffer message chunks and stream them with correct is_final flag.
121124
streaming_message_buffer.append(response_item.message)
122125
if len(streaming_message_buffer) > 1:

python/semantic_kernel/agents/orchestration/concurrent.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ def __init__(
5757
internal_topic_type: str,
5858
collection_agent_type: str,
5959
agent_response_callback: Callable[[DefaultTypeAlias], Awaitable[None] | None] | None = None,
60-
streaming_agent_response_callback: Callable[[StreamingChatMessageContent, bool], Awaitable[None] | None]
60+
streaming_agent_response_callback: Callable[
61+
[StreamingChatMessageContent | ChatMessageContent, bool], Awaitable[None] | None
62+
]
6163
| None = None,
6264
) -> None:
6365
"""Initialize the agent actor.

python/semantic_kernel/agents/orchestration/group_chat.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,9 @@ def __init__(
384384
input_transform: Callable[[TIn], Awaitable[DefaultTypeAlias] | DefaultTypeAlias] | None = None,
385385
output_transform: Callable[[DefaultTypeAlias], Awaitable[TOut] | TOut] | None = None,
386386
agent_response_callback: Callable[[DefaultTypeAlias], Awaitable[None] | None] | None = None,
387-
streaming_agent_response_callback: Callable[[StreamingChatMessageContent, bool], Awaitable[None] | None]
387+
streaming_agent_response_callback: Callable[
388+
[StreamingChatMessageContent | ChatMessageContent, bool], Awaitable[None] | None
389+
]
388390
| None = None,
389391
) -> None:
390392
"""Initialize the group chat orchestration.

python/semantic_kernel/agents/orchestration/handoffs.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,9 @@ def __init__(
163163
handoff_connections: AgentHandoffs,
164164
result_callback: Callable[[DefaultTypeAlias], Awaitable[None]] | None = None,
165165
agent_response_callback: Callable[[DefaultTypeAlias], Awaitable[None] | None] | None = None,
166-
streaming_agent_response_callback: Callable[[StreamingChatMessageContent, bool], Awaitable[None] | None]
166+
streaming_agent_response_callback: Callable[
167+
[StreamingChatMessageContent | ChatMessageContent, bool], Awaitable[None] | None
168+
]
167169
| None = None,
168170
human_response_function: Callable[[], Awaitable[ChatMessageContent] | ChatMessageContent] | None = None,
169171
) -> None:
@@ -342,11 +344,11 @@ async def _invoke_agent_with_potentially_no_response(
342344
messages = self._create_messages(additional_messages)
343345

344346
async for response_item in self._agent.invoke_stream(
345-
messages=messages,
347+
messages, # type: ignore[arg-type]
346348
thread=self._agent_thread,
347349
on_intermediate_message=self._handle_intermediate_message,
348350
**kwargs,
349-
): # type: ignore[arg-type]
351+
):
350352
# Buffer message chunks and stream them with correct is_final flag.
351353
streaming_message_buffer.append(response_item.message)
352354
if len(streaming_message_buffer) > 1:
@@ -386,7 +388,9 @@ def __init__(
386388
input_transform: Callable[[TIn], Awaitable[DefaultTypeAlias] | DefaultTypeAlias] | None = None,
387389
output_transform: Callable[[DefaultTypeAlias], Awaitable[TOut] | TOut] | None = None,
388390
agent_response_callback: Callable[[DefaultTypeAlias], Awaitable[None] | None] | None = None,
389-
streaming_agent_response_callback: Callable[[StreamingChatMessageContent, bool], Awaitable[None] | None]
391+
streaming_agent_response_callback: Callable[
392+
[StreamingChatMessageContent | ChatMessageContent, bool], Awaitable[None] | None
393+
]
390394
| None = None,
391395
human_response_function: Callable[[], Awaitable[ChatMessageContent] | ChatMessageContent] | None = None,
392396
) -> None:

python/semantic_kernel/agents/orchestration/magentic.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -727,7 +727,9 @@ def __init__(
727727
input_transform: Callable[[TIn], Awaitable[DefaultTypeAlias] | DefaultTypeAlias] | None = None,
728728
output_transform: Callable[[DefaultTypeAlias], Awaitable[TOut] | TOut] | None = None,
729729
agent_response_callback: Callable[[DefaultTypeAlias], Awaitable[None] | None] | None = None,
730-
streaming_agent_response_callback: Callable[[StreamingChatMessageContent, bool], Awaitable[None] | None]
730+
streaming_agent_response_callback: Callable[
731+
[StreamingChatMessageContent | ChatMessageContent, bool], Awaitable[None] | None
732+
]
731733
| None = None,
732734
) -> None:
733735
"""Initialize the Magentic One orchestration.

python/semantic_kernel/agents/orchestration/orchestration_base.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,9 @@ def __init__(
9595
input_transform: Callable[[TIn], Awaitable[DefaultTypeAlias] | DefaultTypeAlias] | None = None,
9696
output_transform: Callable[[DefaultTypeAlias], Awaitable[TOut] | TOut] | None = None,
9797
agent_response_callback: Callable[[DefaultTypeAlias], Awaitable[None] | None] | None = None,
98-
streaming_agent_response_callback: Callable[[StreamingChatMessageContent, bool], Awaitable[None] | None]
98+
streaming_agent_response_callback: Callable[
99+
[StreamingChatMessageContent | ChatMessageContent, bool], Awaitable[None] | None
100+
]
99101
| None = None,
100102
) -> None:
101103
"""Initialize the orchestration base.

python/semantic_kernel/agents/orchestration/sequential.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@ def __init__(
4949
internal_topic_type: str,
5050
next_agent_type: str,
5151
agent_response_callback: Callable[[DefaultTypeAlias], Awaitable[None] | None] | None = None,
52-
streaming_agent_response_callback: Callable[[StreamingChatMessageContent, bool], Awaitable[None] | None]
52+
streaming_agent_response_callback: Callable[
53+
[StreamingChatMessageContent | ChatMessageContent, bool], Awaitable[None] | None
54+
]
5355
| None = None,
5456
) -> None:
5557
"""Initialize the agent actor."""

0 commit comments

Comments
 (0)