Class DecisionRouterPlanner
- All Implemented Interfaces:
Planner
DecisionModel choose which subagents handle a request. The input of the
decision is made of the arguments of the router agent itself, read from the AgenticScope.
Without an activation threshold, each subagent is an option of a single choice question, described by its name and description, and the planner invokes only the most probable subagent and returns its output.
With an activation threshold, the planner asks instead one yes/no question per subagent, all in the same request
("Should the agent '...' handle this request?"), invokes in parallel all the subagents whose probability of "yes"
is at least the threshold, and returns a map from the name of each invoked subagent to its output, so the method of
the router agent must return a Map, which is checked when the router is invoked. These probabilities are
independent of each other: several subagents can reach a high threshold, adding a subagent does not change the
probabilities of the others, and when no subagent reaches the threshold none is invoked and the result is an empty
map.
-
Constructor Summary
ConstructorsConstructorDescriptionDecisionRouterPlanner(DecisionModel decisionModel) Creates a router invoking only the subagent that the decision model considers the most probable.DecisionRouterPlanner(DecisionModel decisionModel, double activationThreshold) Creates a router asking the decision model, for each subagent, whether it should handle the request, and invoking in parallel all the subagents whose probability of "yes" is at least the given threshold. -
Method Summary
Modifier and TypeMethodDescriptionReturns the planner's current execution state as a map of serializable values.firstAction(PlanningContext planningContext) Returns the first action to execute when the planner starts (or resumes).voidinit(InitPlanningContext initPlanningContext) nextAction(PlanningContext planningContext) Determines the next action to execute based on the result of the previous agent invocation.voidrestoreExecutionState(Map<String, Object> state) Restores the planner's execution state from a previously saved map.topology()Returns the topology of the agentic system managed by this planner.
-
Constructor Details
-
DecisionRouterPlanner
Creates a router invoking only the subagent that the decision model considers the most probable.When the router is invoked, before asking the decision model, it fails with an
IllegalArgumentExceptionif the router agent is not a typed agent interface with at least one argument to send to the decision model, or if two subagents have the same name.- Parameters:
decisionModel- the decision model choosing the subagent to invoke- Throws:
IllegalArgumentException- ifdecisionModelisnull
-
DecisionRouterPlanner
Creates a router asking the decision model, for each subagent, whether it should handle the request, and invoking in parallel all the subagents whose probability of "yes" is at least the given threshold.The result of the router is then a map from the name of each invoked subagent to its output, so the method of the router agent must return a
Map(or aResultWithAgenticScopeof aMap). When the router is invoked, before asking the decision model, it fails with anIllegalArgumentExceptionif it does not, if the router agent is not a typed agent interface with at least one argument to send to the decision model, or if two subagents have the same name.- Parameters:
decisionModel- the decision model choosing the subagents to invokeactivationThreshold- the minimum probability of "yes" for a subagent to be invoked, strictly between 0 and 1- Throws:
IllegalArgumentException- ifdecisionModelisnull, or ifactivationThresholdis not strictly between 0 and 1
-
-
Method Details
-
init
-
firstAction
Description copied from interface:PlannerReturns the first action to execute when the planner starts (or resumes). Defaults to delegating toPlanner.nextAction(PlanningContext).- Specified by:
firstActionin interfacePlanner- Parameters:
planningContext- the current planning context- Returns:
- the first action to execute
-
nextAction
Description copied from interface:PlannerDetermines the next action to execute based on the result of the previous agent invocation.- Specified by:
nextActionin interfacePlanner- Parameters:
planningContext- the current planning context, including the previous agent's result- Returns:
- the next action to execute
-
executionState
Description copied from interface:PlannerReturns the planner's current execution state as a map of serializable values. This state is persisted to theAgenticScopeafter each agent invocation, enabling the planner to resume from the correct position after a crash.The returned state must be such that, when passed to
Planner.restoreExecutionState(Map)andPlanner.firstAction(PlanningContext)is called, the planner produces the correct resume action.Stateless planners (e.g., parallel, conditional) can use the default empty implementation.
- Specified by:
executionStatein interfacePlanner- Returns:
- a map of state entries to persist, or an empty map if no state needs saving
-
restoreExecutionState
Description copied from interface:PlannerRestores the planner's execution state from a previously saved map. Called by the execution loop beforePlanner.firstAction(PlanningContext)when recovering from a persisted scope.- Specified by:
restoreExecutionStatein interfacePlanner- Parameters:
state- the previously saved execution state
-
topology
Description copied from interface:PlannerReturns the topology of the agentic system managed by this planner.- Specified by:
topologyin interfacePlanner- Returns:
- the topology (defaults to
AgenticSystemTopology.SEQUENCE)
-