diff --git a/metagpt/actions/di/execute_nb_code.py b/metagpt/actions/di/execute_nb_code.py index 9a9f0483a..cc2c05341 100644 --- a/metagpt/actions/di/execute_nb_code.py +++ b/metagpt/actions/di/execute_nb_code.py @@ -85,10 +85,12 @@ class ExecuteNbCode(Action): ) self.reporter = NotebookReporter() self.set_nb_client() - asyncio.run(self._init_code()) + self._init_called = False async def _init_code(self): - await self.run(INI_CODE) + if not self._init_called: + await self.run(INI_CODE) + self._init_called = True def set_nb_client(self): self.nb_client = RealtimeOutputNotebookClient( diff --git a/metagpt/roles/di/data_analyst.py b/metagpt/roles/di/data_analyst.py index b3144a100..491968d14 100644 --- a/metagpt/roles/di/data_analyst.py +++ b/metagpt/roles/di/data_analyst.py @@ -40,6 +40,7 @@ class DataAnalyst(RoleZero): """Write a code block for current task and execute it in an interactive notebook environment.""" counter = 0 success = False + await self.execute_code._init_code() # plan info plan_status = self.planner.get_plan_status()