mirror of
https://github.com/OpenBMB/ChatDev.git
synced 2024-10-06 15:48:26 +03:00
69 lines
2.3 KiB
Python
69 lines
2.3 KiB
Python
|
|
import argparse
|
|
from graph import Graph
|
|
from experience import Experience
|
|
from utils import get_easyDict_from_filepath,now ,log_and_print_online
|
|
from memory import Memory
|
|
import sys
|
|
import os
|
|
import logging
|
|
sys.path.append(os.path.join(os.getcwd(),"ecl"))
|
|
|
|
|
|
def memorize(directory):
|
|
print(directory)
|
|
cfg = get_easyDict_from_filepath("./ecl/config.yaml")
|
|
|
|
folder_path = "ecl/logs"
|
|
if not os.path.exists(folder_path):
|
|
os.mkdir(folder_path)
|
|
log_filename = folder_path+"/ecl_{}.log".format(os.path.basename(directory))
|
|
print(log_filename)
|
|
root_logger = logging.getLogger()
|
|
for handler in root_logger.handlers[:]:
|
|
root_logger.removeHandler(handler)
|
|
file_handler = logging.FileHandler(log_filename, mode='w', encoding='utf-8')
|
|
formatter = logging.Formatter('[%(asctime)s %(levelname)s] %(message)s', datefmt='%Y-%d-%m %H:%M:%S')
|
|
file_handler.setFormatter(formatter)
|
|
root_logger.addHandler(file_handler)
|
|
root_logger.setLevel(logging.INFO)
|
|
|
|
log_and_print_online("[Config]:"+str(cfg))
|
|
graph = Graph()
|
|
graph.create_from_log(directory)
|
|
graph.print()
|
|
|
|
experience = Experience(graph, directory)
|
|
if len(graph.nodes)==0 or len(graph.edges) == 0:
|
|
log_and_print_online("No node or no edges constrcuted from the task execution process, maybe due to a unfinished software production or sometimes single node appears")
|
|
else:
|
|
if cfg.experience.reap_zombie:
|
|
experience.reap_zombie()
|
|
graph.print()
|
|
experience.estimate()
|
|
experiences = experience.extract_thresholded_experiences()
|
|
|
|
# memory upload
|
|
memory = Memory()
|
|
memory.upload()
|
|
memory.upload_from_experience(experience)
|
|
|
|
def process_directory(directory):
|
|
for root, dirs, files in os.walk(directory):
|
|
for directory in dirs:
|
|
file_path = os.path.join(root, directory)
|
|
memorize(file_path)
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="Memorize one software or softwares from the directory.")
|
|
parser.add_argument("path", help="The file or directory to process")
|
|
parser.add_argument("-d", "--directory", action="store_true", help="Process all files in the given directory.")
|
|
args = parser.parse_args()
|
|
|
|
if args.directory:
|
|
process_directory(args.path)
|
|
else:
|
|
memorize(args.path)
|
|
|
|
if __name__ == "__main__":
|
|
main() |