Structure of ReplanningFlow
goal (info on the old plan), plan (old plan), plan_file_location
|
v
+---------------+
| Controller | --------<<<<-----------+
+---------------+ |
| |
| (command, command args) |
| |
v |
+------------------+ |
| Executor | Each branch is an |
| (Tree Structure) | executor |
+------------------+ |
| ^
| (summary) |
| |
v |
| |
+-> goes back to the Controller>-+
Structure of the Executors:
+-------------------+
| Branching |
| Executor |
+-------------------+
/ \
/ \
/ \
/ \
write_plan ask_user
About the branches:
- ask_user: Ask user for info / confirmation, etc.
- write_plan: Generates plan (user edit is allowed) and fetches user feedback.
- The PlanGenerator of write_plan is replaced with NewPlanGenFlow to re-plan instead of write plan.
How it works: Controller calls write_plan until user is satisfied in the feedback, finish.
Table of Contents
run_replanning
ReplanningAskUserFlow
ReplanningAskUserFlow Objects
class ReplanningAskUserFlow(HumanStandardInputFlow)
Refer to: https://huggingface.co/Tachi67/ExtendLibraryFlowModule/blob/main/ExtLibAskUserFlow.py
NewPlanGenFlow
ReplanningFlow
ReplanningFlow Objects
class ReplanningFlow(PlanWriterFlow)
This flow inherits from PlanWriterFlow. By changing prompts and injecting proper information to the controller and the PlanGenerator, we are able to achieve the replanning.
Input Interface:
goal
(str): information on the old plan (e.g. what is wrong)plan
(str): the old planplan_file_location
(str): the location of the old plan file
Output Interface:
plan
(str): the new planstatus
: "finished" or "unfinished"summary
(str): summary of the flow, will be written to the log file of the caller flow.result
(str): result of the flow, will be passed to the controller of the caller flow.