File size: 3,409 Bytes
d01f657
 
 
 
0d430ff
 
 
d01f657
0d430ff
 
7ee7199
d01f657
 
 
 
 
 
 
 
795e9c8
81db56a
d01f657
 
 
 
 
 
 
 
0d430ff
d01f657
 
 
 
 
 
 
 
 
 
33af44a
d01f657
33af44a
7ee7199
d01f657
33af44a
d01f657
33af44a
 
d01f657
 
33af44a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d01f657
 
33af44a
d01f657
33af44a
d01f657
 
 
 
33af44a
d01f657
 
 
33af44a
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
import os

import hydra

from aiflows.backends.api_info import ApiInfo
from aiflows.messages import InputMessage
from aiflows.utils.general_helpers import read_yaml_file

from aiflows import logging
from aiflows.flow_cache import CACHING_PARAMETERS, clear_cache
from aiflows.utils.general_helpers import quick_load

CACHING_PARAMETERS.do_caching = False  # Set to True in order to disable caching
# clear_cache() # Uncomment this line to clear the cache

logging.set_verbosity_debug()
logging.auto_set_dir()

dependencies = [
    {"url": "aiflows/HumanStandardInputFlowModule", "revision": "4ff043522c89a964ea3a928ce09811c51a2b5b98"},
    {"url": "aiflows/ChatFlowModule", "revision": "297c90d08087d9ff3139521f11d1a48d7dc63ed4"},
    {"url": "Tachi67/ExtendLibraryFlowModule", "revision": "main"},
    {"url": "Tachi67/AbstractBossFlowModule", "revision": "main"},
    {"url": "Tachi67/MemoryReadingFlowModule", "revision": "main"},
    {"url": "Tachi67/PlanWriterFlowModule", "revision": "main"},
    {"url": "Tachi67/ReplanningFlowModule", "revision": "main"},
    {"url": "Tachi67/CodeWriterFlowModule", "revision": "main"},
]

from aiflows import flow_verse

flow_verse.sync_dependencies(dependencies)

if __name__ == "__main__":
    # ~~~ make sure to set the openai api key in the envs ~~~
    key = os.getenv("OPENAI_API_KEY")
    api_information = [ApiInfo(backend_used="openai", api_key=os.getenv("OPENAI_API_KEY"))]
    path_to_output_file = None

    current_dir = os.getcwd()
    cfg_path = os.path.join(current_dir, "ExtendLibraryFlow.yaml")
    cfg = read_yaml_file(cfg_path)
    # ~~~ setting api information into config ~~~
    quick_load(cfg, api_information)

    # ~~~ setting memory files into config ~~~
    code_lib_file_loc = os.path.join(current_dir, "library.py")
    plan_file_loc = os.path.join(current_dir, "plan_extlib.txt")
    logs_file_loc = os.path.join(current_dir, "logs_extlib.txt")
    with open(code_lib_file_loc, 'w') as file:
        pass
    with open(plan_file_loc, 'w') as file:
        pass
    with open(logs_file_loc, 'w') as file:
        pass
    memfiles_extlib = {}
    memfiles_writecode_interactivecoder = {}
    memfiles_writecode_test = {}
    memfiles_extlib["plan"] = plan_file_loc
    memfiles_extlib["logs"] = logs_file_loc
    memfiles_extlib["code_library"] = code_lib_file_loc
    memfiles_writecode_interactivecoder["code_library"] = code_lib_file_loc
    memfiles_writecode_test["code_library"] = code_lib_file_loc
    cfg["memory_files"] = memfiles_extlib
    cfg["subflows_config"]["CtrlExMem"]["subflows_config"]["Executor"]["subflows_config"]["write_code"]["subflows_config"]["Executor"]["subflows_config"]["write_code"]["memory_files"] = memfiles_writecode_interactivecoder
    cfg["subflows_config"]["CtrlExMem"]["subflows_config"]["Executor"]["subflows_config"]["write_code"]["subflows_config"]["Executor"]["subflows_config"]["test"]["memory_files"] = memfiles_writecode_test


    # ~~~ instantiating the flow and input data ~~~
    ExtendLibraryFlow = hydra.utils.instantiate(cfg, _recursive_=False, _convert_="partial")
    input_data = {
        "goal": "Write a function that adds up two numbers",
    }
    input_message = InputMessage.build(
        data_dict=input_data,
        src_flow="Launcher",
        dst_flow=ExtendLibraryFlow.name
    )

    # ~~~ calling the flow ~~~
    output_message = ExtendLibraryFlow(input_message)