From 3125f4c0c799837cbab655a58e86f52ceb5fcb9f Mon Sep 17 00:00:00 2001 From: shenchucheng Date: Fri, 2 Feb 2024 16:35:51 +0800 Subject: [PATCH] remove extra value after model_validator in Role/ContextMixin --- metagpt/context_mixin.py | 11 ++++++----- metagpt/roles/role.py | 7 ++++--- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/metagpt/context_mixin.py b/metagpt/context_mixin.py index cf0604606..59daa692f 100644 --- a/metagpt/context_mixin.py +++ b/metagpt/context_mixin.py @@ -34,14 +34,15 @@ class ContextMixin(BaseModel): @model_validator(mode="after") def validate_context_mixin_extra(self): - self._process_context_mixin_extra(**(self.model_extra or {})) + self._process_context_mixin_extra() return self - def _process_context_mixin_extra(self, **kwargs): + def _process_context_mixin_extra(self): """Process the extra field""" - self.set_context(kwargs.get("context")) - self.set_config(kwargs.get("config")) - self.set_llm(kwargs.get("llm")) + kwargs = self.model_extra or {} + self.set_context(kwargs.pop("context", None)) + self.set_config(kwargs.pop("config", None)) + self.set_llm(kwargs.pop("llm", None)) def set(self, k, v, override=False): """Set attribute""" diff --git a/metagpt/roles/role.py b/metagpt/roles/role.py index 20cd4da99..c098f95af 100644 --- a/metagpt/roles/role.py +++ b/metagpt/roles/role.py @@ -151,18 +151,19 @@ class Role(SerializationMixin, ContextMixin, BaseModel): @model_validator(mode="after") def validate_role_extra(self): - self._process_role_extra(**(self.model_extra or {})) + self._process_role_extra() return self - def _process_role_extra(self, **kwargs): + def _process_role_extra(self): self.pydantic_rebuild_model() + kwargs = self.model_extra or {} if self.is_human: self.llm = HumanProvider(None) self._check_actions() self.llm.system_prompt = self._get_prefix() - self._watch(kwargs.get("watch") or [UserRequirement]) + self._watch(kwargs.pop("watch", [UserRequirement])) if self.latest_observed_msg: self.recovered = True