-
Notifications
You must be signed in to change notification settings - Fork 7.8k
Enable concurrent execution of agents in GraphFlow #6545
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@abhinav-aegis pls take a look thx |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #6545 +/- ##
==========================================
+ Coverage 75.40% 79.52% +4.12%
==========================================
Files 331 225 -106
Lines 19779 16623 -3156
Branches 406 0 -406
==========================================
- Hits 14914 13220 -1694
+ Misses 4592 3403 -1189
+ Partials 273 0 -273
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
...ckages/autogen-agentchat/src/autogen_agentchat/teams/_group_chat/_base_group_chat_manager.py
Outdated
Show resolved
Hide resolved
|
@ekzhu Nice. I will provide more comments next week if you still need. But one item that is not clear to me is where does locking happen - I obviously don't know core functionality well enough to see this. If multiple speakers are speaking in parallel, we wont know when they will finish executing. Are you able to guarantee that I think it might be very worthwhile adding a couple of tests to make sure this is working as expected - I saw a new test for saving and state and resuming but did not see one for this particular scenario. @jackgerrits Do agree that this is a major change and probably needs a version bump :) |
|
The base class makes sure there is only one handling of the agent response -- the lock is in the base class SequentialRoutedAgent |
Thx. Will check it out and give any additional comments if required. |
|
UPDATE: avoid breaking existing code by modifying |
Support concurrent execution in
GraphFlow:BaseGroupChatManager.select_speakerto return a union of a single string or a list of speaker name strings and added logics to check for currently activated speakers and only proceed to select next speakers when all activated speakers have finished.SelectorGroupChat) with the new signature, while still returning a single speaker in their implementations.GraphFlowto support multiple speakers selected.GraphFlowfor less dictionary gymnastic by using a queue and update usingupdate_message_thread.Example: a fan out graph:
Resolves:
#6541
#6533