mirror of
https://github.com/FoundationAgents/MetaGPT.git
synced 2026-06-17 15:35:21 +02:00
Merge pull request #577 from iorisa/feature/geekan/readme
feat: +Incremental Requirement & Fix Bug
This commit is contained in:
commit
7df636f8e5
9 changed files with 38 additions and 12 deletions
|
|
@ -1,7 +1,7 @@
|
|||
default_stages: [ commit ]
|
||||
|
||||
# Install
|
||||
# 1. pip install pre-commit
|
||||
# 1. pip install pre-commit isort black
|
||||
# 2. pre-commit install(the first time you download the repo, it will be cached for future use)
|
||||
repos:
|
||||
- repo: https://github.com/pycqa/isort
|
||||
|
|
|
|||
10
README.md
10
README.md
|
|
@ -92,6 +92,16 @@ ### QuickStart & Demo Video
|
|||
|
||||
https://github.com/geekan/MetaGPT/assets/34952977/34345016-5d13-489d-b9f9-b82ace413419
|
||||
|
||||
### Incremental Requirement & Fix Bug
|
||||
By using the following parameters, it is possible to iterate continuously on the project generated by MetaGPT.
|
||||
|
||||
| CLI Parameter Name | Value Type | Optional/Required | Description | Usage |
|
||||
|--------------------|------------| --------- |------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `--project-path` | path | Optional | The path where to load the project file from the previous version. | metagpt "BUG_FEEDBACK_XXX" --project-path "YOUR_PROJECT_FULL_PATH"<br/><br/>metagpt "INCREMENT_REQUIREMENTS" --project-path "YOUR_PROJECT_FULL_PATH" |
|
||||
| `--reqa-file` | File name | Optional | The name of the file for which to regenerate unit tests. This is a relative path based on the source code folder.<br/>`--reqa-file "main.py"` | metagpt --reqa-file "main.py |
|
||||
| `--project-name` | str | Optional | Specify the name of new project to be used. The project name must adhere to both folder and code variable naming conventions. | metagpt "NEW_REQUIREMENTS" --project-name "YOUR_PROJECT_NAME" |
|
||||
|
||||
|
||||
## Tutorial
|
||||
|
||||
- 🗒 [Online Document](https://docs.deepwisdom.ai/)
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ def dict_to_markdown(d, prefix="-", postfix="\n"):
|
|||
|
||||
class ActionNode:
|
||||
"""ActionNode is a tree of nodes."""
|
||||
|
||||
mode: str
|
||||
|
||||
# Action Context
|
||||
|
|
@ -70,8 +71,15 @@ class ActionNode:
|
|||
content: str
|
||||
instruct_content: BaseModel
|
||||
|
||||
def __init__(self, key: str, expected_type: Type, instruction: str, example: str, content: str = "",
|
||||
children: dict[str, "ActionNode"] = None):
|
||||
def __init__(
|
||||
self,
|
||||
key: str,
|
||||
expected_type: Type,
|
||||
instruction: str,
|
||||
example: str,
|
||||
content: str = "",
|
||||
children: dict[str, "ActionNode"] = None,
|
||||
):
|
||||
self.key = key
|
||||
self.expected_type = expected_type
|
||||
self.instruction = instruction
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ FULL_API_SPEC = ActionNode(
|
|||
key="Full API spec",
|
||||
expected_type=str,
|
||||
instruction="Describe all APIs using OpenAPI 3.0 spec that may be used by both frontend and backend. If front-end "
|
||||
"and back-end communication is not required, leave it blank.",
|
||||
"and back-end communication is not required, leave it blank.",
|
||||
example="openapi: 3.0.0 ...",
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -154,11 +154,15 @@ class WriteCodeReview(Action):
|
|||
code=iterative_code,
|
||||
filename=self.context.code_doc.filename,
|
||||
)
|
||||
cr_prompt = EXAMPLE_AND_INSTRUCTION.format(format_example=format_example, )
|
||||
cr_prompt = EXAMPLE_AND_INSTRUCTION.format(
|
||||
format_example=format_example,
|
||||
)
|
||||
logger.info(
|
||||
f"Code review and rewrite {self.context.code_doc.filename}: {i+1}/{k} | {len(iterative_code)=}, {len(self.context.code_doc.content)=}"
|
||||
)
|
||||
result, rewrited_code = await self.write_code_review_and_rewrite(context_prompt, cr_prompt, self.context.code_doc.filename)
|
||||
result, rewrited_code = await self.write_code_review_and_rewrite(
|
||||
context_prompt, cr_prompt, self.context.code_doc.filename
|
||||
)
|
||||
if "LBTM" in result:
|
||||
iterative_code = rewrited_code
|
||||
elif "LGTM" in result:
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ class Architect(Role):
|
|||
profile: str = "Architect",
|
||||
goal: str = "design a concise, usable, complete software system",
|
||||
constraints: str = "make sure the architecture is simple enough and use appropriate open source libraries."
|
||||
"Use same language as user requirement"
|
||||
"Use same language as user requirement",
|
||||
) -> None:
|
||||
"""Initializes the Architect with given attributes."""
|
||||
super().__init__(name, profile, goal, constraints)
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ class Engineer(Role):
|
|||
profile: str = "Engineer",
|
||||
goal: str = "write elegant, readable, extensible, efficient code",
|
||||
constraints: str = "the code should conform to standards like google-style and be modular and maintainable. "
|
||||
"Use same language as user requirement",
|
||||
"Use same language as user requirement",
|
||||
n_borg: int = 1,
|
||||
use_code_review: bool = False,
|
||||
) -> None:
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ class ProjectManager(Role):
|
|||
name: str = "Eve",
|
||||
profile: str = "Project Manager",
|
||||
goal: str = "break down tasks according to PRD/technical design, generate a task list, and analyze task "
|
||||
"dependencies to start with the prerequisite modules",
|
||||
"dependencies to start with the prerequisite modules",
|
||||
constraints: str = "use same language as user requirement",
|
||||
) -> None:
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
Section 2.2.3.3 of RFC 135.
|
||||
"""
|
||||
import warnings
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from metagpt.actions import UserRequirement
|
||||
|
|
@ -61,9 +62,12 @@ class Team(BaseModel):
|
|||
Deprecated: This method will be removed in the future.
|
||||
Please use the `run_project` method instead.
|
||||
"""
|
||||
warnings.warn("The 'start_project' method is deprecated and will be removed in the future. "
|
||||
"Please use the 'run_project' method instead.",
|
||||
DeprecationWarning, stacklevel=2)
|
||||
warnings.warn(
|
||||
"The 'start_project' method is deprecated and will be removed in the future. "
|
||||
"Please use the 'run_project' method instead.",
|
||||
DeprecationWarning,
|
||||
stacklevel=2,
|
||||
)
|
||||
return self.run_project(idea=idea, send_to=send_to)
|
||||
|
||||
def _save(self):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue