diff --git a/metagpt/utils/common.py b/metagpt/utils/common.py index c7751c2af..3295603b4 100644 --- a/metagpt/utils/common.py +++ b/metagpt/utils/common.py @@ -501,7 +501,7 @@ def role_raise_decorator(func): self.rc.memory.delete(self.latest_observed_msg) # raise again to make it captured outside raise Exception(format_trackback_info(limit=None)) - except Exception: + except Exception as e: if self.latest_observed_msg: logger.warning( "There is a exception in role's execution, in order to resume, " @@ -510,6 +510,11 @@ def role_raise_decorator(func): # remove role newest observed msg to make it observed again self.rc.memory.delete(self.latest_observed_msg) # raise again to make it captured outside + last_error = e.last_attempt._exception + name = any_to_str(last_error) + if re.match(r"^openai\.", name) or re.match(r"^httpx\.", name): + raise last_error + raise Exception(format_trackback_info(limit=None)) return wrapper