-
Notifications
You must be signed in to change notification settings - Fork 5.2k
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
Dispatcher (aka "dynamic handoffs") design proposal #4739
Comments
Thanks @JMLX42! |
@rysweet could you please explain a bit more what you mean by that? |
@JMLX42 autogen_core is all about actor models reacting to events, so to model a handoff system you could define events for each task/request and events for task/request completion and define agents that consume those different events and I think you would not need agent chat - no real need for the agents to chat with one another vs just pass events to one another through the system. Note that I think to do this well with autogen_core we do need that "unsubscribe" api that is missing #4357 - coming soon. |
@rysweet by "define" you mean "write Python code"? If that's the case, that's exactly what this proposal wants to avoid. The goal is to handle dynamic scenarios where the agents need to pass information the developer has no prior knowledge of. For example, imagine an agent loading its tools from an API. The list of tools is not known in advance. Thus, if the handoffs between my agents are defined beforehand, they will only handle a fraction of the possible scenarios/outcome. In the example above, the I understand |
@rysweet I think having the issue as a design proposal is a great first step here. It gives us a bit more time to think about the implications. @JMLX42 thanks for the proposal. I think the continuous self-adaptation is interesting here. Do you think this idea of dynamic dispatcher is an orchestration-level consideration rather than at each individual agent level? For example, I have seen approaches to generate a complete agent team from a given task. There is a separate effort here: #4226 |
@ekzhu IMHO it works for both. The same If this kind of feature is too high level for |
I agree, same with tools. Making it an option to use collection type in the constructor argument and perform conversion internally if the input argument is not the collection type. Let's discuss these in our office hours? https://aka.ms/autogen-officehour, we can also use discord https://aka.ms/autogen-discord |
What feature would you like to be added?
Hello,
The current handoff system is very limiting. Specifically because the actual list of handoffs might change during the execution of the agentic system. But also because they have fixed messages that do not necessarily convey the exact goal/purpose of the handoff to the target agent.
In order to solve this, I propose an abstraction over
List[Handoff]
calledDispatcher
:With a
DynamicDispatcher
, it is then possible to create aDynamicDispatcherAgent
that will both:Note: this implementation is based on the Workbench proposal (cf #4721).
The following is then possible:
In this case, the
planning_agent
will create very specific handoffs to theworkbench_agent
:Why is this needed?
With the Workbench proposal (cf #4721), the list of tools can be made entirely dynamic. And with this new proposal, so are the handoffs.
This proposal effectively makes it possible to build completely dynamic agent systems. Only the list of agents in the team remains fixed by the developer (for now...).
Evolving Requirements: In autogen-driven agentic systems, the set of tasks and their requirements may change over time, making a static predefined list of handoffs insufficient.
Dynamic Adaptation: By allowing dynamic creation, modification, and removal of handoffs, agents can adapt to new goals, contexts, or discovered capabilities as the conversation or problem-solving session unfolds.
Flexible Messaging: Fixed, static messages often fail to convey the precise intent or context when a handoff is needed. Dynamic handoffs enable agents to craft more contextually relevant and informative messages, ensuring smoother collaboration between agents.
Authorized Targets: With a dynamic dispatcher, agents can be given a list of authorized targets, ensuring that only specific agents can receive certain handoffs. This maintains security and operational constraints while still allowing flexibility.
Enhanced Autonomy: Allowing agents to create and manage their own handoffs without human intervention fosters greater autonomy and richer workflows, ultimately making the autogen framework more powerful and scalable.
The text was updated successfully, but these errors were encountered: