Skip to content

Commit

Permalink
feat: + DI args error
Browse files Browse the repository at this point in the history
  • Loading branch information
莘权 马 committed Mar 31, 2024
1 parent d9f7073 commit 0bc3638
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 26 deletions.
25 changes: 7 additions & 18 deletions metagpt/logs.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

from __future__ import annotations

import json
import sys
from datetime import datetime
from functools import partial
Expand All @@ -17,7 +18,6 @@
from pydantic import BaseModel, Field

from metagpt.const import METAGPT_ROOT
from metagpt.schema import BaseEnum


class ToolOutputItem(BaseModel):
Expand All @@ -26,21 +26,6 @@ class ToolOutputItem(BaseModel):
value: str


class ToolName(str, BaseEnum):
Terminal = "Terminal"
Plan = "Plan"
Browser = "Browser"
Files = "Files"
WritePRD = "WritePRD"
WriteDesign = "WriteDesign"
WriteProjectPlan = "WriteProjectPlan"
WriteCode = "WriteCode"
WriteUntTest = "WriteUntTest"
FixBug = "FixBug"
GitArchive = "GitArchive"
ImportRepo = "ImportRepo"


def define_log_level(print_level="INFO", logfile_level="DEBUG", name: str = None):
"""Adjust the log level to above level"""
current_date = datetime.now()
Expand All @@ -66,7 +51,7 @@ def log_tool_output(output: ToolOutputItem | List[ToolOutputItem], tool_name: st
return

outputs = output if isinstance(output, list) else [output]
_tool_output_log(output=[i.model_dump() for i in outputs], tool_name=tool_name)
_tool_output_log(output=json.dumps([i.model_dump() for i in outputs]), tool_name=tool_name)


def set_llm_stream_logfunc(func):
Expand All @@ -82,4 +67,8 @@ def set_tool_output_logfunc(func):
_llm_stream_log = partial(print, end="")


_tool_output_log = partial(print, end="")
def _default_tool_output_log(*args, **kwargs):
print(*args, str(kwargs), end="")


_tool_output_log = _default_tool_output_log
22 changes: 20 additions & 2 deletions metagpt/schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@
SYSTEM_DESIGN_FILE_REPO,
TASK_FILE_REPO,
)
from metagpt.logs import log_tool_output, logger
from metagpt.repo_parser import DotClassInfo
from metagpt.utils.common import any_to_str, any_to_str_set, import_class
from metagpt.utils.exceptions import handle_exception
Expand Down Expand Up @@ -434,8 +433,12 @@ def add_tasks(self, tasks: list[Task]):
final_tasks = self.tasks[:prefix_length] + new_tasks[prefix_length:]
self.tasks = final_tasks

from metagpt.logs import ToolOutputItem, log_tool_output

log_tool_output(
{"output": "\n\n".join([f"Task {task.task_id}: {task.instruction}" for task in self.tasks])},
ToolOutputItem(
name="output", value="\n\n".join([f"Task {task.task_id}: {task.instruction}" for task in self.tasks])
),
tool_name="Plan",
)

Expand Down Expand Up @@ -814,3 +817,18 @@ def __new__(cls, value, desc=None):
obj._value_ = value
obj.desc = desc
return obj


class ToolName(str, BaseEnum):
Terminal = "Terminal"
Plan = "Plan"
Browser = "Browser"
Files = "Files"
WritePRD = "WritePRD"
WriteDesign = "WriteDesign"
WriteProjectPlan = "WriteProjectPlan"
WriteCode = "WriteCode"
WriteUntTest = "WriteUntTest"
FixBug = "FixBug"
GitArchive = "GitArchive"
ImportRepo = "ImportRepo"
16 changes: 10 additions & 6 deletions metagpt/tools/libs/software_development.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
from typing import Optional

from metagpt.const import BUGFIX_FILENAME, REQUIREMENT_FILENAME
from metagpt.logs import ToolName, ToolOutputItem, log_tool_output
from metagpt.schema import BugFixContext, Message
from metagpt.logs import ToolOutputItem, log_tool_output
from metagpt.schema import BugFixContext, Message, ToolName
from metagpt.tools.tool_registry import register_tool
from metagpt.utils.common import any_to_str

Expand Down Expand Up @@ -86,7 +86,8 @@ async def write_design(prd_path: str | Path) -> Path:
from metagpt.roles import Architect

ctx = Context()
project_path = Path(prd_path).parent.parent
prd_path = Path(prd_path)
project_path = (Path(prd_path) if not prd_path.is_file() else prd_path.parent) / "../.."
ctx.set_repo_dir(project_path)

role = Architect(context=ctx)
Expand Down Expand Up @@ -132,7 +133,8 @@ async def write_project_plan(system_design_path: str | Path) -> Path:
from metagpt.roles import ProjectManager

ctx = Context()
project_path = Path(system_design_path).parent.parent
system_design_path = Path(system_design_path)
project_path = (system_design_path if not system_design_path.is_file() else system_design_path.parent) / "../.."
ctx.set_repo_dir(project_path)

role = ProjectManager(context=ctx)
Expand Down Expand Up @@ -179,7 +181,8 @@ async def write_codes(task_path: str | Path, inc: bool = False) -> Path:

ctx = Context()
ctx.config.inc = inc
project_path = Path(task_path).parent.parent
task_path = Path(task_path)
project_path = (task_path if not task_path.is_file() else task_path.parent) / "../.."
ctx.set_repo_dir(project_path)

role = Engineer(context=ctx)
Expand Down Expand Up @@ -220,7 +223,8 @@ async def run_qa_test(src_path: str | Path) -> Path:
from metagpt.roles import QaEngineer

ctx = Context()
project_path = Path(src_path).parent
src_path = Path(src_path)
project_path = (src_path if not src_path.is_file() else src_path.parent) / ".."
ctx.set_repo_dir(project_path)
ctx.src_workspace = ctx.git_repo.workdir / ctx.git_repo.workdir.name

Expand Down

0 comments on commit 0bc3638

Please sign in to comment.