diff --git a/rdagent/components/workflow/rd_loop.py b/rdagent/components/workflow/rd_loop.py index 3fd21aab..b7f217b8 100644 --- a/rdagent/components/workflow/rd_loop.py +++ b/rdagent/components/workflow/rd_loop.py @@ -87,3 +87,6 @@ class RDLoop(LoopBase, metaclass=LoopMeta): feedback = self.summarizer.generate_feedback(prev_out["running"], self.trace) logger.log_object(feedback, tag="feedback") self.trace.hist.append((prev_out["running"], feedback)) + + # TODO: `def record(self, prev_out: dict[str, Any]):` has already been hard coded into LoopBase + # So we should add it into RDLoop class to make sure every RDLoop Sub Class be aware of it. diff --git a/rdagent/utils/workflow/loop.py b/rdagent/utils/workflow/loop.py index ed2360e3..683bfa07 100644 --- a/rdagent/utils/workflow/loop.py +++ b/rdagent/utils/workflow/loop.py @@ -60,7 +60,8 @@ class LoopMeta(type): """ steps = LoopMeta._get_steps(bases) # all the base classes of parents for name, attr in attrs.items(): - if not name.startswith("_") and callable(attr): + if not name.startswith("_") and callable(attr) and not isinstance(attr, type): + # NOTE: `not isinstance(attr, type)` is trying to exclude class type attribute if name not in steps and name not in ["load", "dump"]: # incase user override the load/dump method # NOTE: if we override the step in the subclass # Then it is not the new step. So we skip it.