| name: "Planner/Jarvis" |
| description: "Generates plan with interactions with the user, used for the coder class" |
|
|
| _target_: flow_modules.aiflows.JarvisFlowModule.Planner_JarvisFlow.instantiate_from_default_config |
|
|
| input_interface: |
| - "goal" |
| - "memory_files" |
|
|
| output_interface: |
| - "plan" |
| - "status" |
| - "summary" |
|
|
| |
| subflows_config: |
| Controller: |
| _target_: flow_modules.aiflows.PlanWriterFlowModule.PlanWriterCtrlFlow.instantiate_from_default_config |
| backend: |
| api_infos: ??? |
| model_name: |
| openai: gpt-4 |
| azure: azure/gpt-4 |
|
|
| Executor: |
| _target_: aiflows.base_flows.BranchingFlow.instantiate_from_default_config |
| subflows_config: |
| write_plan: |
| subflows_config: |
| PlanGenerator: |
| backend: |
| api_infos: ??? |
| model_name: |
| openai: gpt-4 |
| azure: azure/gpt-4 |
| system_message_prompt_template: |
| _target_: aiflows.prompt_template.JinjaPrompt |
| template: |2- |
| You are the planner for Jarvis, an intelligent agent able to achieve goals by writing and running code, you write step-by-step plans for Jarvis to follow and execute. |
| |
| Jarvis is capable of: |
| 1. Generating and running code, given a goal. |
| 2. Giving a final answer to the user when the goal is achieved, it is also possible that Jarvis is able to give a final answer without writing and running code. |
| |
| **Your task is: given a goal to achieve, decompose the goal into step-by-step plans for Jarvis, each step of your plan should ONLY involve one of the following: |
| 1. Write and run code with a given goal generated by you, the goal should be a sub-goal of the current goal, it should be nicely separated from other-subgoals. |
| 2. Give a final answer.** |
|
|
| Here are some criteria you should consider in order to write a good plan: |
| 1. The plan should be nicely separated into steps, each step should involve either writing & running code, or giving a final answer. |
| 2. Decompose the goal into sub-goals, each sub-goal should be nicely separated from other sub-goals, all the sub-goals should be logically linked in order to process each sub-goal to achieve the final goal. |
| |
| Performance Evaluation: |
| 1. Your plan must be as explicit, well-indented, and human-readable as possible. |
| 2. Your plan must be step-by-step with number indexes, each step involves either writing & running code or giving a final answer. |
| 3. You should make plans with as few steps as possible. |
| |
| |
| **Here is an example of a good plan:** |
| Goal: Send an email with the data of the weather in Paris of 19. Dec. 2021 to my friend. |
| Plan: |
| 1. Write and run code to get the data of the weather in Paris of 19. Dec. 2021. |
| 2. Write and run code to send an email with the data of the weather in Paris of 19. Dec. 2021 to my friend. |
| 3. Give a final answer to the user. |
|
|
| **It's important that you should only respond in JSON format as described below:** |
| Response Format: |
| { |
| "plan": "A well indented string, containing a step-by-step plan to finish the given goal", |
| } |
| Ensure your responses can be parsed by Python json.loads |
| **Make sure that the plan you generate is a well-indented human readable string, with numbered indexes for each step.** |
|
|
| PlanFileEditor: |
| _target_: flow_modules.aiflows.PlanFileEditFlowModule.PlanFileEditAtomicFlow.instantiate_from_default_config |
|
|
| ParseFeedback: |
| _target_: flow_modules.aiflows.ParseFeedbackFlowModule.ParseFeedbackAtomicFlow.instantiate_from_default_config |
| input_interface: |
| - "temp_plan_file_location" |
| output_interface: |
| - "plan" |
| - "feedback" |
|
|
| ask_user: |
| _target_: flow_modules.aiflows.PlanWriterFlowModule.PlanWriterAskUserFlow.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_: Planner_JarvisFlow.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.plan: 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 |