Skip to content

Commit 907d79a

Browse files
authored
[BREAKING] Python: Standardize orchestration outputs as list of ChatMessage. Allow agent as group chat manager. (#2291)
* Standardize orchestration outputs as list of chatmessage. Add chat options to group chat prompt manager * refactor group chat * Improve group chat manager * README Update * Cleanup * Add comment * More cleanup * Standardize termination condition for group chat * Improvements on termination logic * Fix tests * Fix new line * PR feedback * Update ChatKit based on OpenAI type change * Raise error if response format is not expected type * Only one starting executor required. Add tests. * Add magentic start executor test
1 parent ed53ba1 commit 907d79a

File tree

19 files changed

+1720
-569
lines changed

19 files changed

+1720
-569
lines changed

python/packages/chatkit/agent_framework_chatkit/_converter.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
EndOfTurnItem,
2828
HiddenContextItem,
2929
ImageAttachment,
30+
SDKHiddenContextItem,
3031
TaskItem,
3132
ThreadItem,
3233
UserMessageItem,
@@ -180,8 +181,10 @@ async def fetch_data(attachment_id: str) -> bytes:
180181
# Subclasses can override this method to provide custom handling
181182
return None
182183

183-
def hidden_context_to_input(self, item: HiddenContextItem) -> ChatMessage | list[ChatMessage] | None:
184-
"""Convert a ChatKit HiddenContextItem to Agent Framework ChatMessage(s).
184+
def hidden_context_to_input(
185+
self, item: HiddenContextItem | SDKHiddenContextItem
186+
) -> ChatMessage | list[ChatMessage] | None:
187+
"""Convert a ChatKit HiddenContextItem or SDKHiddenContextItem to Agent Framework ChatMessage(s).
185188
186189
This method is called internally by `to_agent_input()`. Override this method
187190
to customize how hidden context is converted.
@@ -522,6 +525,9 @@ async def _thread_item_to_input_item(
522525
case HiddenContextItem():
523526
out = self.hidden_context_to_input(item) or []
524527
return out if isinstance(out, list) else [out]
528+
case SDKHiddenContextItem():
529+
out = self.hidden_context_to_input(item) or []
530+
return out if isinstance(out, list) else [out]
525531
case _:
526532
assert_never(item)
527533

python/packages/chatkit/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ classifiers = [
2323
]
2424
dependencies = [
2525
"agent-framework-core",
26-
"openai-chatkit>=1.1.0,<2.0.0",
26+
"openai-chatkit>=1.4.0,<2.0.0",
2727
]
2828

2929
[tool.uv]

python/packages/core/agent_framework/_workflows/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@
6161
GroupChatDirective,
6262
GroupChatStateSnapshot,
6363
ManagerDirectiveModel,
64+
ManagerSelectionRequest,
65+
ManagerSelectionResponse,
6466
)
6567
from ._handoff import HandoffBuilder, HandoffUserInputRequest
6668
from ._magentic import (
@@ -147,6 +149,8 @@
147149
"MagenticPlanReviewReply",
148150
"MagenticPlanReviewRequest",
149151
"ManagerDirectiveModel",
152+
"ManagerSelectionRequest",
153+
"ManagerSelectionResponse",
150154
"Message",
151155
"OrchestrationState",
152156
"RequestInfoEvent",

0 commit comments

Comments
 (0)