Readme + demo
Browse files
README.md
CHANGED
|
@@ -1,18 +1,64 @@
|
|
| 1 |
---
|
| 2 |
license: mit
|
| 3 |
---
|
| 4 |
-
## Description
|
| 5 |
|
| 6 |
-
|
| 7 |
|
| 8 |
-
|
|
|
|
|
|
|
| 9 |
|
| 10 |
-
fixed_reply
|
| 11 |
|
| 12 |
-
|
| 13 |
|
| 14 |
-
|
| 15 |
|
| 16 |
-
##
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
|
| 18 |
-
fixed_reply (String): The string specifying the reply.
|
|
|
|
| 1 |
---
|
| 2 |
license: mit
|
| 3 |
---
|
|
|
|
| 4 |
|
| 5 |
+
# Table of Contents
|
| 6 |
|
| 7 |
+
* [fixed\_reply](#fixed_reply)
|
| 8 |
+
* [FixedReplyFlow](#fixed_reply.FixedReplyFlow)
|
| 9 |
+
* [run](#fixed_reply.FixedReplyFlow.run)
|
| 10 |
|
| 11 |
+
<a id="fixed_reply"></a>
|
| 12 |
|
| 13 |
+
# fixed\_reply
|
| 14 |
|
| 15 |
+
<a id="fixed_reply.FixedReplyFlow"></a>
|
| 16 |
|
| 17 |
+
## FixedReplyFlow Objects
|
| 18 |
+
|
| 19 |
+
```python
|
| 20 |
+
class FixedReplyFlow(AtomicFlow)
|
| 21 |
+
```
|
| 22 |
+
|
| 23 |
+
This class implements a FixedReplyFlow. It's used to reply with a fixed reply.
|
| 24 |
+
|
| 25 |
+
*Configuration Parameters*:
|
| 26 |
+
|
| 27 |
+
- `name` (str): The name of the flow.
|
| 28 |
+
|
| 29 |
+
- `description` (str): A description of the flow. This description is used to generate the help message of the flow.
|
| 30 |
+
|
| 31 |
+
- `fixed_reply` (str): The fixed reply to reply with.
|
| 32 |
+
|
| 33 |
+
- The other configuration parameters are inherited from the default configuration of AtomicFlow (see AtomicFlow)
|
| 34 |
+
|
| 35 |
+
*Input Interface*:
|
| 36 |
+
|
| 37 |
+
- None
|
| 38 |
+
|
| 39 |
+
Output Interface:
|
| 40 |
+
|
| 41 |
+
- `fixed_reply` (str): The fixed reply.
|
| 42 |
+
|
| 43 |
+
**Arguments**:
|
| 44 |
+
|
| 45 |
+
- `\**kwargs` (`Dict[str, Any]`): The keyword arguments passed to the AtomicFlow constructor. Among these is the flow_config which should also contain the "fixed_reply" key.
|
| 46 |
+
|
| 47 |
+
<a id="fixed_reply.FixedReplyFlow.run"></a>
|
| 48 |
+
|
| 49 |
+
#### run
|
| 50 |
+
|
| 51 |
+
```python
|
| 52 |
+
def run(input_data: Dict[str, Any]) -> Dict[str, Any]
|
| 53 |
+
```
|
| 54 |
+
|
| 55 |
+
Runs the FixedReplyFlow. It's used to reply with a fixed reply.
|
| 56 |
+
|
| 57 |
+
**Arguments**:
|
| 58 |
+
|
| 59 |
+
- `input_data` (`Dict[str, Any]`): The input data dictionary
|
| 60 |
+
|
| 61 |
+
**Returns**:
|
| 62 |
+
|
| 63 |
+
`Dict[str, Any]`: The fixed reply
|
| 64 |
|
|
|
demo.yaml
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
flow:
|
| 2 |
+
_target_: aiflows.FixedReplyFlowModule.FixedReplyFlow.instantiate_from_default_config
|
| 3 |
+
name: "FixedReplyFlow"
|
| 4 |
+
description: "A demo of the FixedReplyFlow."
|
| 5 |
+
fixed_reply: "This is a fixed reply."
|
| 6 |
+
|
fixed_reply.py
CHANGED
|
@@ -4,6 +4,29 @@ from flows.base_flows import AtomicFlow
|
|
| 4 |
|
| 5 |
|
| 6 |
class FixedReplyFlow(AtomicFlow):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
REQUIRED_KEYS_CONFIG = ["fixed_reply"]
|
| 8 |
|
| 9 |
__default_flow_config = {
|
|
@@ -16,6 +39,13 @@ class FixedReplyFlow(AtomicFlow):
|
|
| 16 |
|
| 17 |
def run(self,
|
| 18 |
input_data: Dict[str, Any]) -> Dict[str, Any]:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
|
| 20 |
return {"fixed_reply": self.flow_config["fixed_reply"]}
|
| 21 |
|
|
|
|
| 4 |
|
| 5 |
|
| 6 |
class FixedReplyFlow(AtomicFlow):
|
| 7 |
+
""" This class implements a FixedReplyFlow. It's used to reply with a fixed reply.
|
| 8 |
+
|
| 9 |
+
*Configuration Parameters*:
|
| 10 |
+
|
| 11 |
+
- `name` (str): The name of the flow.
|
| 12 |
+
|
| 13 |
+
- `description` (str): A description of the flow. This description is used to generate the help message of the flow.
|
| 14 |
+
|
| 15 |
+
- `fixed_reply` (str): The fixed reply to reply with.
|
| 16 |
+
|
| 17 |
+
- The other configuration parameters are inherited from the default configuration of AtomicFlow (see AtomicFlow)
|
| 18 |
+
|
| 19 |
+
*Input Interface*:
|
| 20 |
+
|
| 21 |
+
- None
|
| 22 |
+
|
| 23 |
+
Output Interface:
|
| 24 |
+
|
| 25 |
+
- `fixed_reply` (str): The fixed reply.
|
| 26 |
+
|
| 27 |
+
:param \**kwargs: The keyword arguments passed to the AtomicFlow constructor. Among these is the flow_config which should also contain the "fixed_reply" key.
|
| 28 |
+
:type \**kwargs: Dict[str, Any]
|
| 29 |
+
"""
|
| 30 |
REQUIRED_KEYS_CONFIG = ["fixed_reply"]
|
| 31 |
|
| 32 |
__default_flow_config = {
|
|
|
|
| 39 |
|
| 40 |
def run(self,
|
| 41 |
input_data: Dict[str, Any]) -> Dict[str, Any]:
|
| 42 |
+
""" Runs the FixedReplyFlow. It's used to reply with a fixed reply.
|
| 43 |
+
|
| 44 |
+
:param input_data: The input data dictionary
|
| 45 |
+
:type input_data: Dict[str, Any]
|
| 46 |
+
:return: The fixed reply
|
| 47 |
+
:rtype: Dict[str, Any]
|
| 48 |
+
"""
|
| 49 |
|
| 50 |
return {"fixed_reply": self.flow_config["fixed_reply"]}
|
| 51 |
|
run.py
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
|
| 3 |
+
import hydra
|
| 4 |
+
|
| 5 |
+
from flows.flow_launchers import FlowLauncher
|
| 6 |
+
from flows.utils.general_helpers import read_yaml_file
|
| 7 |
+
|
| 8 |
+
from flows import logging
|
| 9 |
+
from flows.flow_cache import CACHING_PARAMETERS
|
| 10 |
+
|
| 11 |
+
CACHING_PARAMETERS.do_caching = False # Set to True to enable caching
|
| 12 |
+
# clear_cache() # Uncomment this line to clear the cache
|
| 13 |
+
|
| 14 |
+
logging.set_verbosity_debug()
|
| 15 |
+
logging.auto_set_dir()
|
| 16 |
+
|
| 17 |
+
dependencies = [
|
| 18 |
+
{"url": "aiflows/FixedReplyFlowModule", "revision": os.getcwd()},
|
| 19 |
+
]
|
| 20 |
+
from flows import flow_verse
|
| 21 |
+
flow_verse.sync_dependencies(dependencies)
|
| 22 |
+
|
| 23 |
+
if __name__ == "__main__":
|
| 24 |
+
|
| 25 |
+
root_dir = "."
|
| 26 |
+
cfg_path = os.path.join(root_dir, "demo.yaml")
|
| 27 |
+
cfg = read_yaml_file(cfg_path)
|
| 28 |
+
flow_with_interfaces = {
|
| 29 |
+
"flow": hydra.utils.instantiate(cfg['flow'], _recursive_=False, _convert_="partial"),
|
| 30 |
+
"input_interface": (
|
| 31 |
+
None
|
| 32 |
+
if getattr(cfg, "input_interface", None) is None
|
| 33 |
+
else hydra.utils.instantiate(cfg['input_interface'], _recursive_=False)
|
| 34 |
+
),
|
| 35 |
+
"output_interface": (
|
| 36 |
+
None
|
| 37 |
+
if getattr(cfg, "output_interface", None) is None
|
| 38 |
+
else hydra.utils.instantiate(cfg['output_interface'], _recursive_=False)
|
| 39 |
+
),
|
| 40 |
+
}
|
| 41 |
+
|
| 42 |
+
# ~~~ Get the data ~~~
|
| 43 |
+
# This can be a list of samples
|
| 44 |
+
data = {"id": 0} # Add your data here
|
| 45 |
+
|
| 46 |
+
# ~~~ Run inference ~~~
|
| 47 |
+
path_to_output_file = None
|
| 48 |
+
# path_to_output_file = "output.jsonl" # Uncomment this line to save the output to disk
|
| 49 |
+
|
| 50 |
+
_, outputs = FlowLauncher.launch(
|
| 51 |
+
flow_with_interfaces=flow_with_interfaces,
|
| 52 |
+
data=data,
|
| 53 |
+
path_to_output_file=path_to_output_file,
|
| 54 |
+
)
|
| 55 |
+
|
| 56 |
+
# ~~~ Print the output ~~~
|
| 57 |
+
flow_output_data = outputs[0]
|
| 58 |
+
print(flow_output_data)
|