From 97f707784bd8558b3bbd138d9380af55bb85f9a4 Mon Sep 17 00:00:00 2001 From: lidanyang Date: Thu, 14 Dec 2023 13:56:23 +0800 Subject: [PATCH] reformat --- metagpt/actions/debug_code.py | 124 ++++++++++++++++++---------------- 1 file changed, 64 insertions(+), 60 deletions(-) diff --git a/metagpt/actions/debug_code.py b/metagpt/actions/debug_code.py index 58d006a08..3e1705d8e 100644 --- a/metagpt/actions/debug_code.py +++ b/metagpt/actions/debug_code.py @@ -1,57 +1,56 @@ from typing import Dict, List, Union, Tuple, Optional, Any -from metagpt.actions import Action from metagpt.logs import logger from metagpt.schema import Message, Plan from metagpt.utils.common import CodeParser, create_func_config from metagpt.actions.write_analysis_code import BaseWriteAnalysisCode -DEBUG_REFLECTION_EXAMPLE = '''Example 1: - [previous impl]: - ```python - def add(a: int, b: int) -> int: - """ - Given integers a and b, return the total value of a and b. - """ - return a - b - ``` +DEBUG_REFLECTION_EXAMPLE = ''' +Example 1: +[previous impl]: +```python +def add(a: int, b: int) -> int: + """ + Given integers a and b, return the total value of a and b. + """ + return a - b +``` - [runtime Error]: - Tested passed: +[runtime Error]: +Tested passed: - Tests failed: - assert add(1, 2) == 3 # output: -1 - assert add(1, 2) == 4 # output: -1 +Tests failed: +assert add(1, 2) == 3 # output: -1 +assert add(1, 2) == 4 # output: -1 - [reflection on previous impl]: - The implementation failed the test cases where the input integers are 1 and 2. The issue arises because the code does not add the two integers together, but instead subtracts the second integer from the first. To fix this issue, we should change the operator from `-` to `+` in the return statement. This will ensure that the function returns the correct output for the given input. +[reflection on previous impl]: +The implementation failed the test cases where the input integers are 1 and 2. The issue arises because the code does not add the two integers together, but instead subtracts the second integer from the first. To fix this issue, we should change the operator from `-` to `+` in the return statement. This will ensure that the function returns the correct output for the given input. - [improved impl]: - ```python - def add(a: int, b: int) -> int: - """ - Given integers a and b, return the total value of a and b. - """ - return a + b - ``` - ''' +[improved impl]: +```python +def add(a: int, b: int) -> int: + """ + Given integers a and b, return the total value of a and b. + """ + return a + b +``` +''' REFLECTION_PROMPT = """ - Here is an example for you. - {debug_example} - [context] - {context} - - [previous impl] - {code} - [runtime Error] - {runtime_result} +Here is an example for you. +{debug_example} +[context] +{context} - Analysis the error step by step, provide me improve method and code. Remember to follow [context] rerquirement. Don't forget write code for steps behind the error step. - [reflection on previous impl]: - xxx +[previous impl] +{code} +[runtime Error] +{runtime_result} - """ +Analysis the error step by step, provide me improve method and code. Remember to follow [context] rerquirement. Don't forget write code for steps behind the error step. +[reflection on previous impl]: +xxx +""" CODE_REFLECTION = { "name": "execute_reflection_code", @@ -85,10 +84,10 @@ class DebugCode(BaseWriteAnalysisCode): name: str = "debugcode" context: Optional[str] = None llm: None - + def __init__(self, **kwargs: Any): super().__init__(**kwargs) - + async def run_reflection( self, # goal, @@ -100,23 +99,26 @@ class DebugCode(BaseWriteAnalysisCode): ) -> dict: info = [] # finished_code_and_result = finished_code + "\n [finished results]\n\n" + finished_code_result - reflection_prompt = REFLECTION_PROMPT.format(debug_example=DEBUG_REFLECTION_EXAMPLE, - context=context, - # goal=goal, - # finished_code=finished_code_and_result, - code=code, - runtime_result=runtime_result - ) + reflection_prompt = REFLECTION_PROMPT.format( + debug_example=DEBUG_REFLECTION_EXAMPLE, + context=context, + # goal=goal, + # finished_code=finished_code_and_result, + code=code, + runtime_result=runtime_result, + ) system_prompt = "You are an AI Python assistant. You will be given your previous implementation code of a task, runtime error results, and a hint to change the implementation appropriately. Write your full implementation " info.append(Message(role="system", content=system_prompt)) info.append(Message(role="user", content=reflection_prompt)) - + # msg = messages_to_str(info) # resp = await self.llm.aask(msg=msg) - resp = await self.llm.aask_code(messages=info, **create_func_config(CODE_REFLECTION)) + resp = await self.llm.aask_code( + messages=info, **create_func_config(CODE_REFLECTION) + ) logger.info(f"reflection is {resp}") return resp - + # async def rewrite_code(self, reflection: str = "", context: List[Message] = None) -> str: # """ # 根据reflection重写代码 @@ -131,14 +133,16 @@ class DebugCode(BaseWriteAnalysisCode): # resp = await self.llm.aask(msg=msg) # improv_code = CodeParser.parse_code(block=None, text=resp) # return improv_code - - async def run(self, - context: List[Message] = None, - plan: str = "", - # finished_code: str = "", - # finished_code_result: str = "", - code: str = "", - runtime_result: str = "") -> str: + + async def run( + self, + context: List[Message] = None, + plan: str = "", + # finished_code: str = "", + # finished_code_result: str = "", + code: str = "", + runtime_result: str = "", + ) -> str: """ 根据当前运行代码和报错信息进行reflection和纠错 """ @@ -152,5 +156,5 @@ class DebugCode(BaseWriteAnalysisCode): ) # 根据reflection结果重写代码 # improv_code = await self.rewrite_code(reflection, context=context) - improv_code = reflection['improved_impl'] + improv_code = reflection["improved_impl"] return improv_code