File size: 7,582 Bytes
d6eb336 424f6b7 d6eb336 424f6b7 d6eb336 424f6b7 d6eb336 dee299f d6eb336 dee299f 424f6b7 dee299f 424f6b7 dee299f 424f6b7 dee299f 424f6b7 dee299f 424f6b7 dee299f 424f6b7 dee299f 424f6b7 dee299f d6eb336 424f6b7 d6eb336 424f6b7 d6eb336 424f6b7 d6eb336 424f6b7 c33a68a d6eb336 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 |
name: "ReplanningFlow"
description: "Re-plan given old plan and new information"
_target_: Tachi67.ReplanningFlowModule.ReplanningFlow.instantiate_from_default_config
input_interface:
- "goal" # info on the old plan
- "plan" # the old plan
- "plan_file_location"
output_interface:
- "plan"
- "status"
- "summary"
- "result"
### Subflows specification
subflows_config:
Controller:
_target_: Tachi67.PlanWriterFlowModule.PlanWriterCtrlFlow.instantiate_from_default_config
backend:
api_infos: ???
model_name:
openai: gpt-4
azure: azure/gpt-4
input_interface_initialized:
- "new_plan"
- "feedback"
system_message_prompt_template:
_target_: langchain.PromptTemplate
template: |2-
You are in charge of a department of rewriting plans to solve a certain goal. You work with a re-planner, who does all the re-planning job.
You are not given the old plan, the planner is aware of the old plan, you do not need to care about the details of it.
Your **ONLY** task is to take the user's information about the old plan for you, to decide whether to call the re-planner to write or refine the plan, or to finish the current task.
When you need to call the plan writer, call the `write_plan` command with the goal specified.
When the plan is written and the user is satisfied, call the `finish` command to terminate the current process with a summary of what was done in one sentence.
Whenever you are in doubt, or need to confirm something to the user, call `ask_user` with the question.
You **must not** write plans yourself. You only decide whether to call the planner with specified goals or to finish.
Your workflow:
0. Whenever the user demands to quit or terminate the current process, call `manual_finish` command.
1. Upon user request, call the `write_plan` with the information given.
2. The planner will write the plan. The user will examine the plan, and provide feedback.
3. Depending on the feedback of the user:
3.1. The user provides feedback on how to change the plan, **call the planner with user's specific requirements again, to ask the planner to refine the plan**. Go back to step 2.
3.2. The user does not provide details about refining the plan, for example, just stating the fact that the user has updated the plan, **this means the user is satisfied with the plan written, call the `finish` command.**
3.3. The user is satisfied with the plan, **call the `finish` command with a summary of what was done**
If you have completed all your tasks, make sure to use the "finish" command, with a summary of what was done.
Constraints:
1. Exclusively use the commands listed in double quotes e.g. "command name"
Your response **MUST** be in the following format:
Response Format:
{
"command": "call plan writer, or to finish",
"command_args": {
"arg name": "value"
}
}
Ensure your responses can be parsed by Python json.loads
Available Functions:
{{commands}}
input_variables: [ "commands" ]
template_format: jinja2
human_message_prompt_template:
_target_: aiflows.prompt_template.JinjaPrompt
template: |2-
Here is the new plan written by the planner, it might have been updated by the user, depending on the user's feedback:
{{new_plan}}
Here is the feedback from the user:
{{feedback}}
input_variables:
- "new_plan"
- "feedback"
template_format: jinja2
init_human_message_prompt_template:
_target_: aiflows.prompt_template.JinjaPrompt
template: |2-
Here is the information about the old plan:
{{goal}}
input_variables:
- "goal"
template_format: jinja2
Executor:
_target_: aiflows.base_flows.BranchingFlow.instantiate_from_default_config
subflows_config:
write_plan:
_target_: Tachi67.InteractivePlanGenFlowModule.InteractivePlanGenFlow.instantiate_from_default_config
output_interface:
- "new_plan"
- "feedback"
- "temp_plan_file_location"
subflows_config:
PlanGenerator:
_target_: Tachi67.ReplanningFlowModule.NewPlanGenFlow.instantiate_from_default_config
backend:
api_infos: ???
model_name:
openai: gpt-4
azure: azure/gpt-4
PlanFileEditor:
_target_: Tachi67.PlanFileEditFlowModule.PlanFileEditAtomicFlow.instantiate_from_default_config
input_interface:
- "new_plan"
- "plan_file_location"
ParseFeedback:
_target_: Tachi67.ParseFeedbackFlowModule.ParseFeedbackAtomicFlow.instantiate_from_default_config
input_interface:
- "temp_plan_file_location"
output_interface:
- "new_plan"
- "feedback"
topology:
- goal: "Generate plan to achieve the task."
input_interface:
_target_: aiflows.interfaces.KeyInterface
additional_transformations:
- _target_: aiflows.data_transformations.KeyMatchInput
flow: PlanGenerator
reset: false
- goal: "Write the plan generated to a temp file with instructions to the user"
input_interface:
_target_: aiflows.interfaces.KeyInterface
additional_transformations:
- _target_: aiflows.data_transformations.KeyMatchInput
flow: PlanFileEditor
reset: false
- goal: "Parse user feedback from the temp file"
input_interface:
_target_: aiflows.interfaces.KeyInterface
additional_transformations:
- _target_: aiflows.data_transformations.KeyMatchInput
flow: ParseFeedback
output_interface:
_target_: aiflows.interfaces.KeyInterface
keys_to_rename:
plan: new_plan
reset: false
ask_user:
_target_: Tachi67.ReplanningFlowModule.ReplanningAskUserFlow.instantiate_from_default_config
early_exit_key: "EARLY_EXIT"
topology:
- goal: "Select the next action and prepare the input for the executor."
input_interface:
_target_: aiflows.interfaces.KeyInterface
additional_transformations:
- _target_: aiflows.data_transformations.KeyMatchInput
flow: Controller
output_interface:
_target_: ReplanningFlow.detect_finish_or_continue
reset: false
- goal: "Execute the action specified by the Controller."
input_interface:
_target_: aiflows.interfaces.KeyInterface
keys_to_rename:
command: branch
command_args: branch_input_data
keys_to_select: ["branch", "branch_input_data"]
flow: Executor
output_interface:
_target_: aiflows.interfaces.KeyInterface
keys_to_rename:
branch_output_data.new_plan: new_plan
branch_output_data.feedback: feedback
branch_output_data.temp_plan_file_location: temp_plan_file_location
keys_to_delete: ["branch_output_data"]
reset: false |