Class BDIPlanner
java.lang.Object
dev.langchain4j.agentic.patterns.bdi.BDIPlanner
- All Implemented Interfaces:
Planner
A Belief-Desire-Intention planner that maintains prioritized goals (
Desires) and
reactively switches between them as the AgenticScope evolves. On each step the planner
checks whether a strictly higher-priority desire has become achievable and, if so, preempts the
current intention and re-deliberates. Among desires with equal priority, the one declared first
in the list is selected (stable ordering).-
Constructor Summary
ConstructorsConstructorDescriptionBDIPlanner(List<Desire> desires) BDIPlanner(List<Desire> desires, int maxInvocations) -
Method Summary
Modifier and TypeMethodDescriptionReturns the planner's current execution state as a map of serializable values.firstAction(PlanningContext planningContext) voidinit(InitPlanningContext initPlanningContext) nextAction(PlanningContext planningContext) voidrestoreExecutionState(Map<String, Object> state) OnlyinvocationCounteris persisted.topology()
-
Constructor Details
-
BDIPlanner
-
BDIPlanner
-
-
Method Details
-
topology
-
init
-
firstAction
- Specified by:
firstActionin interfacePlanner
-
nextAction
- Specified by:
nextActionin interfacePlanner
-
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
OnlyinvocationCounteris persisted. On crash recovery the framework callsfirstAction(PlanningContext), which re-deliberates from scratch: satisfied desires are skipped, but the selected desire's intention restarts from its first agent — agents that already completed will run again. Intention agents must therefore be idempotent.- Specified by:
restoreExecutionStatein interfacePlanner- Parameters:
state- the previously saved execution state
-