File size: 7,742 Bytes
4d1de3e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fd29476
 
 
4d1de3e
fd29476
4d1de3e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
license: mit
---

# Table of Contents

* [\_\_init\_\_](#__init__)
* [DemonstrationsAtomicFlow](#DemonstrationsAtomicFlow)
  * [DemonstrationsAtomicFlow](#DemonstrationsAtomicFlow.DemonstrationsAtomicFlow)
    * [instantiate\_from\_config](#DemonstrationsAtomicFlow.DemonstrationsAtomicFlow.instantiate_from_config)
    * [run](#DemonstrationsAtomicFlow.DemonstrationsAtomicFlow.run)
* [ChatWithDemonstrationsFlow](#ChatWithDemonstrationsFlow)
  * [ChatWithDemonstrationsFlow](#ChatWithDemonstrationsFlow.ChatWithDemonstrationsFlow)

<a id="__init__"></a>

# \_\_init\_\_

<a id="DemonstrationsAtomicFlow"></a>

# DemonstrationsAtomicFlow

<a id="DemonstrationsAtomicFlow.DemonstrationsAtomicFlow"></a>

## DemonstrationsAtomicFlow Objects

```python
class DemonstrationsAtomicFlow(AtomicFlow)
```

This class implements a Demonstrations Atomic Flow. It is a flow which is usually used to pass demonstrations (of user assistant interactions)

to the ChatAtomicFlow.

*Configuration Parameters*:

- `name` (str): The name of the flow. Default: "DemonstrationsAtomicFlow"
- `description` (str): A description of the flow. This description is used to generate the help message of the flow.
Default: "A flow that passes demonstrations to the ChatFlow"
- `data` (List[Dict[str, Any]]): The data of the demonstrations.
If data is None, the data is loaded from the file specified in the params["data_dir"].
Default: No default value this field must be set.
- `params` (Dict[str, Any]): The parameters specific to the dataset of the demonstrations. Its default parameters are:
    - `data_dir` (str): The directory where the demonstrations are stored. If the data is not directly passed to the flow through `data` then
    the data is loaded from this directory. Default: No default value this field must be set.
    - `demonstrations_id` (str): The id of the demonstrations (name of the data file). If the data is not directly passed to the flow through `data` then
    the data is loaded from this file. Default: No default value this field must be set.
    - `demonstrations_k` (int): The number of demonstrations to pass to the ChatFlow.
    If None, all the demonstrations are passed to the ChatFlow. Default: None
- `query_prompt_template` (Dict[str, Any]): The prompt template used to generate the query of the demonstrations. 
By default its of type aiflows.prompt_template.JinjaPrompt. None of the parameters of the prompt are defined by default and therefore need to be defined if one
wants to use the query_prompt_template. Default parameters are defined in aiflows.prompt_template.jinja2_prompts.JinjaPrompt.
- `response_prompt_template` (Dict[str, Any]): The prompt template used to generate the response of the demonstrations. By default its of type aiflows.prompt_template.JinjaPrompt.
None of the parameters of the prompt are defined by default and therefore need to be defined if one
wants to use the response_prompt_template. Default parameters are defined in aiflows.prompt_template.jinja2_prompts.JinjaPrompt.

*Input Interface*:

- The input interface expected by its successor flow (e.g. typically ChatAtomicFlow so the input interface is the one expected by ChatAtomicFlow)

*Output Interface*:

- The input interface expected by its successor flow (e.g. typically ChatAtomicFlow so the input interface expected by ChatAtomicFlow))
- `demonstrations` (List[Dict[str, Any]]): A list of demonstrations. Each demonstration is a dictionary with the following keys:
                                                - idx (int): The index of the demonstration
                                                - query (str): The query of the demonstration
                                                - response (str): The response of the demonstration

**Arguments**:

- `params` (`Dict[str, Any]`): The parameters specific to the dataset of the demonstrations. It must sould contain the following keys:
- 'data_dir' (str): The directory where the demonstrations are stored. This field is used if the data is not directly passed to the flow through the 'data' field.
- 'demonstrations_id' (str): The id of the demonstrations (name of the data file). This field is used if the data is not directly passed to the flow through the 'data' field.
- 'demonstrations_k' (int): The number of demonstrations to pass to the ChatFlow. If None, all the demonstrations are passed to the ChatFlow.
- 'ids_to_keep' (Optional[Union[str, List[str]]]): The ids of the demonstrations to keep. If None, all the demonstrations are kept.
- `query_prompt_template` (`JinjaPrompt`): The prompt template used to generate the query of the demonstrations.
- `response_prompt_template` (`JinjaPrompt`): The prompt template used to generate the response of the demonstrations.
- `data` (`Optional[List[Dict[str, Any]]]`): The data of the demonstrations. If None, the data is loaded from the file specified in the params.

<a id="DemonstrationsAtomicFlow.DemonstrationsAtomicFlow.instantiate_from_config"></a>

#### instantiate\_from\_config

```python
@classmethod
def instantiate_from_config(cls, config)
```

This method instantiates the flow from a config file.

**Arguments**:

- `config` (`Dict[str, Any]`): The configuration of the flow.

**Returns**:

`Flow`: The instantiated flow.

<a id="DemonstrationsAtomicFlow.DemonstrationsAtomicFlow.run"></a>

#### run

```python
def run(input_data: Dict[str, Any]) -> Dict[str, Any]
```

This method runs the flow. It returns the input data of the flow with the demonstrations added to it.

**Arguments**:

- `input_data` (`Dict[str, Any]`): The input data of the flow.

**Returns**:

`Dict[str, Any]`: The input data of the flow with the demonstrations added to it.

<a id="ChatWithDemonstrationsFlow"></a>

# ChatWithDemonstrationsFlow

<a id="ChatWithDemonstrationsFlow.ChatWithDemonstrationsFlow"></a>

## ChatWithDemonstrationsFlow Objects

```python
class ChatWithDemonstrationsFlow(SequentialFlow)
```

A Chat with Demonstrations Flow. It is a flow that consists of multiple sub-flows that are executed sequentially.

It's parent class is SequentialFlow.

    It Contains the following subflows:
        - A Demonstration Flow: It is a flow that passes demonstrations to the ChatFlow
        - A Chat Flow: It is a flow that uses the demonstrations to answer queries asked by the user/human.

An illustration of the flow is as follows:

            -------> Demonstration Flow -------> Chat Flow ------->

*Configuration Parameters*:

- `name` (str): The name of the flow. Default: "ChatAtomic_Flow_with_Demonstrations"
- `description` (str): A description of the flow. This description is used to generate the help message of the flow.
Default:  "A sequential flow that answers questions with demonstrations"
- `subflows_config` (Dict[str,Any]): A dictionary of subflows configurations of the sequential Flow. Default:
    - `Demonstration Flow`: The configuration of the Demonstration Flow. By default, it a DemonstrationsAtomicFlow.
    Its default parmaters are defined in DemonstrationsAtomicFlow).
    - `Chat Flow`: The configuration of the Chat Flow. By default, its a ChatAtomicFlow.
    Its default parmaters are defined in ChatAtomicFlowModule (see Flowcard, i.e. README.md, of ChatAtomicFlowModule).
- `topology` (str): The topology of the flow which is "sequential".  By default, the topology is the one shown in the
illustration above (the topology is also described in ChatWithDemonstrationsFlow.yaml).

*Input Interface*:

- `query` (str): A query asked to the flow (e.g. "What is the capital of France?")

Output Interface:

- `answer` (str): The answer of the flow to the query

**Arguments**:

- `\**kwargs`: Arguments to be passed to the parent class SequentialFlow constructor.