Spaces:
Running
Running
| #!/usr/bin/env python | |
| # -*- coding: utf-8 -*- | |
| import os | |
| from pathlib import Path | |
| from loguru import logger | |
| import metagpt | |
| def get_metagpt_package_root(): | |
| """Get the root directory of the installed package.""" | |
| package_root = Path(metagpt.__file__).parent.parent | |
| for i in (".git", ".project_root", ".gitignore"): | |
| if (package_root / i).exists(): | |
| break | |
| else: | |
| package_root = Path.cwd() | |
| logger.info(f"Package root set to {str(package_root)}") | |
| return package_root | |
| def get_metagpt_root(): | |
| """Get the project root directory.""" | |
| # Check if a project root is specified in the environment variable | |
| project_root_env = os.getenv("METAGPT_PROJECT_ROOT") | |
| if project_root_env: | |
| project_root = Path(project_root_env) | |
| logger.info(f"PROJECT_ROOT set from environment variable to {str(project_root)}") | |
| else: | |
| # Fallback to package root if no environment variable is set | |
| project_root = get_metagpt_package_root() | |
| return project_root | |
| # METAGPT PROJECT ROOT AND VARS | |
| CONFIG_ROOT = Path.home() / ".metagpt" | |
| METAGPT_ROOT = get_metagpt_root() # Dependent on METAGPT_PROJECT_ROOT | |
| DEFAULT_WORKSPACE_ROOT = METAGPT_ROOT / "workspace" | |
| EXAMPLE_PATH = METAGPT_ROOT / "examples" | |
| EXAMPLE_DATA_PATH = EXAMPLE_PATH / "data" | |
| DATA_PATH = METAGPT_ROOT / "data" | |
| DABENCH_PATH = EXAMPLE_PATH / "di/InfiAgent-DABench/data" | |
| EXAMPLE_BENCHMARK_PATH = EXAMPLE_PATH / "data/rag_bm" | |
| TEST_DATA_PATH = METAGPT_ROOT / "tests/data" | |
| RESEARCH_PATH = DATA_PATH / "research" | |
| TUTORIAL_PATH = DATA_PATH / "tutorial_docx" | |
| INVOICE_OCR_TABLE_PATH = DATA_PATH / "invoice_table" | |
| UT_PATH = DATA_PATH / "ut" | |
| SWAGGER_PATH = UT_PATH / "files/api/" | |
| UT_PY_PATH = UT_PATH / "files/ut/" | |
| API_QUESTIONS_PATH = UT_PATH / "files/question/" | |
| SERDESER_PATH = DEFAULT_WORKSPACE_ROOT / "storage" # TODO to store `storage` under the individual generated project | |
| TMP = METAGPT_ROOT / "tmp" | |
| SOURCE_ROOT = METAGPT_ROOT / "metagpt" | |
| PROMPT_PATH = SOURCE_ROOT / "prompts" | |
| SKILL_DIRECTORY = SOURCE_ROOT / "skills" | |
| TOOL_SCHEMA_PATH = METAGPT_ROOT / "metagpt/tools/schemas" | |
| TOOL_LIBS_PATH = METAGPT_ROOT / "metagpt/tools/libs" | |
| # REAL CONSTS | |
| MEM_TTL = 24 * 30 * 3600 | |
| MESSAGE_ROUTE_FROM = "sent_from" | |
| MESSAGE_ROUTE_TO = "send_to" | |
| MESSAGE_ROUTE_CAUSE_BY = "cause_by" | |
| MESSAGE_META_ROLE = "role" | |
| MESSAGE_ROUTE_TO_ALL = "<all>" | |
| MESSAGE_ROUTE_TO_NONE = "<none>" | |
| REQUIREMENT_FILENAME = "requirement.txt" | |
| BUGFIX_FILENAME = "bugfix.txt" | |
| PACKAGE_REQUIREMENTS_FILENAME = "requirements.txt" | |
| DOCS_FILE_REPO = "docs" | |
| PRDS_FILE_REPO = "docs/prd" | |
| SYSTEM_DESIGN_FILE_REPO = "docs/system_design" | |
| TASK_FILE_REPO = "docs/task" | |
| CODE_PLAN_AND_CHANGE_FILE_REPO = "docs/code_plan_and_change" | |
| COMPETITIVE_ANALYSIS_FILE_REPO = "resources/competitive_analysis" | |
| DATA_API_DESIGN_FILE_REPO = "resources/data_api_design" | |
| SEQ_FLOW_FILE_REPO = "resources/seq_flow" | |
| SYSTEM_DESIGN_PDF_FILE_REPO = "resources/system_design" | |
| PRD_PDF_FILE_REPO = "resources/prd" | |
| TASK_PDF_FILE_REPO = "resources/api_spec_and_task" | |
| CODE_PLAN_AND_CHANGE_PDF_FILE_REPO = "resources/code_plan_and_change" | |
| TEST_CODES_FILE_REPO = "tests" | |
| TEST_OUTPUTS_FILE_REPO = "test_outputs" | |
| CODE_SUMMARIES_FILE_REPO = "docs/code_summary" | |
| CODE_SUMMARIES_PDF_FILE_REPO = "resources/code_summary" | |
| RESOURCES_FILE_REPO = "resources" | |
| SD_OUTPUT_FILE_REPO = "resources/sd_output" | |
| GRAPH_REPO_FILE_REPO = "docs/graph_repo" | |
| VISUAL_GRAPH_REPO_FILE_REPO = "resources/graph_db" | |
| CLASS_VIEW_FILE_REPO = "docs/class_view" | |
| YAPI_URL = "http://yapi.deepwisdomai.com/" | |
| DEFAULT_LANGUAGE = "English" | |
| DEFAULT_MAX_TOKENS = 1500 | |
| COMMAND_TOKENS = 500 | |
| BRAIN_MEMORY = "BRAIN_MEMORY" | |
| SKILL_PATH = "SKILL_PATH" | |
| SERPER_API_KEY = "SERPER_API_KEY" | |
| DEFAULT_TOKEN_SIZE = 500 | |
| # format | |
| BASE64_FORMAT = "base64" | |
| # REDIS | |
| REDIS_KEY = "REDIS_KEY" | |
| # Message id | |
| IGNORED_MESSAGE_ID = "0" | |
| # Class Relationship | |
| GENERALIZATION = "Generalize" | |
| COMPOSITION = "Composite" | |
| AGGREGATION = "Aggregate" | |
| # Timeout | |
| USE_CONFIG_TIMEOUT = 0 # Using llm.timeout configuration. | |
| LLM_API_TIMEOUT = 300 | |