diff --git a/metagpt/roles/role.py b/metagpt/roles/role.py index 3bcd600fc..b234a846f 100644 --- a/metagpt/roles/role.py +++ b/metagpt/roles/role.py @@ -166,6 +166,9 @@ class Role(SerializationMixin, is_polymorphic_base=True): Role.model_rebuild() super().__init__(**data) + if self.is_human: + self.llm = HumanProvider() + self.llm.system_prompt = self._get_prefix() self._watch(data.get("watch") or [UserRequirement]) diff --git a/tests/metagpt/roles/test_role.py b/tests/metagpt/roles/test_role.py index b3b54455e..bef71f9a5 100644 --- a/tests/metagpt/roles/test_role.py +++ b/tests/metagpt/roles/test_role.py @@ -3,6 +3,7 @@ # @Desc : unittest of Role import pytest +from metagpt.llm import HumanProvider from metagpt.roles.role import Role @@ -12,5 +13,10 @@ def test_role_desc(): assert role.desc == "Best Seller" +def test_role_human(): + role = Role(is_human=True) + assert isinstance(role.llm, HumanProvider) + + if __name__ == "__main__": pytest.main([__file__, "-s"])