File size: 4,232 Bytes
b52b47e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
name: "AutoGPTFlow"
description: "An example implementation of AutoGPT with Flows."
max_rounds: 30
early_exit_key: "EARLY_EXIT"

### Information used by the default get_interface_description implementation
input_interface:
  - "goal"
output_interface:
  - "answer"
  - "status"

### Subflows specification
subflows_config:
  Controller:
    _target_: aiflows.ControllerExecutorFlowModule.ControllerAtomicFlow.instantiate_from_default_config
    finish:
      description: "Signal that the objective has been satisfied, and returns the answer to the user."
      input_args: ["answer"]
# E.g.,
#    commands:
#      wiki_search:
#        description: "Performs a search on Wikipedia."
#        input_args: ["search_term"]
#      ddg_search:
#        description: "Query the search engine DuckDuckGo."
#        input_args: ["query"]
    human_message_prompt_template:
      template: |2
        Potentially relevant information retrieved from your memory:
        {{memory}}
        =================
        Here is the response to your last action:
        {{observation}}
        Here is the feedback from the user:
        {{human_feedback}}
      input_variables:
        - "observation"
        - "human_feedback"
        - "memory"
    input_interface_initialized:
      - "observation"
      - "human_feedback"
      - "memory"

  Executor:
    _target_: flows.base_flows.BranchingFlow.instantiate_from_default_config
# E.g.,
#    subflows_config:
#      wiki_search:
#        _target_: .WikiSearchAtomicFlow.instantiate_from_default_config
#      ddg_search:
#        _target_: flows.application_flows.LCToolFlowModule.LCToolFlow.instantiate_from_default_config
#        backend:
#          _target_: langchain.tools.DuckDuckGoSearchRun

  HumanFeedback:
    _target_: aiflows.HumanStandardInputFlowModule.HumanStandardInputFlow.instantiate_from_default_config
    request_multi_line_input_flag: False
    query_message_prompt_template:
      template: |2-
        Please provide feedback on the last step. To quit type: "q".
        
        Relevant information:
        == Goal == 
        {{goal}}
        
        == Last Command ==
        {{command}}
        
        == Args
        {{command_args}}
        
        == Result
        {{observation}}
      input_variables:
        - "goal"
        - "command"
        - "command_args"
        - "observation"
    input_interface_initialized:
      - "goal"
      - "command"
      - "command_args"
      - "observation"

  Memory:
    _target_: aiflows.VectorStoreFlowModule.ChromaDBFlow.instantiate_from_default_config
    n_results: 2

topology:
  - goal: "Retrieve relevant information from memory."
    input_interface:
      _target_: AutoGPTFlow.prepare_memory_read_input # An interface defined as a function in the Flow class
    flow: Memory
    output_interface:
      _target_: AutoGPTFlow.prepare_memory_read_output
    reset: false

  - goal: "Select the next action and prepare the input for the executor."
    input_interface:
      _target_: flows.interfaces.KeyInterface
      additional_transformations:
        - _target_: flows.data_transformations.KeyMatchInput
    flow: Controller
    output_interface:
      _target_: AutoGPTFlow.detect_finish_or_continue # An interface defined as a function in the Flow class
    reset: false

  - goal: "Execute the action specified by the Controller."
    input_interface:
      _target_: flows.interfaces.KeyInterface
      keys_to_rename:
        command: branch
        command_args: branch_input_data
      keys_to_select: ["branch", "branch_input_data"]
    flow: Executor
    output_interface:
      _target_: flows.interfaces.KeyInterface
      keys_to_rename:
        branch_output_data: observation
      keys_to_select: ["observation"]
    reset: false

  - goal: "Ask the user for feedback."
    input_interface:
      _target_: flows.interfaces.KeyInterface
    flow: HumanFeedback
    output_interface:
      _target_: AutoGPTFlow.detect_finish_in_human_input
    reset: false

  - goal: "Write relevant information to memory"
    input_interface:
      _target_: AutoGPTFlow.prepare_memory_write_input  # An interface defined as a function in the Flow class
    flow: Memory
    reset: false