From fd080fa63361d66ea4ce92745c18a4b6bc4b5c3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E4=BC=9F=E9=9F=AC?= Date: Mon, 5 Aug 2024 19:17:43 +0800 Subject: [PATCH 1/6] fixbug: write to folder --- metagpt/actions/design_api.py | 2 +- metagpt/actions/project_management.py | 7 ++++--- metagpt/actions/project_management_an.py | 2 +- metagpt/actions/write_prd.py | 2 +- metagpt/prompts/di/role_zero.py | 4 ++-- metagpt/prompts/di/team_leader.py | 1 + metagpt/roles/di/role_zero.py | 7 +++++-- metagpt/tools/libs/editor.py | 2 +- 8 files changed, 16 insertions(+), 11 deletions(-) diff --git a/metagpt/actions/design_api.py b/metagpt/actions/design_api.py index 3eb8fe04d..61a6adfa1 100644 --- a/metagpt/actions/design_api.py +++ b/metagpt/actions/design_api.py @@ -83,7 +83,7 @@ class WriteDesign(Action): prd_filename (str, optional): The filename of the Product Requirement Document (PRD). 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_pathname (str, optional): The output path name of file that the system design should be saved to. + output_pathname (str, optional): The output path name of file that the system design should be saved to. The path name must must end with '.json'. Returns: str: The file path of the generated system design. diff --git a/metagpt/actions/project_management.py b/metagpt/actions/project_management.py index 355a3853d..8277c6342 100644 --- a/metagpt/actions/project_management.py +++ b/metagpt/actions/project_management.py @@ -62,7 +62,7 @@ class WriteTasks(Action): Args: user_requirement (str, optional): A string specifying the user's requirements. Defaults to an empty string. - design_filename (str): The filename of the project system design file. Defaults to an empty string. + design_filename (str): The filename of the project system design file. The path name must must end with '.json'. Defaults to an empty string. output_pathname (str, optional): The output path name of file that the project schedule should be saved to. **kwargs: Additional keyword arguments. @@ -73,10 +73,11 @@ class WriteTasks(Action): # Write a project schedule with a given system design. >>> design_filename = "/absolute/path/to/snake_game/docs/system_design.json" >>> output_pathname = "/absolute/path/to/snake_game/docs/project_schedule.json" + >>> user_requirement = "Write project schedule for a snake game following these requirements:..." >>> action = WriteTasks() - >>> result = await action.run(design_filename=design_filename, output_pathname=output_pathname) + >>> result = await action.run(user_requirement=user_requirement,design_filename=design_filename, output_pathname=output_pathname) >>> print(result) - The project schedule is at /absolute/path/to/snake_game/docs/project_schedule.json + The project schedule is at /absolute/path/to/在nake_game/docs/project_schedule.json # Write a project schedule with a user requirement. >>> user_requirement = "Write project schedule for a snake game following these requirements: ..." diff --git a/metagpt/actions/project_management_an.py b/metagpt/actions/project_management_an.py index 01b92b7fc..78f17653b 100644 --- a/metagpt/actions/project_management_an.py +++ b/metagpt/actions/project_management_an.py @@ -12,7 +12,7 @@ from metagpt.actions.action_node import ActionNode REQUIRED_PYTHON_PACKAGES = ActionNode( key="Required Python packages", expected_type=List[str], - instruction="Provide required Python packages in requirements.txt format.", + instruction="Provide required Python packages in requirements.txt format. The response language should correspond to the context and requirements.", example=["flask==1.1.2", "bcrypt==3.2.0"], ) diff --git a/metagpt/actions/write_prd.py b/metagpt/actions/write_prd.py index a062ece54..549a04927 100644 --- a/metagpt/actions/write_prd.py +++ b/metagpt/actions/write_prd.py @@ -98,7 +98,7 @@ class WritePRD(Action): Args: user_requirement (str): A string detailing the user's requirements. - output_pathname (str, optional): The path name of file that the output document should be saved to. Defaults to "". + output_pathname (str, optional): The path name of file that the output document should be saved to. The path name must must end with '.json'. 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. diff --git a/metagpt/prompts/di/role_zero.py b/metagpt/prompts/di/role_zero.py index 5891522bd..0c1c5544b 100644 --- a/metagpt/prompts/di/role_zero.py +++ b/metagpt/prompts/di/role_zero.py @@ -56,7 +56,7 @@ In your response, include at least one command. Some text indicating your thoughts before JSON is required, such as what tasks have been completed, what tasks are next, how you should update the plan status, respond to inquiry, or seek for help. Then a json array of commands. You must output ONE and ONLY ONE json array. DON'T output multiple json arrays with thoughts between them. Output should adhere to the following format. {thought_guidance} -Finally, combine your thoughts, describe what you want to do conscisely in 20 words, including which process you will taked and whether you will end, then follow your thoughts to list the commands, adhering closely to the instructions provided. +Finally, combine your thoughts, describe what you want to do, including which process you will taked and whether you will end, then follow your thoughts to list the commands, adhering closely to the instructions provided. ```json [ {{ @@ -71,7 +71,7 @@ Notice: your output JSON data section must start with **```json [** THOUGHT_GUIDANCE = """ First, describe the actions you have taken recently. Second, describe the messages you have received recently, with a particular emphasis on messages from users. -Third, describe the plan status and the current task. Review the histroy, if `Current Task` has been undertaken and completed by you or anyone, you MUST use the **Plan.finish_current_task** command to finish it first before taking any action, the command will automatically move you to the next task. +Third, describe the plan status and the current task. Review the histroy, if `Current Task` has been undertaken and completed by you or anyone, you MUST use the **Plan.finish_current_task** command to finish it first, the command will automatically move you to the next task. Fourth, describe any necessary human interaction. Use **RoleZero.reply_to_human** to report your progress if you complete a task or the overall requirement, pay attention to the history, DON'T repeat reporting. Use **RoleZero.ask_human** if you failed the current task, unsure of the situation encountered, need any help from human, or executing repetitive commands but receiving repetitive feedbacks without making progress. Fifth, describe if you should terminate, you should use **end** command to terminate if any of the following is met: - You have completed the overall user requirement diff --git a/metagpt/prompts/di/team_leader.py b/metagpt/prompts/di/team_leader.py index 2f3e69651..3ab59d5ad 100644 --- a/metagpt/prompts/di/team_leader.py +++ b/metagpt/prompts/di/team_leader.py @@ -30,6 +30,7 @@ Note: 10. Do not use escape characters in json data, particularly within file paths. 11. Analyze the capabilities of team members and assign tasks to them based on user Requirements. If the requirements ask to ignore certain tasks, follow the requirements. 12. Add default web technologies: HTML (*.html), CSS (*.css), and JavaScript (*.js) to your requirements.If no specific programming language is required, include these technologies in the project requirements. Using instruction to forward this information to your team members. +13. If you find there are no specific tasks or user requirements, you must ask a human for advice on what to do next. """ TL_THOUGHT_GUIDANCE = ( THOUGHT_GUIDANCE diff --git a/metagpt/roles/di/role_zero.py b/metagpt/roles/di/role_zero.py index af39fa544..c5ff1e858 100644 --- a/metagpt/roles/di/role_zero.py +++ b/metagpt/roles/di/role_zero.py @@ -368,6 +368,9 @@ class RoleZero(Role): elif cmd["command_name"] == "end": self._set_state(-1) + # When all the plans have been completed, clear the plan's goal and wait for the next requirements. + if self.planner.current_task is None: + self.planner.plan.goal = "" command_output = "" # output from bash.run may be empty, add decorations to the output to ensure visibility. @@ -376,10 +379,10 @@ class RoleZero(Role): tool_output = await tool_obj(**cmd["args"]) if len(tool_output) <= 10: command_output += ( - f"\n[command]: {cmd['args']['cmd']} \n [command output] : {tool_output} (pay attention to this.)" + f"\n[command]: {cmd['args']['cmd']} \n[command output] : {tool_output} (pay attention to this.)" ) else: - command_output += f"\n[command]: {cmd['args']['cmd']} \n [command output] : {tool_output}" + command_output += f"\n[command]: {cmd['args']['cmd']} \n[command output] : {tool_output}" return command_output def _get_plan_status(self) -> Tuple[str, str]: diff --git a/metagpt/tools/libs/editor.py b/metagpt/tools/libs/editor.py index b964a2741..c61df3579 100644 --- a/metagpt/tools/libs/editor.py +++ b/metagpt/tools/libs/editor.py @@ -25,7 +25,7 @@ class Editor: self.resource = EditorReporter() def write(self, path: str, content: str): - """Write the whole content to a file. When used, make sure content arg contains the full content of the file.""" + """Write the whole content to a file. The path must be a file path with a specific file extension. When used, make sure content arg contains the full content of the file.""" if "\n" not in content and "\\n" in content: # A very raw rule to correct the content: If 'content' lacks actual newlines ('\n') but includes '\\n', consider # replacing them with '\n' to potentially correct mistaken representations of newline characters. From 3c0f39c5861f727b4a9aaba7b0b8deb058cf932e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E4=BC=9F=E9=9F=AC?= Date: Mon, 5 Aug 2024 19:43:56 +0800 Subject: [PATCH 2/6] Fix the format issue --- metagpt/prompts/di/role_zero.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/metagpt/prompts/di/role_zero.py b/metagpt/prompts/di/role_zero.py index 0c1c5544b..5891522bd 100644 --- a/metagpt/prompts/di/role_zero.py +++ b/metagpt/prompts/di/role_zero.py @@ -56,7 +56,7 @@ In your response, include at least one command. Some text indicating your thoughts before JSON is required, such as what tasks have been completed, what tasks are next, how you should update the plan status, respond to inquiry, or seek for help. Then a json array of commands. You must output ONE and ONLY ONE json array. DON'T output multiple json arrays with thoughts between them. Output should adhere to the following format. {thought_guidance} -Finally, combine your thoughts, describe what you want to do, including which process you will taked and whether you will end, then follow your thoughts to list the commands, adhering closely to the instructions provided. +Finally, combine your thoughts, describe what you want to do conscisely in 20 words, including which process you will taked and whether you will end, then follow your thoughts to list the commands, adhering closely to the instructions provided. ```json [ {{ @@ -71,7 +71,7 @@ Notice: your output JSON data section must start with **```json [** THOUGHT_GUIDANCE = """ First, describe the actions you have taken recently. Second, describe the messages you have received recently, with a particular emphasis on messages from users. -Third, describe the plan status and the current task. Review the histroy, if `Current Task` has been undertaken and completed by you or anyone, you MUST use the **Plan.finish_current_task** command to finish it first, the command will automatically move you to the next task. +Third, describe the plan status and the current task. Review the histroy, if `Current Task` has been undertaken and completed by you or anyone, you MUST use the **Plan.finish_current_task** command to finish it first before taking any action, the command will automatically move you to the next task. Fourth, describe any necessary human interaction. Use **RoleZero.reply_to_human** to report your progress if you complete a task or the overall requirement, pay attention to the history, DON'T repeat reporting. Use **RoleZero.ask_human** if you failed the current task, unsure of the situation encountered, need any help from human, or executing repetitive commands but receiving repetitive feedbacks without making progress. Fifth, describe if you should terminate, you should use **end** command to terminate if any of the following is met: - You have completed the overall user requirement From f7b236601c782270aa4b6dcc4ad86d08d5c1fb4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E4=BC=9F=E9=9F=AC?= Date: Tue, 6 Aug 2024 17:44:31 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86teamleader?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E7=BB=93=E6=9D=9F=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E4=BA=86=E6=99=BA=E8=83=BD=E4=BD=93?= =?UTF-8?q?=E4=B8=8D=E5=93=8D=E5=BA=94=E6=96=B0=E4=BB=BB=E5=8A=A1=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- metagpt/actions/design_api.py | 2 +- metagpt/actions/project_management.py | 2 +- metagpt/actions/write_prd.py | 2 +- metagpt/environment/mgx/mgx_env.py | 4 +++- metagpt/prompts/di/role_zero.py | 2 +- metagpt/prompts/di/team_leader.py | 7 ++++--- metagpt/roles/di/role_zero.py | 3 --- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/metagpt/actions/design_api.py b/metagpt/actions/design_api.py index 61a6adfa1..35c0cbbfe 100644 --- a/metagpt/actions/design_api.py +++ b/metagpt/actions/design_api.py @@ -83,7 +83,7 @@ class WriteDesign(Action): prd_filename (str, optional): The filename of the Product Requirement Document (PRD). 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_pathname (str, optional): The output path name of file that the system design should be saved to. The path name must must end with '.json'. + output_pathname (str, optional): The output file path of the document. Returns: str: The file path of the generated system design. diff --git a/metagpt/actions/project_management.py b/metagpt/actions/project_management.py index 8277c6342..a031d1fd8 100644 --- a/metagpt/actions/project_management.py +++ b/metagpt/actions/project_management.py @@ -62,7 +62,7 @@ class WriteTasks(Action): Args: user_requirement (str, optional): A string specifying the user's requirements. Defaults to an empty string. - design_filename (str): The filename of the project system design file. The path name must must end with '.json'. Defaults to an empty string. + design_filename (str): The output file path of the document. Defaults to an empty string. output_pathname (str, optional): The output path name of file that the project schedule should be saved to. **kwargs: Additional keyword arguments. diff --git a/metagpt/actions/write_prd.py b/metagpt/actions/write_prd.py index 549a04927..2bf806c2f 100644 --- a/metagpt/actions/write_prd.py +++ b/metagpt/actions/write_prd.py @@ -98,7 +98,7 @@ class WritePRD(Action): Args: user_requirement (str): A string detailing the user's requirements. - output_pathname (str, optional): The path name of file that the output document should be saved to. The path name must must end with '.json'. Defaults to "". + output_pathname (str, optional): The output file path of the document. 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. diff --git a/metagpt/environment/mgx/mgx_env.py b/metagpt/environment/mgx/mgx_env.py index 873358252..fc1b1cfc5 100644 --- a/metagpt/environment/mgx/mgx_env.py +++ b/metagpt/environment/mgx/mgx_env.py @@ -118,7 +118,9 @@ class MGXEnv(Environment): if converted_msg.role not in ["system", "user", "assistant"]: converted_msg.role = "assistant" sent_from = converted_msg.metadata[AGENT] if AGENT in converted_msg.metadata else converted_msg.sent_from - converted_msg.content = f"from {sent_from} to {converted_msg.send_to}: {converted_msg.content}" + converted_msg.content = ( + f"[Message] from {sent_from if sent_from else 'User'} to {converted_msg.send_to}: {converted_msg.content}" + ) return converted_msg def __repr__(self): diff --git a/metagpt/prompts/di/role_zero.py b/metagpt/prompts/di/role_zero.py index 5891522bd..cc9fa0767 100644 --- a/metagpt/prompts/di/role_zero.py +++ b/metagpt/prompts/di/role_zero.py @@ -70,7 +70,7 @@ Notice: your output JSON data section must start with **```json [** """ THOUGHT_GUIDANCE = """ First, describe the actions you have taken recently. -Second, describe the messages you have received recently, with a particular emphasis on messages from users. +Second, describe the messages you have received recently, with a particular emphasis on messages from users. If necessary, develop a plan to address the new user requirements. Third, describe the plan status and the current task. Review the histroy, if `Current Task` has been undertaken and completed by you or anyone, you MUST use the **Plan.finish_current_task** command to finish it first before taking any action, the command will automatically move you to the next task. Fourth, describe any necessary human interaction. Use **RoleZero.reply_to_human** to report your progress if you complete a task or the overall requirement, pay attention to the history, DON'T repeat reporting. Use **RoleZero.ask_human** if you failed the current task, unsure of the situation encountered, need any help from human, or executing repetitive commands but receiving repetitive feedbacks without making progress. Fifth, describe if you should terminate, you should use **end** command to terminate if any of the following is met: diff --git a/metagpt/prompts/di/team_leader.py b/metagpt/prompts/di/team_leader.py index 3ab59d5ad..70d7fb8a0 100644 --- a/metagpt/prompts/di/team_leader.py +++ b/metagpt/prompts/di/team_leader.py @@ -30,13 +30,14 @@ Note: 10. Do not use escape characters in json data, particularly within file paths. 11. Analyze the capabilities of team members and assign tasks to them based on user Requirements. If the requirements ask to ignore certain tasks, follow the requirements. 12. Add default web technologies: HTML (*.html), CSS (*.css), and JavaScript (*.js) to your requirements.If no specific programming language is required, include these technologies in the project requirements. Using instruction to forward this information to your team members. -13. If you find there are no specific tasks or user requirements, you must ask a human for advice on what to do next. +13. If the the user message is a question. use 'reply to human' to respond to the question, and then end end. """ TL_THOUGHT_GUIDANCE = ( THOUGHT_GUIDANCE + """ -Sixth, when planning, describe the requirements as they pertain to software development, data analysis, or other areas. If the requirements is a software development and no specific restrictions are mentioned, you must create a Product Requirements Document (PRD), write a System Design document, develop a project schedule, and then begin coding. List the steps you will undertake. Plan these steps in a single response. -Seventh, describe the technologies you must use. +Sixth, describe the requirements as they pertain to software development, data analysis, or other areas. If the requirements is a software development and no specific restrictions are mentioned, you must create a Product Requirements Document (PRD), write a System Design document, develop a project schedule, and then begin coding. List the steps you will undertake. Plan these steps in a single response. +Seventh, describe the technologies you must use. +Eight, if the current task is None and no messages have been received so far, use 'reply to human' to respond to the human's requirements. and then use command 'end' in one respond. """ ) QUICK_THINK_SYSTEM_PROMPT = """ diff --git a/metagpt/roles/di/role_zero.py b/metagpt/roles/di/role_zero.py index c5ff1e858..fe951ecaa 100644 --- a/metagpt/roles/di/role_zero.py +++ b/metagpt/roles/di/role_zero.py @@ -368,9 +368,6 @@ class RoleZero(Role): elif cmd["command_name"] == "end": self._set_state(-1) - # When all the plans have been completed, clear the plan's goal and wait for the next requirements. - if self.planner.current_task is None: - self.planner.plan.goal = "" command_output = "" # output from bash.run may be empty, add decorations to the output to ensure visibility. From b69538e842640ff48cd8f5552f4fc2a7d1b5ad85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E4=BC=9F=E9=9F=AC?= Date: Tue, 6 Aug 2024 17:51:36 +0800 Subject: [PATCH 4/6] Fix the format issue --- metagpt/prompts/di/team_leader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metagpt/prompts/di/team_leader.py b/metagpt/prompts/di/team_leader.py index 70d7fb8a0..0f61b4948 100644 --- a/metagpt/prompts/di/team_leader.py +++ b/metagpt/prompts/di/team_leader.py @@ -30,7 +30,7 @@ Note: 10. Do not use escape characters in json data, particularly within file paths. 11. Analyze the capabilities of team members and assign tasks to them based on user Requirements. If the requirements ask to ignore certain tasks, follow the requirements. 12. Add default web technologies: HTML (*.html), CSS (*.css), and JavaScript (*.js) to your requirements.If no specific programming language is required, include these technologies in the project requirements. Using instruction to forward this information to your team members. -13. If the the user message is a question. use 'reply to human' to respond to the question, and then end end. +13. If the the user message is a question. use 'reply to human' to respond to the question, and then end. """ TL_THOUGHT_GUIDANCE = ( THOUGHT_GUIDANCE From f9617b3d1070783f1e3ed08e87698196577fd418 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E4=BC=9F=E9=9F=AC?= Date: Tue, 6 Aug 2024 20:18:41 +0800 Subject: [PATCH 5/6] Fix the format issue --- metagpt/actions/project_management.py | 4 ++-- metagpt/prompts/di/team_leader.py | 1 - metagpt/tools/libs/editor.py | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/metagpt/actions/project_management.py b/metagpt/actions/project_management.py index a031d1fd8..0a3a93268 100644 --- a/metagpt/actions/project_management.py +++ b/metagpt/actions/project_management.py @@ -75,9 +75,9 @@ class WriteTasks(Action): >>> output_pathname = "/absolute/path/to/snake_game/docs/project_schedule.json" >>> user_requirement = "Write project schedule for a snake game following these requirements:..." >>> action = WriteTasks() - >>> result = await action.run(user_requirement=user_requirement,design_filename=design_filename, output_pathname=output_pathname) + >>> result = await action.run(user_requirement=user_requirement, design_filename=design_filename, output_pathname=output_pathname) >>> print(result) - The project schedule is at /absolute/path/to/在nake_game/docs/project_schedule.json + The project schedule is at /absolute/path/to/nake_game/docs/project_schedule.json # Write a project schedule with a user requirement. >>> user_requirement = "Write project schedule for a snake game following these requirements: ..." diff --git a/metagpt/prompts/di/team_leader.py b/metagpt/prompts/di/team_leader.py index 0f61b4948..2fb4ae6fb 100644 --- a/metagpt/prompts/di/team_leader.py +++ b/metagpt/prompts/di/team_leader.py @@ -37,7 +37,6 @@ TL_THOUGHT_GUIDANCE = ( + """ Sixth, describe the requirements as they pertain to software development, data analysis, or other areas. If the requirements is a software development and no specific restrictions are mentioned, you must create a Product Requirements Document (PRD), write a System Design document, develop a project schedule, and then begin coding. List the steps you will undertake. Plan these steps in a single response. Seventh, describe the technologies you must use. -Eight, if the current task is None and no messages have been received so far, use 'reply to human' to respond to the human's requirements. and then use command 'end' in one respond. """ ) QUICK_THINK_SYSTEM_PROMPT = """ diff --git a/metagpt/tools/libs/editor.py b/metagpt/tools/libs/editor.py index c61df3579..b964a2741 100644 --- a/metagpt/tools/libs/editor.py +++ b/metagpt/tools/libs/editor.py @@ -25,7 +25,7 @@ class Editor: self.resource = EditorReporter() def write(self, path: str, content: str): - """Write the whole content to a file. The path must be a file path with a specific file extension. When used, make sure content arg contains the full content of the file.""" + """Write the whole content to a file. When used, make sure content arg contains the full content of the file.""" if "\n" not in content and "\\n" in content: # A very raw rule to correct the content: If 'content' lacks actual newlines ('\n') but includes '\\n', consider # replacing them with '\n' to potentially correct mistaken representations of newline characters. From cc06719f8bbd3007a8062d37ec18d33681f78ea0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E4=BC=9F=E9=9F=AC?= Date: Tue, 6 Aug 2024 20:33:38 +0800 Subject: [PATCH 6/6] Fix the format issue --- metagpt/actions/project_management.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metagpt/actions/project_management.py b/metagpt/actions/project_management.py index 0a3a93268..f64b8b7de 100644 --- a/metagpt/actions/project_management.py +++ b/metagpt/actions/project_management.py @@ -77,7 +77,7 @@ class WriteTasks(Action): >>> action = WriteTasks() >>> result = await action.run(user_requirement=user_requirement, design_filename=design_filename, output_pathname=output_pathname) >>> print(result) - The project schedule is at /absolute/path/to/nake_game/docs/project_schedule.json + The project schedule is at /absolute/path/to/snake_game/docs/project_schedule.json # Write a project schedule with a user requirement. >>> user_requirement = "Write project schedule for a snake game following these requirements: ..."