From e27d97ee3c2680a48db329404feb848890442d2a Mon Sep 17 00:00:00 2001 From: stellahsr Date: Tue, 10 Oct 2023 00:42:00 +0800 Subject: [PATCH] bug fix: add reset before code generation bug fix: parse js code using original code --- metagpt/roles/minecraft/action_developer.py | 2 ++ metagpt/roles/minecraft/critic_agent.py | 7 +++---- metagpt/utils/minecraft/action_rsp_parser.py | 8 ++++++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/metagpt/roles/minecraft/action_developer.py b/metagpt/roles/minecraft/action_developer.py index 6d3d30a20..07136a82c 100644 --- a/metagpt/roles/minecraft/action_developer.py +++ b/metagpt/roles/minecraft/action_developer.py @@ -187,6 +187,8 @@ class ActionDeveloper(Base): return len(self._rc.news) async def run_step(self, human_msg, system_msg, *args, **kwargs): + await self._obtain_events() + logger.info("reset before step()!") while True: logger.info(f"self.rollout_num_iter {self.rollout_num_iter}") system_msg, human_msg, reward, done, info = await self.runcode_and_evaluate(human_msg, system_msg, *args, diff --git a/metagpt/roles/minecraft/critic_agent.py b/metagpt/roles/minecraft/critic_agent.py index ba37689c7..53ca69fab 100644 --- a/metagpt/roles/minecraft/critic_agent.py +++ b/metagpt/roles/minecraft/critic_agent.py @@ -132,7 +132,7 @@ class CriticReviewer(Base): } async def verify_task(self, human_msg, system_msg, *args, **kwargs): - success, critique = await VerifyTask().run(human_msg, system_msg, max_retries=5) + success, critique = await VerifyTask().run(human_msg, system_msg, max_retries=1) self.perform_game_info_callback( success, self.game_memory.update_exploration_progress ) @@ -144,8 +144,7 @@ class CriticReviewer(Base): instruct_content="verify_task", role=self.profile, send_to=agent_registry.entries["skill_manager"]()._setting.name, - ) # addnewskill - # TODO:if not success + ) async def _act(self) -> Message: @@ -158,7 +157,7 @@ class CriticReviewer(Base): # 获取最新的游戏周边信息 events = await self._execute_events() self.perform_game_info_callback(events, self.game_memory.update_chest_memory) - # logger.info(f"Execute return event is {self.game_memory.event}") + context = self.game_memory.context task = self.game_memory.current_task chest_observation = self.game_memory.chest_observation diff --git a/metagpt/utils/minecraft/action_rsp_parser.py b/metagpt/utils/minecraft/action_rsp_parser.py index 91ccc141d..762da9e99 100644 --- a/metagpt/utils/minecraft/action_rsp_parser.py +++ b/metagpt/utils/minecraft/action_rsp_parser.py @@ -38,10 +38,14 @@ def parse_action_response(msg: str): retry = 3 error = None # 3 times failed return error - babel_generator = require("@babel/generator").default while retry > 0: try: - parsed = parse_js_code(msg) + babel = require("@babel/core") + babel_generator = require("@babel/generator").default + + code_pattern = re.compile(r"```(?:javascript|js)(.*?)```", re.DOTALL) + code = "\n".join(code_pattern.findall(msg)) + parsed = babel.parse(code) # Collect func list: check if func & async functions = [] assert len(list(parsed.program.body)) > 0, "No functions found"