mirror of
https://github.com/FoundationAgents/MetaGPT.git
synced 2026-06-08 15:05:17 +02:00
refactor: exists 改 legacy
This commit is contained in:
parent
b0bafc12d4
commit
04e72c0597
4 changed files with 32 additions and 32 deletions
|
|
@ -62,7 +62,7 @@ class WriteDesign(Action):
|
|||
*,
|
||||
user_requirement: str = "",
|
||||
prd_filename: str = "",
|
||||
exists_design_filename: str = "",
|
||||
legacy_design_filename: str = "",
|
||||
extra_info: str = "",
|
||||
output_path: str = "",
|
||||
**kwargs,
|
||||
|
|
@ -73,7 +73,7 @@ class WriteDesign(Action):
|
|||
Args:
|
||||
user_requirement (str): The user's requirements for the system design.
|
||||
prd_filename (str, optional): The filename of the Product Requirement Document (PRD).
|
||||
exists_design_filename (str, optional): The filename of the existing design document.
|
||||
legacy_design_filename (str, optional): The filename of the legacy design document.
|
||||
extra_info (str, optional): Additional information to be included in the system design.
|
||||
output_path (str, optional): The output path where the system design should be saved.
|
||||
|
||||
|
|
@ -92,9 +92,9 @@ class WriteDesign(Action):
|
|||
# Modify an exists system design.
|
||||
>>> user_requirement = "Your user requirements"
|
||||
>>> extra_info = "Your extra information"
|
||||
>>> exists_design_filename = "/path/to/exists/design/filename"
|
||||
>>> legacy_design_filename = "/path/to/exists/design/filename"
|
||||
>>> action = WriteDesign()
|
||||
>>> result = await action.run(user_requirement=user_requirement, extra_info=extra_info, exists_design_filename=exists_design_filename)
|
||||
>>> result = await action.run(user_requirement=user_requirement, extra_info=extra_info, legacy_design_filename=legacy_design_filename)
|
||||
>>> print(result.content)
|
||||
The design is balabala...
|
||||
|
||||
|
|
@ -111,9 +111,9 @@ class WriteDesign(Action):
|
|||
>>> user_requirement = "Your user requirements"
|
||||
>>> extra_info = "Your extra information"
|
||||
>>> prd_filename = "/path/to/prd/filename"
|
||||
>>> exists_design_filename = "/path/to/exists/design/filename"
|
||||
>>> legacy_design_filename = "/path/to/exists/design/filename"
|
||||
>>> action = WriteDesign()
|
||||
>>> result = await action.run(user_requirement=user_requirement, extra_info=extra_info, exists_design_filename=exists_design_filename, prd_filename=prd_filename)
|
||||
>>> result = await action.run(user_requirement=user_requirement, extra_info=extra_info, legacy_design_filename=legacy_design_filename, prd_filename=prd_filename)
|
||||
>>> print(result.content)
|
||||
The design is balabala...
|
||||
|
||||
|
|
@ -129,10 +129,10 @@ class WriteDesign(Action):
|
|||
# Modify an exists system design and save to the directory.
|
||||
>>> user_requirement = "Your user requirements"
|
||||
>>> extra_info = "Your extra information"
|
||||
>>> exists_design_filename = "/path/to/exists/design/filename"
|
||||
>>> legacy_design_filename = "/path/to/exists/design/filename"
|
||||
>>> output_path = "/path/to/save/"
|
||||
>>> action = WriteDesign()
|
||||
>>> result = await action.run(user_requirement=user_requirement, extra_info=extra_info, exists_design_filename=exists_design_filename)
|
||||
>>> result = await action.run(user_requirement=user_requirement, extra_info=extra_info, legacy_design_filename=legacy_design_filename)
|
||||
>>> print(result.content)
|
||||
System Design filename: "/path/to/design/filename"
|
||||
|
||||
|
|
@ -150,10 +150,10 @@ class WriteDesign(Action):
|
|||
>>> user_requirement = "Your user requirements"
|
||||
>>> extra_info = "Your extra information"
|
||||
>>> prd_filename = "/path/to/prd/filename"
|
||||
>>> exists_design_filename = "/path/to/exists/design/filename"
|
||||
>>> legacy_design_filename = "/path/to/exists/design/filename"
|
||||
>>> output_path = "/path/to/save/"
|
||||
>>> action = WriteDesign()
|
||||
>>> result = await action.run(user_requirement=user_requirement, extra_info=extra_info, exists_design_filename=exists_design_filename, prd_filename=prd_filename)
|
||||
>>> result = await action.run(user_requirement=user_requirement, extra_info=extra_info, legacy_design_filename=legacy_design_filename, prd_filename=prd_filename)
|
||||
>>> print(result.content)
|
||||
System Design filename: "/path/to/design/filename"
|
||||
"""
|
||||
|
|
@ -161,7 +161,7 @@ class WriteDesign(Action):
|
|||
return await self._execute_api(
|
||||
user_requirement=user_requirement,
|
||||
prd_filename=prd_filename,
|
||||
exists_design_filename=exists_design_filename,
|
||||
legacy_design_filename=legacy_design_filename,
|
||||
extra_info=extra_info,
|
||||
output_path=output_path,
|
||||
)
|
||||
|
|
@ -266,7 +266,7 @@ class WriteDesign(Action):
|
|||
self,
|
||||
user_requirement: str = "",
|
||||
prd_filename: str = "",
|
||||
exists_design_filename: str = "",
|
||||
legacy_design_filename: str = "",
|
||||
extra_info: str = "",
|
||||
output_path: str = "",
|
||||
) -> AIMessage:
|
||||
|
|
@ -276,11 +276,11 @@ class WriteDesign(Action):
|
|||
if prd_filename:
|
||||
prd_content = await aread(filename=prd_filename)
|
||||
context += to_markdown_code_block(prd_content)
|
||||
if not exists_design_filename:
|
||||
if not legacy_design_filename:
|
||||
node = await self._new_system_design(context=context)
|
||||
design = Document(content=node.instruct_content.model_dump_json())
|
||||
else:
|
||||
old_design_content = await aread(filename=exists_design_filename)
|
||||
old_design_content = await aread(filename=legacy_design_filename)
|
||||
design = await self._merge(
|
||||
prd_doc=Document(content=context), system_design_doc=Document(content=old_design_content)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ class WritePRD(Action):
|
|||
*,
|
||||
user_requirement: str = "",
|
||||
output_path: str = "",
|
||||
exists_prd_filename: str = "",
|
||||
legacy_prd_filename: str = "",
|
||||
extra_info: str = "",
|
||||
**kwargs,
|
||||
) -> AIMessage:
|
||||
|
|
@ -93,7 +93,7 @@ class WritePRD(Action):
|
|||
Args:
|
||||
user_requirement (str): A string detailing the user's requirements.
|
||||
output_path (str, optional): The file path where the output document should be saved. Defaults to "".
|
||||
exists_prd_filename (str, optional): The file path of an existing Product Requirement Document to use as a reference. Defaults to "".
|
||||
legacy_prd_filename (str, optional): The file path of the legacy Product Requirement Document to use as a reference. Defaults to "".
|
||||
extra_info (str, optional): Additional information to include in the document. Defaults to "".
|
||||
**kwargs: Additional keyword arguments.
|
||||
|
||||
|
|
@ -112,9 +112,9 @@ class WritePRD(Action):
|
|||
# Modify a exists PRD(Product Requirement Document)
|
||||
>>> user_requirement = "YOUR REQUIREMENTS"
|
||||
>>> extra_info = "YOUR EXTRA INFO"
|
||||
>>> exists_prd_filename = "/path/to/exists/prd_filename"
|
||||
>>> legacy_prd_filename = "/path/to/exists/prd_filename"
|
||||
>>> write_prd = WritePRD()
|
||||
>>> result = await write_prd.run(user_requirement=user_requirement, extra_info=extra_info, exists_prd_filename=exists_prd_filename)
|
||||
>>> result = await write_prd.run(user_requirement=user_requirement, extra_info=extra_info, legacy_prd_filename=legacy_prd_filename)
|
||||
>>> print(result.content)
|
||||
The PRD is about balabala...
|
||||
|
||||
|
|
@ -130,10 +130,10 @@ class WritePRD(Action):
|
|||
# Modify a exists PRD(Product Requirement Document) and save to the directory.
|
||||
>>> user_requirement = "YOUR REQUIREMENTS"
|
||||
>>> extra_info = "YOUR EXTRA INFO"
|
||||
>>> exists_prd_filename = "/path/to/exists/prd_filename"
|
||||
>>> legacy_prd_filename = "/path/to/exists/prd_filename"
|
||||
>>> output_path = "/path/to/prd/directory/"
|
||||
>>> write_prd = WritePRD()
|
||||
>>> result = await write_prd.run(user_requirement=user_requirement, extra_info=extra_info, exists_prd_filename=exists_prd_filename, output_path=output_path)
|
||||
>>> result = await write_prd.run(user_requirement=user_requirement, extra_info=extra_info, legacy_prd_filename=legacy_prd_filename, output_path=output_path)
|
||||
>>> print(result.content)
|
||||
PRD filename: "/path/to/prd/directory/213434ad.json"
|
||||
|
||||
|
|
@ -142,7 +142,7 @@ class WritePRD(Action):
|
|||
return await self._execute_api(
|
||||
user_requirement=user_requirement,
|
||||
output_path=output_path,
|
||||
exists_prd_filename=exists_prd_filename,
|
||||
legacy_prd_filename=legacy_prd_filename,
|
||||
extra_info=extra_info,
|
||||
)
|
||||
|
||||
|
|
@ -306,18 +306,18 @@ class WritePRD(Action):
|
|||
self.repo.git_repo.rename_root(self.project_name)
|
||||
|
||||
async def _execute_api(
|
||||
self, user_requirement: str, output_path: str, exists_prd_filename: str, extra_info: str
|
||||
self, user_requirement: str, output_path: str, legacy_prd_filename: str, extra_info: str
|
||||
) -> AIMessage:
|
||||
content = to_markdown_code_block(val=user_requirement, type_="text")
|
||||
if extra_info:
|
||||
content += to_markdown_code_block(val=extra_info)
|
||||
|
||||
req = Document(content=content)
|
||||
if not exists_prd_filename:
|
||||
if not legacy_prd_filename:
|
||||
node = await self._new_prd(requirement=req.content)
|
||||
new_prd = Document(content=node.instruct_content.model_dump_json())
|
||||
else:
|
||||
content = await aread(filename=exists_prd_filename)
|
||||
content = await aread(filename=legacy_prd_filename)
|
||||
old_prd = Document(content=content)
|
||||
new_prd = await self._merge(req=req, related_doc=old_prd)
|
||||
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ async def test_design(context):
|
|||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("user_requirement", "prd_filename", "exists_design_filename"),
|
||||
("user_requirement", "prd_filename", "legacy_design_filename"),
|
||||
[
|
||||
("我们需要一个音乐播放器,它应该有播放、暂停、上一曲、下一曲等功能。", None, None),
|
||||
("write 2048 game", str(METAGPT_ROOT / "tests/data/prd.json"), None),
|
||||
|
|
@ -67,10 +67,10 @@ async def test_design(context):
|
|||
],
|
||||
)
|
||||
@pytest.mark.asyncio
|
||||
async def test_design_api(context, user_requirement, prd_filename, exists_design_filename):
|
||||
async def test_design_api(context, user_requirement, prd_filename, legacy_design_filename):
|
||||
action = WriteDesign()
|
||||
result = await action.run(
|
||||
user_requirement=user_requirement, prd_filename=prd_filename, exists_design_filename=exists_design_filename
|
||||
user_requirement=user_requirement, prd_filename=prd_filename, legacy_design_filename=legacy_design_filename
|
||||
)
|
||||
assert isinstance(result, AIMessage)
|
||||
assert result.content
|
||||
|
|
@ -79,7 +79,7 @@ async def test_design_api(context, user_requirement, prd_filename, exists_design
|
|||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("user_requirement", "prd_filename", "exists_design_filename"),
|
||||
("user_requirement", "prd_filename", "legacy_design_filename"),
|
||||
[
|
||||
("我们需要一个音乐播放器,它应该有播放、暂停、上一曲、下一曲等功能。", None, None),
|
||||
("write 2048 game", str(METAGPT_ROOT / "tests/data/prd.json"), None),
|
||||
|
|
@ -91,12 +91,12 @@ async def test_design_api(context, user_requirement, prd_filename, exists_design
|
|||
],
|
||||
)
|
||||
@pytest.mark.asyncio
|
||||
async def test_design_api_dir(context, user_requirement, prd_filename, exists_design_filename):
|
||||
async def test_design_api_dir(context, user_requirement, prd_filename, legacy_design_filename):
|
||||
action = WriteDesign()
|
||||
result = await action.run(
|
||||
user_requirement=user_requirement,
|
||||
prd_filename=prd_filename,
|
||||
exists_design_filename=exists_design_filename,
|
||||
legacy_design_filename=legacy_design_filename,
|
||||
output_path=context.config.project_path,
|
||||
)
|
||||
assert isinstance(result, AIMessage)
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ async def test_write_prd_api(context):
|
|||
|
||||
legacy_prd_filename = result.instruct_content.changed_prd_filenames[-1]
|
||||
|
||||
result = await action.run(user_requirement="Add moving enemy.", exists_prd_filename=legacy_prd_filename)
|
||||
result = await action.run(user_requirement="Add moving enemy.", legacy_prd_filename=legacy_prd_filename)
|
||||
assert isinstance(result, AIMessage)
|
||||
assert result.content
|
||||
m = json.loads(result.content)
|
||||
|
|
@ -100,7 +100,7 @@ async def test_write_prd_api(context):
|
|||
result = await action.run(
|
||||
user_requirement="Add moving enemy.",
|
||||
output_path=str(context.config.project_path),
|
||||
exists_prd_filename=legacy_prd_filename,
|
||||
legacy_prd_filename=legacy_prd_filename,
|
||||
)
|
||||
assert isinstance(result, AIMessage)
|
||||
assert result.content
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue