FoundationAgents/MetaGPT · error · NotImplementedError
Invalid strategy: {strategy}, only support BFS/DFS/MCTS curr
Error message
Invalid strategy: {strategy}, only support BFS/DFS/MCTS currently! What it means
TreeofThought._initialize_solver maps the Strategy enum to solver classes: BFS->BFSSolver, DFS->DFSSolver, MCTS->MCTSSolver. Any other strategy value hits an explicit NotImplementedError. In practice this fires when a strategy is injected that is not one of the three enum members (note MCTSSolver.solve itself is also unimplemented upstream).
Source
Thrown at metagpt/strategy/tot.py:264
def _initialize_solver(self, strategy):
"""
Initialize the solver based on the chosen strategy.
Args:
strategy (Strategy): The strategy to use for solving.
Returns:
ThoughtSolverBase: An instance of the appropriate solver.
"""
if strategy == Strategy.BFS:
self.solver = BFSSolver(config=self.config)
elif strategy == Strategy.DFS:
self.solver = DFSSolver(config=self.config)
elif strategy == Strategy.MCTS:
self.solver = MCTSSolver(config=self.config)
else:
raise NotImplementedError(f"Invalid strategy: {strategy}, only support BFS/DFS/MCTS currently!")
async def solve(self, init_prompt=""):
"""
Solve the problem using the specified strategy.
Args:
init_prompt (str): The initial prompt for the solver.
strategy (str): The strategy to use for solving.
Returns:
Any: The solution obtained using the selected strategy.
"""
await self.solver.solve(init_prompt)
View on GitHub (pinned to 11cdf466d0)
Solutions
- Use Strategy.BFS or Strategy.DFS (these have working solvers)
- Avoid Strategy.MCTS for now — MCTSSolver.solve raises NotImplementedError at runtime
- To add a custom strategy, subclass TreeofThought and extend _initialize_solver with your solver class
Example fix
// before tot = TreeofThought(strategy=Strategy.MCTS) # constructs, but solve() raises NotImplementedError // after from metagpt.strategy.tot import TreeofThought, Strategy tot = TreeofThought(strategy=Strategy.BFS) answer = await tot.solve(prompt)
Defensive patterns
Strategy: type-guard
Validate before calling
from metagpt.strategy.tot import Strategy assert strategy in (Strategy.BFS, Strategy.DFS), "MCTS solver is not implemented; use BFS or DFS"
Type guard
from metagpt.strategy.tot import Strategy
def is_implemented_strategy(strategy) -> bool:
return strategy in (Strategy.BFS, Strategy.DFS) Try / catch
try:
tot = TreeofThought(config=cfg, strategy=strategy)
answer = await tot.solve(prompt)
except NotImplementedError as e:
if "only support BFS/DFS/MCTS" in str(e) or "solve" in str(e):
tot = TreeofThought(config=cfg, strategy=Strategy.BFS)
answer = await tot.solve(prompt)
else:
raise Prevention
- Default to Strategy.BFS; only use strategies you have verified have working solvers
- Guard custom strategy input against the three enum members
- Wrap TreeofThought construction and solve() together — both can raise NotImplementedError
When it happens
Trigger: Constructing TreeofThought(strategy=<something not Strategy.BFS/DFS/MCTS>) — e.g. a raw string that bypassed validation or a custom enum member added to Strategy without a solver.
Common situations: Passing strings like "beam" or "best-first" expecting support; extending the Strategy enum without registering a solver; note also that choosing MCTS currently raises NotImplementedError at solve() time since MCTSSolver.solve is a stub.
Related errors
- File format not supported.
- not supported action_type: {action_type}
- Invalid request type. Valid types: {', '.join([t.value for t
- Unsupported react mode: {self.rc.react_mode}
AI-assisted analysis of FoundationAgents/MetaGPT@11cdf466d0 (2026-08-14).
Data as JSON: /api/errors/df5704a586086a6d.
Report an issue: GitHub.