{"record":{"id":"4e56f1dcd7353b90","repo":"FoundationAgents/MetaGPT","slug":"invalid-mode-self-args-rs-mode","errorCode":null,"errorMessage":"Invalid mode: {self.args.rs_mode}","messagePattern":"Invalid mode: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"metagpt/ext/sela/runner/random_search.py","lineNumber":33,"sourceCode":"\n    async def run_experiment(self):\n        # state = create_initial_state(self.args.task, start_task_id=1, data_config=self.data_config, low_is_better=self.args.low_is_better, name=\"\")\n        user_requirement = self.state[\"requirement\"]\n        exp_pool_path = get_exp_pool_path(self.args.task, self.data_config, pool_name=\"ds_analysis_pool\")\n        exp_pool = InstructionGenerator.load_insight_pool(\n            exp_pool_path, use_fixed_insights=self.args.use_fixed_insights\n        )\n        if self.args.rs_mode == \"single\":\n            exps = InstructionGenerator._random_sample(exp_pool, self.args.num_experiments)\n            exps = [exp[\"Analysis\"] for exp in exps]\n        elif self.args.rs_mode == \"set\":\n            exps = []\n            for i in range(self.args.num_experiments):\n                exp_set = InstructionGenerator.sample_instruction_set(exp_pool)\n                exp_set_text = \"\\n\".join([f\"{exp['task_id']}: {exp['Analysis']}\" for exp in exp_set])\n                exps.append(exp_set_text)\n        else:\n            raise ValueError(f\"Invalid mode: {self.args.rs_mode}\")\n\n        results = []\n        for i in range(self.args.num_experiments):\n            di = Experimenter(node_id=str(i), use_reflection=self.args.reflection, role_timeout=self.args.role_timeout)\n            di.role_dir = f\"{di.role_dir}_{self.args.task}\"\n            requirement = user_requirement + EXPS_PROMPT.format(experience=exps[i])\n            print(requirement)\n            score_dict = await self.run_di(di, requirement, run_idx=i)\n            results.append(\n                {\n                    \"idx\": i,\n                    \"score_dict\": score_dict,\n                    \"rs_mode\": self.args.rs_mode,\n                    \"insights\": exps[i],\n                    \"user_requirement\": requirement,\n                    \"args\": vars(self.args),\n                }\n            )","sourceCodeStart":15,"sourceCodeEnd":51,"githubUrl":"https://github.com/FoundationAgents/MetaGPT/blob/11cdf466d042aece04fc6cfd13b28e1a70341b1f/metagpt/ext/sela/runner/random_search.py#L15-L51","documentation":"Raised by RandomSearchRunner when args.rs_mode is neither 'single' (sample one experiment per run from the pool) nor 'set' (sample and join an instruction set per run). The string dispatch has a final else that raises.","triggerScenarios":"Running run_experiment.py with --exp_mode rs and --rs_mode set to anything other than 'single' or 'set' (typos, or omitting rs_mode so it is None).","commonSituations":"Missing --rs_mode argument when the arg parser default is None; typo like 'Set' or 'sets'; flags from an incompatible SELA version.","solutions":["Pass --rs_mode single or --rs_mode set explicitly","Check for case-sensitive typos in the argument","Check the argument default in get_args() for your version and set it accordingly"],"exampleFix":"# before\n--exp_mode rs --rs_mode sets\n\n# after\n--exp_mode rs --rs_mode set","handlingStrategy":"validation","validationCode":"assert args.rs_mode in {\"single\", \"set\"}, f\"bad rs_mode {args.rs_mode}\"","typeGuard":"def is_valid_rs_mode(mode: str) -> bool:\n    return mode in {\"single\", \"set\"}","tryCatchPattern":null,"preventionTips":["Always pass --rs_mode explicitly with exp_mode rs","Add choices=(\"single\", \"set\") to the argparse definition"],"tags":["sela","cli","validation","random-search"],"backgroundTag":null,"analyzedSha":"11cdf466d042aece04fc6cfd13b28e1a70341b1f","analyzedAt":"2026-08-14T23:20:02.994Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}