diff --git a/metagpt/roles/di/data_analyst.py b/metagpt/roles/di/data_analyst.py index abb501830..03d04980d 100644 --- a/metagpt/roles/di/data_analyst.py +++ b/metagpt/roles/di/data_analyst.py @@ -31,7 +31,7 @@ class DataAnalyst(RoleZero): task_type_desc: str = TASK_TYPE_DESC tools: list[str] = ["Plan", "DataAnalyst", "RoleZero", "Browser"] - custom_tools: list[str] = ["machine learning", "web scraping", "Terminal"] + custom_tools: list[str] = ["web scraping", "Terminal"] custom_tool_recommender: ToolRecommender = None experience_retriever: ExpRetriever = KeywordExpRetriever() @@ -72,6 +72,9 @@ class DataAnalyst(RoleZero): Args: instruction: The specific task description for which the code needs to be written. """ + if self.planner.plan: + logger.info(f"Current task {self.planner.plan.current_task}") + counter = 0 success = False await self.execute_code.init_code() diff --git a/metagpt/tools/tool_recommend.py b/metagpt/tools/tool_recommend.py index 4bea137c3..cca5cb3ae 100644 --- a/metagpt/tools/tool_recommend.py +++ b/metagpt/tools/tool_recommend.py @@ -157,6 +157,10 @@ class ToolRecommender(BaseModel): ranked_tools = list(ranked_tools.values())[0] # -------------结束--------------- + if not isinstance(ranked_tools, list): + logger.warning(f"Invalid rank result: {ranked_tools}, will use the recalled tools instead.") + ranked_tools = list(available_tools.keys()) + valid_tools = validate_tool_names(ranked_tools) return list(valid_tools.values())[:topk]