diff --git a/.gitignore b/.gitignore index f22e826a3..46c9b0dd4 100644 --- a/.gitignore +++ b/.gitignore @@ -29,7 +29,7 @@ share/python-wheels/ MANIFEST metagpt/tools/schemas/ examples/data/search_kb/*.json -sela/AutogluonModels +metagpt/ext/sela/AutogluonModels # PyInstaller # Usually these files are written by a python scripts from a template @@ -189,4 +189,4 @@ cov.xml *-structure.json *.dot .python-version -sela/results/* +metagpt/ext/sela/results/* diff --git a/sela/Greedy.py b/metagpt/ext/sela/Greedy.py similarity index 93% rename from sela/Greedy.py rename to metagpt/ext/sela/Greedy.py index 05bf1dfa5..c10c4248c 100644 --- a/sela/Greedy.py +++ b/metagpt/ext/sela/Greedy.py @@ -1,6 +1,6 @@ import random -from sela.MCTS import MCTS +from metagpt.ext.sela.MCTS import MCTS class Greedy(MCTS): diff --git a/sela/MCTS.py b/metagpt/ext/sela/MCTS.py similarity index 97% rename from sela/MCTS.py rename to metagpt/ext/sela/MCTS.py index 8368f3918..ac4b68024 100644 --- a/sela/MCTS.py +++ b/metagpt/ext/sela/MCTS.py @@ -8,12 +8,12 @@ import shutil import numpy as np import pandas as pd -from sela.data.custom_task import get_mle_bench_requirements, get_mle_task_id -from sela.data.dataset import generate_task_requirement, get_split_dataset_path -from sela.evaluation.evaluation import evaluate_score -from sela.insights.instruction_generator import InstructionGenerator -from sela.research_assistant import ResearchAssistant, TimeoutException -from sela.utils import get_exp_pool_path, load_execute_notebook, mcts_logger +from metagpt.ext.sela.data.custom_task import get_mle_bench_requirements, get_mle_task_id +from metagpt.ext.sela.data.dataset import generate_task_requirement, get_split_dataset_path +from metagpt.ext.sela.evaluation.evaluation import evaluate_score +from metagpt.ext.sela.insights.instruction_generator import InstructionGenerator +from metagpt.ext.sela.research_assistant import ResearchAssistant, TimeoutException +from metagpt.ext.sela.utils import get_exp_pool_path, load_execute_notebook, mcts_logger from metagpt.tools.tool_recommend import ToolRecommender from metagpt.utils.common import read_json_file diff --git a/sela/README.md b/metagpt/ext/sela/README.md similarity index 100% rename from sela/README.md rename to metagpt/ext/sela/README.md diff --git a/metagpt/ext/sela/data.yaml b/metagpt/ext/sela/data.yaml new file mode 100644 index 000000000..989a07966 --- /dev/null +++ b/metagpt/ext/sela/data.yaml @@ -0,0 +1,3 @@ +datasets_dir: "path/to/datasets" # path to the datasets directory +work_dir: ../workspace # path to the workspace directory +role_dir: storage/SELA # path to the role directory \ No newline at end of file diff --git a/sela/data/custom_task.py b/metagpt/ext/sela/data/custom_task.py similarity index 94% rename from sela/data/custom_task.py rename to metagpt/ext/sela/data/custom_task.py index cbbcd8f0e..3371d5b1c 100644 --- a/sela/data/custom_task.py +++ b/metagpt/ext/sela/data/custom_task.py @@ -1,7 +1,7 @@ import os -from sela.data.dataset import SPECIAL_INSTRUCTIONS -from sela.experimenter.mle_bench.instructions import ( +from metagpt.ext.sela.data.dataset import SPECIAL_INSTRUCTIONS +from metagpt.ext.sela.experimenter.mle_bench.instructions import ( ADDITIONAL_NOTES, INSTRUCTIONS, INSTRUCTIONS_OBFUSCATED, diff --git a/sela/data/dataset.py b/metagpt/ext/sela/data/dataset.py similarity index 99% rename from sela/data/dataset.py rename to metagpt/ext/sela/data/dataset.py index 7f5ead88b..ef4179011 100644 --- a/sela/data/dataset.py +++ b/metagpt/ext/sela/data/dataset.py @@ -9,8 +9,8 @@ import pandas as pd import yaml from sklearn.model_selection import train_test_split -from sela.insights.solution_designer import SolutionDesigner -from sela.utils import DATA_CONFIG +from metagpt.ext.sela.insights.solution_designer import SolutionDesigner +from metagpt.ext.sela.utils import DATA_CONFIG BASE_USER_REQUIREMENT = """ This is a {datasetname} dataset. Your goal is to predict the target column `{target_col}`. diff --git a/sela/data/hf_data.py b/metagpt/ext/sela/data/hf_data.py similarity index 96% rename from sela/data/hf_data.py rename to metagpt/ext/sela/data/hf_data.py index 355815628..9645796af 100644 --- a/sela/data/hf_data.py +++ b/metagpt/ext/sela/data/hf_data.py @@ -7,14 +7,14 @@ import pandas as pd from datasets import load_dataset from PIL import Image -from sela.data.dataset import ( +from metagpt.ext.sela.data.dataset import ( ExpDataset, parse_args, process_dataset, save_datasets_dict_to_yaml, ) -from sela.insights.solution_designer import SolutionDesigner -from sela.utils import DATA_CONFIG +from metagpt.ext.sela.insights.solution_designer import SolutionDesigner +from metagpt.ext.sela.utils import DATA_CONFIG HFDATSETS = [ {"name": "sms_spam", "dataset_name": "ucirvine/sms_spam", "target_col": "label", "modality": "text"}, diff --git a/sela/datasets.yaml b/metagpt/ext/sela/datasets.yaml similarity index 100% rename from sela/datasets.yaml rename to metagpt/ext/sela/datasets.yaml diff --git a/sela/evaluation/evaluation.py b/metagpt/ext/sela/evaluation/evaluation.py similarity index 100% rename from sela/evaluation/evaluation.py rename to metagpt/ext/sela/evaluation/evaluation.py diff --git a/sela/evaluation/visualize_mcts.py b/metagpt/ext/sela/evaluation/visualize_mcts.py similarity index 99% rename from sela/evaluation/visualize_mcts.py rename to metagpt/ext/sela/evaluation/visualize_mcts.py index 9a88937b4..62efed917 100644 --- a/sela/evaluation/visualize_mcts.py +++ b/metagpt/ext/sela/evaluation/visualize_mcts.py @@ -3,7 +3,7 @@ import textwrap import matplotlib.pyplot as plt import networkx as nx -from sela.MCTS import Node +from metagpt.ext.sela.MCTS import Node NODE_TEMPLATE = """\ [Node {id}] diff --git a/sela/experimenter/__init__.py b/metagpt/ext/sela/experimenter/__init__.py similarity index 100% rename from sela/experimenter/__init__.py rename to metagpt/ext/sela/experimenter/__init__.py diff --git a/sela/experimenter/aide.py b/metagpt/ext/sela/experimenter/aide.py similarity index 100% rename from sela/experimenter/aide.py rename to metagpt/ext/sela/experimenter/aide.py diff --git a/sela/experimenter/aug.py b/metagpt/ext/sela/experimenter/aug.py similarity index 89% rename from sela/experimenter/aug.py rename to metagpt/ext/sela/experimenter/aug.py index d19412b47..99b1e700a 100644 --- a/sela/experimenter/aug.py +++ b/metagpt/ext/sela/experimenter/aug.py @@ -1,7 +1,7 @@ -from sela.experimenter.experimenter import Experimenter -from sela.insights.instruction_generator import InstructionGenerator -from sela.research_assistant import ResearchAssistant -from sela.utils import get_exp_pool_path +from metagpt.ext.sela.experimenter.experimenter import Experimenter +from metagpt.ext.sela.insights.instruction_generator import InstructionGenerator +from metagpt.ext.sela.research_assistant import ResearchAssistant +from metagpt.ext.sela.utils import get_exp_pool_path EXPS_PROMPT = """ When doing the tasks, you can refer to the insights below: diff --git a/sela/experimenter/autogluon.py b/metagpt/ext/sela/experimenter/autogluon.py similarity index 98% rename from sela/experimenter/autogluon.py rename to metagpt/ext/sela/experimenter/autogluon.py index 7ea1b37f6..e7593cfb9 100644 --- a/sela/experimenter/autogluon.py +++ b/metagpt/ext/sela/experimenter/autogluon.py @@ -1,5 +1,5 @@ from datetime import datetime -from sela.experimenter.custom import CustomExperimenter +from metagpt.ext.sela.experimenter.custom import CustomExperimenter import os import pandas as pd diff --git a/sela/experimenter/autosklearn.py b/metagpt/ext/sela/experimenter/autosklearn.py similarity index 96% rename from sela/experimenter/autosklearn.py rename to metagpt/ext/sela/experimenter/autosklearn.py index 6079a6813..718e758d4 100644 --- a/sela/experimenter/autosklearn.py +++ b/metagpt/ext/sela/experimenter/autosklearn.py @@ -1,7 +1,7 @@ from datetime import datetime import pandas as pd -from sela.experimenter.custom import CustomExperimenter -from sela.evaluation.evaluation import evaluate_score +from metagpt.ext.sela.experimenter.custom import CustomExperimenter +from metagpt.ext.sela.evaluation.evaluation import evaluate_score from functools import partial diff --git a/sela/experimenter/custom.py b/metagpt/ext/sela/experimenter/custom.py similarity index 92% rename from sela/experimenter/custom.py rename to metagpt/ext/sela/experimenter/custom.py index f6dde6c59..4d69e286f 100644 --- a/sela/experimenter/custom.py +++ b/metagpt/ext/sela/experimenter/custom.py @@ -2,9 +2,9 @@ import os import pandas as pd -from sela.evaluation.evaluation import evaluate_score -from sela.experimenter.experimenter import Experimenter -from sela.MCTS import create_initial_state +from metagpt.ext.sela.evaluation.evaluation import evaluate_score +from metagpt.ext.sela.experimenter.experimenter import Experimenter +from metagpt.ext.sela.MCTS import create_initial_state class CustomExperimenter(Experimenter): diff --git a/sela/experimenter/experimenter.py b/metagpt/ext/sela/experimenter/experimenter.py similarity index 95% rename from sela/experimenter/experimenter.py rename to metagpt/ext/sela/experimenter/experimenter.py index 32a88016a..03671c9ff 100644 --- a/sela/experimenter/experimenter.py +++ b/metagpt/ext/sela/experimenter/experimenter.py @@ -5,10 +5,10 @@ import os import numpy as np import pandas as pd -from sela.evaluation.evaluation import evaluate_score -from sela.MCTS import create_initial_state -from sela.research_assistant import ResearchAssistant -from sela.utils import DATA_CONFIG, save_notebook +from metagpt.ext.sela.evaluation.evaluation import evaluate_score +from metagpt.ext.sela.MCTS import create_initial_state +from metagpt.ext.sela.research_assistant import ResearchAssistant +from metagpt.ext.sela.utils import DATA_CONFIG, save_notebook class Experimenter: diff --git a/sela/experimenter/mcts.py b/metagpt/ext/sela/experimenter/mcts.py similarity index 91% rename from sela/experimenter/mcts.py rename to metagpt/ext/sela/experimenter/mcts.py index 1065bd0d9..b83aa1392 100644 --- a/sela/experimenter/mcts.py +++ b/metagpt/ext/sela/experimenter/mcts.py @@ -1,13 +1,13 @@ import shutil -from sela.evaluation.evaluation import ( +from metagpt.ext.sela.evaluation.evaluation import ( node_evaluate_score_mlebench, node_evaluate_score_sela, ) -from sela.evaluation.visualize_mcts import get_tree_text -from sela.experimenter.experimenter import Experimenter -from sela.Greedy import Greedy, Random -from sela.MCTS import MCTS +from metagpt.ext.sela.evaluation.visualize_mcts import get_tree_text +from metagpt.ext.sela.experimenter.experimenter import Experimenter +from metagpt.ext.sela.Greedy import Greedy, Random +from metagpt.ext.sela.MCTS import MCTS class MCTSExperimenter(Experimenter): diff --git a/sela/experimenter/mle_bench/instructions.py b/metagpt/ext/sela/experimenter/mle_bench/instructions.py similarity index 98% rename from sela/experimenter/mle_bench/instructions.py rename to metagpt/ext/sela/experimenter/mle_bench/instructions.py index 515fd9d34..5c9c7b70f 100644 --- a/sela/experimenter/mle_bench/instructions.py +++ b/metagpt/ext/sela/experimenter/mle_bench/instructions.py @@ -8,7 +8,7 @@ You will be given a machine learning task. You must solve the task by training a BENCHMARK INSTRUCTIONS ------ -First, please read the instructions below which are specific to our benchmark setup. Note, these instructions can be found again in `sela.experimenter.mle_bench.instructions.py`. +First, please read the instructions below which are specific to our benchmark setup. Note, these instructions can be found again in `experimenter/mle_bench/instructions.py`. - **Competition-specific instructions**: The instructions for the competition are available in `{dataset_dir}/description.md`. Read this file to understand the problem setup for the competition you are currently solving. - **Dataset**: The dataset files for the competition are available in `{dataset_dir}`. @@ -28,7 +28,7 @@ You will be given a machine learning task. You must solve the task by training a BENCHMARK INSTRUCTIONS ------ -First, please read the instructions below which are specific to our benchmark setup. Note, these instructions can be found again in `sela.experimenter.mle_bench.instructions.py`. +First, please read the instructions below which are specific to our benchmark setup. Note, these instructions can be found again in `experimenter/mle_bench/instructions.py`. - **Task-specific instructions**: The instructions for the task are available in `{dataset_dir}/description.md`. Read this file to understand the problem setup for the task you are currently solving. - **Dataset**: The dataset files for the task are available in `{dataset_dir}/`. diff --git a/sela/insights/fixed_insights.json b/metagpt/ext/sela/insights/fixed_insights.json similarity index 100% rename from sela/insights/fixed_insights.json rename to metagpt/ext/sela/insights/fixed_insights.json diff --git a/sela/insights/instruction_generator.py b/metagpt/ext/sela/insights/instruction_generator.py similarity index 97% rename from sela/insights/instruction_generator.py rename to metagpt/ext/sela/insights/instruction_generator.py index 90555761b..d5d24c74d 100644 --- a/sela/insights/instruction_generator.py +++ b/metagpt/ext/sela/insights/instruction_generator.py @@ -3,8 +3,8 @@ import os import random from difflib import SequenceMatcher -from sela.insights.solution_designer import SolutionDesigner -from sela.utils import clean_json_from_rsp, load_data_config, mcts_logger +from metagpt.ext.sela.insights.solution_designer import SolutionDesigner +from metagpt.ext.sela.utils import clean_json_from_rsp, load_data_config, mcts_logger from metagpt.llm import LLM from metagpt.schema import Message diff --git a/sela/insights/solution_designer.py b/metagpt/ext/sela/insights/solution_designer.py similarity index 98% rename from sela/insights/solution_designer.py rename to metagpt/ext/sela/insights/solution_designer.py index 6685f1ed5..1b61c2141 100644 --- a/sela/insights/solution_designer.py +++ b/metagpt/ext/sela/insights/solution_designer.py @@ -1,6 +1,6 @@ import json -from sela.utils import clean_json_from_rsp, load_data_config +from metagpt.ext.sela.utils import clean_json_from_rsp, load_data_config from metagpt.llm import LLM DATA_CONFIG = load_data_config() diff --git a/sela/requirements.txt b/metagpt/ext/sela/requirements.txt similarity index 100% rename from sela/requirements.txt rename to metagpt/ext/sela/requirements.txt diff --git a/sela/research_assistant.py b/metagpt/ext/sela/research_assistant.py similarity index 99% rename from sela/research_assistant.py rename to metagpt/ext/sela/research_assistant.py index 45326a28a..5ce1be68e 100644 --- a/sela/research_assistant.py +++ b/metagpt/ext/sela/research_assistant.py @@ -6,7 +6,7 @@ import os from pydantic import model_validator -from sela.utils import mcts_logger, save_notebook +from metagpt.ext.sela.utils import mcts_logger, save_notebook from metagpt.actions.di.write_analysis_code import WriteAnalysisCode from metagpt.const import SERDESER_PATH from metagpt.roles.di.data_interpreter import DataInterpreter diff --git a/sela/run_experiment.py b/metagpt/ext/sela/run_experiment.py similarity index 88% rename from sela/run_experiment.py rename to metagpt/ext/sela/run_experiment.py index 168dc2160..4dbb1a4ef 100644 --- a/sela/run_experiment.py +++ b/metagpt/ext/sela/run_experiment.py @@ -1,13 +1,13 @@ import argparse import asyncio -from sela.data.custom_task import get_mle_is_lower_better, get_mle_task_id -from sela.experimenter.aug import AugExperimenter -from sela.experimenter.autogluon import GluonExperimenter -from sela.experimenter.autosklearn import AutoSklearnExperimenter -from sela.experimenter.custom import CustomExperimenter -from sela.experimenter.experimenter import Experimenter -from sela.experimenter.mcts import MCTSExperimenter +from metagpt.ext.sela.data.custom_task import get_mle_is_lower_better, get_mle_task_id +from metagpt.ext.sela.experimenter.aug import AugExperimenter +from metagpt.ext.sela.experimenter.autogluon import GluonExperimenter +from metagpt.ext.sela.experimenter.autosklearn import AutoSklearnExperimenter +from metagpt.ext.sela.experimenter.custom import CustomExperimenter +from metagpt.ext.sela.experimenter.experimenter import Experimenter +from metagpt.ext.sela.experimenter.mcts import MCTSExperimenter def get_args(cmd=True): diff --git a/sela/scripts/run_cls.sh b/metagpt/ext/sela/scripts/run_cls.sh similarity index 100% rename from sela/scripts/run_cls.sh rename to metagpt/ext/sela/scripts/run_cls.sh diff --git a/sela/scripts/run_cls_mod.sh b/metagpt/ext/sela/scripts/run_cls_mod.sh similarity index 100% rename from sela/scripts/run_cls_mod.sh rename to metagpt/ext/sela/scripts/run_cls_mod.sh diff --git a/sela/scripts/run_reg.sh b/metagpt/ext/sela/scripts/run_reg.sh similarity index 100% rename from sela/scripts/run_reg.sh rename to metagpt/ext/sela/scripts/run_reg.sh diff --git a/sela/scripts/visualize_experiment.py b/metagpt/ext/sela/scripts/visualize_experiment.py similarity index 67% rename from sela/scripts/visualize_experiment.py rename to metagpt/ext/sela/scripts/visualize_experiment.py index 4b93b9f61..4133942fc 100644 --- a/sela/scripts/visualize_experiment.py +++ b/metagpt/ext/sela/scripts/visualize_experiment.py @@ -1,9 +1,9 @@ import networkx as nx -from sela.evaluation.visualize_mcts import build_tree_recursive, visualize_tree -from sela.MCTS import MCTS, create_initial_state, initialize_di_root_node -from sela.run_experiment import get_args -from sela.utils import DATA_CONFIG +from metagpt.ext.sela.evaluation.visualize_mcts import build_tree_recursive, visualize_tree +from metagpt.ext.sela.MCTS import MCTS, create_initial_state, initialize_di_root_node +from metagpt.ext.sela.run_experiment import get_args +from metagpt.ext.sela.utils import DATA_CONFIG if __name__ == "__main__": args = get_args() diff --git a/sela/utils.py b/metagpt/ext/sela/utils.py similarity index 100% rename from sela/utils.py rename to metagpt/ext/sela/utils.py diff --git a/sela/data.yaml b/sela/data.yaml deleted file mode 100644 index 4c6549490..000000000 --- a/sela/data.yaml +++ /dev/null @@ -1,3 +0,0 @@ -datasets_dir: "D:/work/automl/datasets" # path to the datasets directory -work_dir: ../workspace # path to the workspace directory -role_dir: storage/SELA # path to the role directory \ No newline at end of file