mirror of
https://github.com/FoundationAgents/MetaGPT.git
synced 2026-04-30 19:36:24 +02:00
Merge branch 'mgx_ops' into json_repair
# Conflicts: # metagpt/prompts/di/role_zero.py # metagpt/roles/di/data_analyst.py
This commit is contained in:
commit
8d973c2cf7
57 changed files with 4180 additions and 278 deletions
|
|
@ -14,7 +14,458 @@ class DummyExpRetriever(ExpRetriever):
|
|||
"""A dummy experience retriever that returns empty string."""
|
||||
|
||||
def retrieve(self, context: str = "") -> str:
|
||||
return ""
|
||||
return self.EXAMPLE
|
||||
|
||||
EXAMPLE: str = ""
|
||||
|
||||
|
||||
class TRDAllExpRetriever(ExpRetriever):
|
||||
def retrieve(self, context: str = "") -> str:
|
||||
return self.EXAMPLE
|
||||
|
||||
EXAMPLE: str = """
|
||||
## example 1
|
||||
User Requirement: Given some user requirements, write a software framework.
|
||||
Explanation: Given a complete user requirement, to write a TRD and software framework, you must follow all of the following steps to complete the TRD output required by the user: 1. Call 'write_trd' to generate TRD; 2. Call 'write_framework' to implement TRD into the software framework.
|
||||
```json
|
||||
[
|
||||
{
|
||||
"command_name": "write_trd_and_framework",
|
||||
"task_id": "1",
|
||||
"dependent_task_ids": [],
|
||||
"instruction": "Execute `write_trd_and_framework` to write a TRD and software framework based on user requirements",
|
||||
"args": {
|
||||
"user_requirements": "This is user requirement balabala...",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"additional_technical_requirements": "These are additional technical requirements, balabala..."
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
## example 2
|
||||
User Requirement: Given some user requirements, write a software framework.
|
||||
Explanation: Given a complete user requirement, to write a software framework, you must follow all of the following steps to complete the TRD output required by the user: 1. Call 'write_trd' to generate TRD; 2. Call 'write_framework' to implement TRD into the software framework.
|
||||
```json
|
||||
[
|
||||
{
|
||||
"command_name": "write_trd",
|
||||
"task_id": "1",
|
||||
"dependent_task_ids": [],
|
||||
"instruction": "Execute `write_trd` to write the TRD based on user requirements",
|
||||
"args": {
|
||||
"user_requirements": "This is user requirement balabala...",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "write_framework",
|
||||
"task_id": "2",
|
||||
"dependent_task_ids": ["1"],
|
||||
"instruction": "Execute `write_framework` to write the framework based on the TRD",
|
||||
"args": {
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"trd": "<trd> returned by `write_trd`",
|
||||
"additional_technical_requirements": "These are additional technical requirements, balabala..."
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
## example 3
|
||||
User Requirement: Given some user requirements, write a TRD, and implement the TRD within a software framework.
|
||||
Explanation:
|
||||
Given a complete requirement, 要写TRD需要follow如下步骤:
|
||||
1. 调用`CompressExternalInterfaces.run`,从acknowledgement中抽取external interfaces的信息;
|
||||
2. 按顺序执行如下步骤:
|
||||
2.1. 执行`DetectInteraction.run`;
|
||||
2.2. 执行`WriteTRD.run`;
|
||||
2.3. 执行`EvaluateTRD.run`;
|
||||
2.4. 检查`EvaluateTRD.run`的结果:
|
||||
2.4.1. 如果`EvaluateTRD.run`的结果被判定为pass,则执行步骤3;
|
||||
2.4.2. 如果`EvaluateTRD.run`的结果被判定为deny,则继续执行步骤2;
|
||||
3. 按顺序执行如下步骤:
|
||||
3.1. 执行`WriteFramework.run`;
|
||||
3.2. 执行`EvaluateFramework.run`;
|
||||
3.3. 检查`EvaluateFramework.run`的结果:
|
||||
3.3.1. 如果`EvaluateFramework.run`的结果被判定为pass,则执行步骤4;
|
||||
3.3.2. 如果`EvaluateFramework.run`的结果被判定为deny,则继续执行步骤3;
|
||||
3.3.3. 如果已经重复执行步骤3超过9次,则执行步骤4;
|
||||
4. 执行`save_framework`,将`WriteFramework.run`的结果保存下来;
|
||||
```json
|
||||
[
|
||||
{
|
||||
"command_name": "CompressExternalInterfaces.run",
|
||||
"args": {
|
||||
"task_id": "1",
|
||||
"dependent_task_ids": [],
|
||||
"instruction": "Execute `DetectInteraction.run` to extract external interfaces information from acknowledgement.",
|
||||
"acknowledge": "## Interfaces\n balabala..."
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "DetectInteraction.run",
|
||||
"args": {
|
||||
"task_id": "2",
|
||||
"dependent_task_ids": ["1"],
|
||||
"instruction": "Execute `DetectInteraction.run` to extract external interfaces information from acknowledgement.",
|
||||
"user_requirements": "This is user requirement balabala...",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "WriteTRD.run",
|
||||
"args": {
|
||||
"task_id": "3",
|
||||
"dependent_task_ids": ["2"],
|
||||
"instruction": "Execute `WriteTRD.run` to write TRD",
|
||||
"user_requirements": "This is user requirement balabala...",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"available_external_interfaces": "<compressed_external_interfaces_output> returned by `CompressExternalInterfaces.run`",
|
||||
"interaction_events": "<detected_interaction_events_output> returned by `DetectInteraction.run`"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "EvaluateTRD.run",
|
||||
"args": {
|
||||
"task_id": "4",
|
||||
"dependent_task_ids": ["3"],
|
||||
"instruction": "Execute `EvaluateTRD.run` to evaluate the TRD",
|
||||
"user_requirements": "This is user requirement balabala...",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"available_external_interfaces": "<compressed_external_interfaces_output> returned by `CompressExternalInterfaces.run`",
|
||||
"interaction_events": "<detected_interaction_events_output>",
|
||||
"trd": "<trd> returned by `EvaluateTRD.run`"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "DetectInteraction.run",
|
||||
"args": {
|
||||
"task_id": "5",
|
||||
"dependent_task_ids": ["4"],
|
||||
"instruction": "Execute `DetectInteraction.run` to extract external interfaces information from acknowledgement.",
|
||||
"user_requirements": "This is user requirement balabala...",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"evaluation_conclusion": "<evaluation_conclusion> returned by `EvaluateTRD.run`"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "WriteTRD.run",
|
||||
"args": {
|
||||
"task_id": "6",
|
||||
"dependent_task_ids": ["5"],
|
||||
"instruction": "Execute `WriteTRD.run` to write TRD",
|
||||
"user_requirements": "This is user requirement balabala...",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"available_external_interfaces": "<compressed_external_interfaces_output> returned by `CompressExternalInterfaces.run`",
|
||||
"interaction_events": "<detected_interaction_events_output> returned by `DetectInteraction.run`",
|
||||
"previous_version_trd": "<trd> returned by `WriteTRD.run`"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "EvaluateTRD.run",
|
||||
"args": {
|
||||
"task_id": "7",
|
||||
"dependent_task_ids": ["6"],
|
||||
"instruction": "Execute `EvaluateTRD.run` to evaluate the TRD",
|
||||
"user_requirements": "This is user requirement balabala...",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"available_external_interfaces": "<compressed_external_interfaces_output> returned by `CompressExternalInterfaces.run`",
|
||||
"interaction_events": "<detected_interaction_events_output> returned by `DetectInteraction.run`",
|
||||
"trd": "<trd> returned by `WriteTRD.run`",
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "WriteFramework.run",
|
||||
"args": {
|
||||
"task_id": "8",
|
||||
"dependent_task_ids": ["7"],
|
||||
"instruction": "Execute `WriteFramework.run` to write a software framework according to the TRD",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"trd": "<trd> returned by `WriteTRD.run`",
|
||||
"acknowledge": "## Interfaces\n balabala...",
|
||||
"additional_technical_requirements": "These are additional technical requirements, balabala...",
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "EvaluateFramework.run",
|
||||
"args": {
|
||||
"task_id": "9",
|
||||
"dependent_task_ids": ["8"],
|
||||
"instruction": "Execute `EvaluateFramework.run` to evaluate the software framework returned by `WriteFramework.run`",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"trd": "<trd> returned by `WriteTRD.run`",
|
||||
"acknowledge": "## Interfaces\n balabala...",
|
||||
"legacy_output": "<framework> returned by `WriteFramework.run`",
|
||||
"additional_technical_requirements": "These are additional technical requirements, balabala...",
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "WriteFramework.run",
|
||||
"args": {
|
||||
"task_id": "10",
|
||||
"dependent_task_ids": ["9"],
|
||||
"instruction": "Execute `WriteFramework.run` to write a software framework according to the TRD",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"trd": "<trd> returned by `WriteTRD.run`",
|
||||
"acknowledge": "## Interfaces\n balabala...",
|
||||
"additional_technical_requirements": "These are additional technical requirements, balabala...",
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "EvaluateFramework.run",
|
||||
"args": {
|
||||
"task_id": "11",
|
||||
"dependent_task_ids": ["10"],
|
||||
"instruction": "Execute `EvaluateFramework.run` to evaluate the software framework returned by `WriteFramework.run`",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"trd": "<trd> returned by `WriteTRD.run`",
|
||||
"acknowledge": "## Interfaces\n balabala...",
|
||||
"legacy_output": "<framework> returned by `WriteFramework.run`",
|
||||
"additional_technical_requirements": "These are additional technical requirements, balabala...",
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "save_framework",
|
||||
"args": {
|
||||
"task_id": "12",
|
||||
"dependent_task_ids": ["11"],
|
||||
"instruction": "Execute `save_framework` to save the software framework returned by `WriteFramework.run`",
|
||||
"dir_data": "<framework> returned by `WriteFramework.run`",
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
"""
|
||||
|
||||
|
||||
class TRDToolExpRetriever(ExpRetriever):
|
||||
"""A TRD-related experience retriever that returns empty string."""
|
||||
|
||||
def retrieve(self, context: str = "") -> str:
|
||||
return self.EXAMPLE
|
||||
|
||||
EXAMPLE: str = """
|
||||
## example 1
|
||||
User Requirement: Given some user requirements, write a software framework.
|
||||
Explanation: Given a complete user requirement, to write a TRD and software framework, you must follow all of the following steps to complete the TRD output required by the user: 1. Call 'write_trd' to generate TRD; 2. Call 'write_framework' to implement TRD into the software framework.
|
||||
```json
|
||||
[
|
||||
{
|
||||
"command_name": "write_trd_and_framework",
|
||||
"task_id": "1",
|
||||
"dependent_task_ids": [],
|
||||
"instruction": "Execute `write_trd_and_framework` to write a TRD and software framework based on user requirements",
|
||||
"args": {
|
||||
"user_requirements": "This is user requirement balabala...",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"additional_technical_requirements": "These are additional technical requirements, balabala..."
|
||||
}
|
||||
}
|
||||
]
|
||||
"""
|
||||
# EXAMPLE: str = """
|
||||
# ## example 1
|
||||
# User Requirement: Given some user requirements, write a software framework.
|
||||
# Explanation: Given a complete user requirement, to write a software framework, you must follow all of the following steps to complete the TRD output required by the user: 1. Call 'write_trd' to generate TRD; 2. Call 'write_framework' to implement TRD into the software framework.
|
||||
# ```json
|
||||
# [
|
||||
# {
|
||||
# "command_name": "write_trd",
|
||||
# "task_id": "1",
|
||||
# "dependent_task_ids": [],
|
||||
# "instruction": "Execute `write_trd` to write the TRD based on user requirements",
|
||||
# "args": {
|
||||
# "user_requirements": "This is user requirement balabala...",
|
||||
# "use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
# }
|
||||
# },
|
||||
# {
|
||||
# "command_name": "write_framework",
|
||||
# "task_id": "2",
|
||||
# "dependent_task_ids": ["1"],
|
||||
# "instruction": "Execute `write_framework` to write the framework based on the TRD",
|
||||
# "args": {
|
||||
# "use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
# "trd": "<trd> returned by `write_trd`",
|
||||
# "additional_technical_requirements": "These are additional technical requirements, balabala..."
|
||||
# }
|
||||
# }
|
||||
# ]
|
||||
# ```
|
||||
# """
|
||||
|
||||
|
||||
class TRDExpRetriever(ExpRetriever):
|
||||
"""A TRD-related experience retriever that returns empty string."""
|
||||
|
||||
def retrieve(self, context: str = "") -> str:
|
||||
return self.EXAMPLE
|
||||
|
||||
EXAMPLE: str = """
|
||||
## example 1
|
||||
User Requirement: Given some user requirements, write a TRD, and implement the TRD within a software framework.
|
||||
Explanation:
|
||||
Given a complete requirement, 要写TRD需要follow如下步骤:
|
||||
1. 调用`CompressExternalInterfaces.run`,从acknowledgement中抽取external interfaces的信息;
|
||||
2. 按顺序执行如下步骤:
|
||||
2.1. 执行`DetectInteraction.run`;
|
||||
2.2. 执行`WriteTRD.run`;
|
||||
2.3. 执行`EvaluateTRD.run`;
|
||||
2.4. 检查`EvaluateTRD.run`的结果:
|
||||
2.4.1. 如果`EvaluateTRD.run`的结果被判定为pass,则执行步骤3;
|
||||
2.4.2. 如果`EvaluateTRD.run`的结果被判定为deny,则继续执行步骤2;
|
||||
3. 按顺序执行如下步骤:
|
||||
3.1. 执行`WriteFramework.run`;
|
||||
3.2. 执行`EvaluateFramework.run`;
|
||||
3.3. 检查`EvaluateFramework.run`的结果:
|
||||
3.3.1. 如果`EvaluateFramework.run`的结果被判定为pass,则执行步骤4;
|
||||
3.3.2. 如果`EvaluateFramework.run`的结果被判定为deny,则继续执行步骤3;
|
||||
3.3.3. 如果已经重复执行步骤3超过9次,则执行步骤4;
|
||||
4. 执行`save_framework`,将`WriteFramework.run`的结果保存下来;
|
||||
```json
|
||||
[
|
||||
{
|
||||
"command_name": "CompressExternalInterfaces.run",
|
||||
"args": {
|
||||
"task_id": "1",
|
||||
"dependent_task_ids": [],
|
||||
"instruction": "Execute `DetectInteraction.run` to extract external interfaces information from acknowledgement.",
|
||||
"acknowledge": "## Interfaces\n balabala..."
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "DetectInteraction.run",
|
||||
"args": {
|
||||
"task_id": "2",
|
||||
"dependent_task_ids": ["1"],
|
||||
"instruction": "Execute `DetectInteraction.run` to extract external interfaces information from acknowledgement.",
|
||||
"user_requirements": "This is user requirement balabala...",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "WriteTRD.run",
|
||||
"args": {
|
||||
"task_id": "3",
|
||||
"dependent_task_ids": ["2"],
|
||||
"instruction": "Execute `WriteTRD.run` to write TRD",
|
||||
"user_requirements": "This is user requirement balabala...",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"available_external_interfaces": "<compressed_external_interfaces_output> returned by `CompressExternalInterfaces.run`",
|
||||
"interaction_events": "<detected_interaction_events_output> returned by `DetectInteraction.run`"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "EvaluateTRD.run",
|
||||
"args": {
|
||||
"task_id": "4",
|
||||
"dependent_task_ids": ["3"],
|
||||
"instruction": "Execute `EvaluateTRD.run` to evaluate the TRD",
|
||||
"user_requirements": "This is user requirement balabala...",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"available_external_interfaces": "<compressed_external_interfaces_output> returned by `CompressExternalInterfaces.run`",
|
||||
"interaction_events": "<detected_interaction_events_output>",
|
||||
"trd": "<trd> returned by `EvaluateTRD.run`"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "DetectInteraction.run",
|
||||
"args": {
|
||||
"task_id": "5",
|
||||
"dependent_task_ids": ["4"],
|
||||
"instruction": "Execute `DetectInteraction.run` to extract external interfaces information from acknowledgement.",
|
||||
"user_requirements": "This is user requirement balabala...",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"evaluation_conclusion": "<evaluation_conclusion> returned by `EvaluateTRD.run`"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "WriteTRD.run",
|
||||
"args": {
|
||||
"task_id": "6",
|
||||
"dependent_task_ids": ["5"],
|
||||
"instruction": "Execute `WriteTRD.run` to write TRD",
|
||||
"user_requirements": "This is user requirement balabala...",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"available_external_interfaces": "<compressed_external_interfaces_output> returned by `CompressExternalInterfaces.run`",
|
||||
"interaction_events": "<detected_interaction_events_output> returned by `DetectInteraction.run`",
|
||||
"previous_version_trd": "<trd> returned by `WriteTRD.run`"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "EvaluateTRD.run",
|
||||
"args": {
|
||||
"task_id": "7",
|
||||
"dependent_task_ids": ["6"],
|
||||
"instruction": "Execute `EvaluateTRD.run` to evaluate the TRD",
|
||||
"user_requirements": "This is user requirement balabala...",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"available_external_interfaces": "<compressed_external_interfaces_output> returned by `CompressExternalInterfaces.run`",
|
||||
"interaction_events": "<detected_interaction_events_output> returned by `DetectInteraction.run`",
|
||||
"trd": "<trd> returned by `WriteTRD.run`",
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "WriteFramework.run",
|
||||
"args": {
|
||||
"task_id": "8",
|
||||
"dependent_task_ids": ["7"],
|
||||
"instruction": "Execute `WriteFramework.run` to write a software framework according to the TRD",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"trd": "<trd> returned by `WriteTRD.run`",
|
||||
"acknowledge": "## Interfaces\n balabala...",
|
||||
"additional_technical_requirements": "These are additional technical requirements, balabala...",
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "EvaluateFramework.run",
|
||||
"args": {
|
||||
"task_id": "9",
|
||||
"dependent_task_ids": ["8"],
|
||||
"instruction": "Execute `EvaluateFramework.run` to evaluate the software framework returned by `WriteFramework.run`",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"trd": "<trd> returned by `WriteTRD.run`",
|
||||
"acknowledge": "## Interfaces\n balabala...",
|
||||
"legacy_output": "<framework> returned by `WriteFramework.run`",
|
||||
"additional_technical_requirements": "These are additional technical requirements, balabala...",
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "WriteFramework.run",
|
||||
"args": {
|
||||
"task_id": "10",
|
||||
"dependent_task_ids": ["9"],
|
||||
"instruction": "Execute `WriteFramework.run` to write a software framework according to the TRD",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"trd": "<trd> returned by `WriteTRD.run`",
|
||||
"acknowledge": "## Interfaces\n balabala...",
|
||||
"additional_technical_requirements": "These are additional technical requirements, balabala...",
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "EvaluateFramework.run",
|
||||
"args": {
|
||||
"task_id": "11",
|
||||
"dependent_task_ids": ["10"],
|
||||
"instruction": "Execute `EvaluateFramework.run` to evaluate the software framework returned by `WriteFramework.run`",
|
||||
"use_case_actors": "These are actors involved in the use case, balabala...",
|
||||
"trd": "<trd> returned by `WriteTRD.run`",
|
||||
"acknowledge": "## Interfaces\n balabala...",
|
||||
"legacy_output": "<framework> returned by `WriteFramework.run`",
|
||||
"additional_technical_requirements": "These are additional technical requirements, balabala...",
|
||||
}
|
||||
},
|
||||
{
|
||||
"command_name": "save_framework",
|
||||
"args": {
|
||||
"task_id": "12",
|
||||
"dependent_task_ids": ["11"],
|
||||
"instruction": "Execute `save_framework` to save the software framework returned by `WriteFramework.run`",
|
||||
"dir_data": "<framework> returned by `WriteFramework.run`",
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
"""
|
||||
|
||||
|
||||
TL_EXAMPLE = """
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue