diff --git a/metagpt/roles/role.py b/metagpt/roles/role.py index 3bcd600fc..71f6ec8f5 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 data.get("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..151608b6b 100644 --- a/tests/metagpt/roles/test_role.py +++ b/tests/metagpt/roles/test_role.py @@ -4,6 +4,7 @@ import pytest from metagpt.roles.role import Role +from metagpt.llm import HumanProvider def test_role_desc(): @@ -11,6 +12,9 @@ def test_role_desc(): assert role.profile == "Sales" 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"])