From c92793c27ceae28cdc0fba67c39648b5cb42cabd Mon Sep 17 00:00:00 2001 From: paulaan Date: Sat, 9 Dec 2023 12:57:54 +0700 Subject: [PATCH 1/3] researcher allow override system prompt --- metagpt/roles/researcher.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/metagpt/roles/researcher.py b/metagpt/roles/researcher.py index c5512121a..f954c60bb 100644 --- a/metagpt/roles/researcher.py +++ b/metagpt/roles/researcher.py @@ -46,7 +46,7 @@ class Researcher(Role): else: topic = msg.content - research_system_text = get_research_system_text(topic, self.language) + research_system_text = self.research_system_text(topic) if isinstance(todo, CollectLinks): links = await todo.run(topic, 4, 4) ret = Message("", Report(topic=topic, links=links), role=self.profile, cause_by=type(todo)) @@ -64,6 +64,17 @@ class Researcher(Role): self._rc.memory.add(ret) return ret + def research_system_text(self, topic) -> str: + """ BACKWARD compatible + This allows sub-class able to define its own system prompt based on topic. + return the previous implementation to have backward compatible + Args: + topic: + language: + + Returns: str + """ + return get_research_system_text(topic, self.language) async def react(self) -> Message: msg = await super().react() report = msg.instruct_content From 6b2fb95e665064a53c5098f28c4771cd5d69d70b Mon Sep 17 00:00:00 2001 From: paulaan Date: Sat, 9 Dec 2023 12:58:51 +0700 Subject: [PATCH 2/3] reformat for code convention --- metagpt/roles/researcher.py | 1 + 1 file changed, 1 insertion(+) diff --git a/metagpt/roles/researcher.py b/metagpt/roles/researcher.py index f954c60bb..c60d54486 100644 --- a/metagpt/roles/researcher.py +++ b/metagpt/roles/researcher.py @@ -75,6 +75,7 @@ class Researcher(Role): Returns: str """ return get_research_system_text(topic, self.language) + async def react(self) -> Message: msg = await super().react() report = msg.instruct_content From 9d0f19aeee7a713530217e19eac414a9354d5355 Mon Sep 17 00:00:00 2001 From: paulaan Date: Sat, 9 Dec 2023 22:01:47 +0700 Subject: [PATCH 3/3] current task might swith different sys prompt --- metagpt/roles/researcher.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/metagpt/roles/researcher.py b/metagpt/roles/researcher.py index c60d54486..387999cff 100644 --- a/metagpt/roles/researcher.py +++ b/metagpt/roles/researcher.py @@ -4,7 +4,7 @@ import asyncio from pydantic import BaseModel -from metagpt.actions import CollectLinks, ConductResearch, WebBrowseAndSummarize +from metagpt.actions import Action, CollectLinks, ConductResearch, WebBrowseAndSummarize from metagpt.actions.research import get_research_system_text from metagpt.const import RESEARCH_PATH from metagpt.logs import logger @@ -46,7 +46,7 @@ class Researcher(Role): else: topic = msg.content - research_system_text = self.research_system_text(topic) + research_system_text = self.research_system_text(topic, todo) if isinstance(todo, CollectLinks): links = await todo.run(topic, 4, 4) ret = Message("", Report(topic=topic, links=links), role=self.profile, cause_by=type(todo)) @@ -64,7 +64,7 @@ class Researcher(Role): self._rc.memory.add(ret) return ret - def research_system_text(self, topic) -> str: + def research_system_text(self, topic, current_task: Action) -> str: """ BACKWARD compatible This allows sub-class able to define its own system prompt based on topic. return the previous implementation to have backward compatible