File size: 1,962 Bytes
e00d074
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
name: "ChatInteractiveFlow"
description: "Flow that enables chatting between a ChatAtomicFlow and a user providing the input."

max_rounds: null # Run until early exit is detected

input_interface:
  _target_: flows.interfaces.KeyInterface
  
output_interface:
  - "end_of_interaction"
  - "answer"

subflows_config:
  Assistant:
    _target_: aiflows.ChatFlowModule.ChatAtomicFlow.instantiate_from_default_config
  User:
    _target_: aiflows.HumanStandardInputFlowModule.HumanStandardInputFlow.instantiate_from_default_config

topology:
  - goal: "Query the assistant"

    ### Input Interface
    input_interface:
      _target_: flows.interfaces.KeyInterface
      additional_transformations:
        - _target_: flows.data_transformations.KeyMatchInput

    ### Flow Specification
    flow: Assistant
    reset_every_round: false

    ### Output Interface
    output_interface:
      _target_: flows.interfaces.KeyInterface
      additional_transformations:
        - _target_: flows.data_transformations.PrintPreviousMessages

  - goal: "Ask the user for input"

    ### Input Interface
    input_interface:
      _target_: flows.interfaces.KeyInterface
      additional_transformations:
        - _target_: flows.data_transformations.KeyMatchInput

    ### Flow Specification
    flow: User
    reset_every_round: true

    ### Output Interface
    output_interface:
      _target_: flows.interfaces.KeyInterface
      keys_to_rename:
        human_input: query
      additional_transformations:
        - _target_: flows.data_transformations.RegexFirstOccurrenceExtractor
          regex: '(?<=```answer)([\s\S]*?)(?=```)'
          input_key: "query"
          output_key: "answer"
          strip: True
          assert_unique: True
        - _target_: flows.data_transformations.EndOfInteraction
          end_of_interaction_string: "<END>"
          input_key: "query"
          output_key: "end_of_interaction"

early_exit_key: "end_of_interaction"