mirror of
https://github.com/FoundationAgents/MetaGPT.git
synced 2026-04-25 00:36:55 +02:00
update metagpt entry
This commit is contained in:
parent
f36a4ece63
commit
2c22a94aa4
5 changed files with 32 additions and 23 deletions
|
|
@ -63,6 +63,7 @@ class Config(CLIParams, YamlModel):
|
|||
|
||||
# Tool Parameters
|
||||
search: SearchConfig = SearchConfig()
|
||||
enable_search: bool = False
|
||||
browser: BrowserConfig = BrowserConfig()
|
||||
mermaid: MermaidConfig = MermaidConfig()
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,9 @@ from metagpt.roles.engineer import Engineer
|
|||
from metagpt.roles.qa_engineer import QaEngineer
|
||||
from metagpt.roles.searcher import Searcher
|
||||
from metagpt.roles.sales import Sales
|
||||
from metagpt.roles.di.data_analyst import DataAnalyst
|
||||
from metagpt.roles.di.team_leader import TeamLeader
|
||||
from metagpt.roles.di.engineer2 import Engineer2
|
||||
|
||||
|
||||
__all__ = [
|
||||
|
|
@ -25,4 +28,7 @@ __all__ = [
|
|||
"QaEngineer",
|
||||
"Searcher",
|
||||
"Sales",
|
||||
"DataAnalyst",
|
||||
"TeamLeader",
|
||||
"Engineer2",
|
||||
]
|
||||
|
|
|
|||
|
|
@ -127,8 +127,9 @@ class RoleZero(Role):
|
|||
"Plan.replace_task": self.planner.plan.replace_task,
|
||||
"RoleZero.ask_human": self.ask_human,
|
||||
"RoleZero.reply_to_human": self.reply_to_human,
|
||||
"SearchEnhancedQA.run": SearchEnhancedQA().run,
|
||||
}
|
||||
if self.config.enable_search:
|
||||
self.tool_execution_map["SearchEnhancedQA.run"] = SearchEnhancedQA().run
|
||||
self.tool_execution_map.update(
|
||||
{
|
||||
f"Browser.{i}": getattr(self.browser, i)
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ from pathlib import Path
|
|||
import typer
|
||||
|
||||
from metagpt.const import CONFIG_ROOT
|
||||
from metagpt.utils.common import any_to_str
|
||||
|
||||
app = typer.Typer(add_completion=False, pretty_exceptions_show_locals=False)
|
||||
|
||||
|
|
@ -31,10 +30,10 @@ def generate_repo(
|
|||
from metagpt.context import Context
|
||||
from metagpt.roles import (
|
||||
Architect,
|
||||
Engineer,
|
||||
DataAnalyst,
|
||||
Engineer2,
|
||||
ProductManager,
|
||||
ProjectManager,
|
||||
QaEngineer,
|
||||
TeamLeader,
|
||||
)
|
||||
from metagpt.team import Team
|
||||
|
||||
|
|
@ -45,19 +44,22 @@ def generate_repo(
|
|||
company = Team(context=ctx)
|
||||
company.hire(
|
||||
[
|
||||
TeamLeader(),
|
||||
ProductManager(),
|
||||
Architect(),
|
||||
ProjectManager(),
|
||||
Engineer2(),
|
||||
# ProjectManager(),
|
||||
DataAnalyst(),
|
||||
]
|
||||
)
|
||||
|
||||
if implement or code_review:
|
||||
company.hire([Engineer(n_borg=5, use_code_review=code_review)])
|
||||
|
||||
if run_tests:
|
||||
company.hire([QaEngineer()])
|
||||
if n_round < 8:
|
||||
n_round = 8 # If `--run-tests` is enabled, at least 8 rounds are required to run all QA actions.
|
||||
# if implement or code_review:
|
||||
# company.hire([Engineer(n_borg=5, use_code_review=code_review)])
|
||||
#
|
||||
# if run_tests:
|
||||
# company.hire([QaEngineer()])
|
||||
# if n_round < 8:
|
||||
# n_round = 8 # If `--run-tests` is enabled, at least 8 rounds are required to run all QA actions.
|
||||
else:
|
||||
stg_path = Path(recover_path)
|
||||
if not stg_path.exists() or not str(stg_path).endswith("team"):
|
||||
|
|
@ -67,8 +69,7 @@ def generate_repo(
|
|||
idea = company.idea
|
||||
|
||||
company.invest(investment)
|
||||
company.run_project(idea, send_to=any_to_str(ProductManager))
|
||||
asyncio.run(company.run(n_round=n_round))
|
||||
asyncio.run(company.run(n_round=n_round, idea=idea))
|
||||
|
||||
return ctx.kwargs.get("project_path")
|
||||
|
||||
|
|
|
|||
|
|
@ -14,13 +14,13 @@ from typing import Any, Optional
|
|||
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
|
||||
from metagpt.actions import UserRequirement
|
||||
from metagpt.const import MESSAGE_ROUTE_TO_ALL, SERDESER_PATH
|
||||
from metagpt.const import SERDESER_PATH
|
||||
from metagpt.context import Context
|
||||
from metagpt.environment import Environment
|
||||
from metagpt.environment.mgx.mgx_env import MGXEnv
|
||||
from metagpt.logs import logger
|
||||
from metagpt.roles import Role
|
||||
from metagpt.schema import UserMessage
|
||||
from metagpt.schema import Message
|
||||
from metagpt.utils.common import (
|
||||
NoMoneyException,
|
||||
read_json_file,
|
||||
|
|
@ -40,12 +40,15 @@ class Team(BaseModel):
|
|||
env: Optional[Environment] = None
|
||||
investment: float = Field(default=10.0)
|
||||
idea: str = Field(default="")
|
||||
use_mgx: bool = Field(default=True)
|
||||
|
||||
def __init__(self, context: Context = None, **data: Any):
|
||||
super(Team, self).__init__(**data)
|
||||
ctx = context or Context()
|
||||
if not self.env:
|
||||
if not self.env and not self.use_mgx:
|
||||
self.env = Environment(context=ctx)
|
||||
elif not self.env and self.use_mgx:
|
||||
self.env = MGXEnv(context=ctx)
|
||||
else:
|
||||
self.env.context = ctx # The `env` object is allocated by deserialization
|
||||
if "roles" in data:
|
||||
|
|
@ -101,10 +104,7 @@ class Team(BaseModel):
|
|||
self.idea = idea
|
||||
|
||||
# Human requirement.
|
||||
self.env.publish_message(
|
||||
UserMessage(content=idea, cause_by=UserRequirement, send_to=send_to or MESSAGE_ROUTE_TO_ALL),
|
||||
peekable=False,
|
||||
)
|
||||
self.env.publish_message(Message(content=idea))
|
||||
|
||||
def start_project(self, idea, send_to: str = ""):
|
||||
"""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue