From d651ed288255fa928c5f4012ddd2023f69b7822f Mon Sep 17 00:00:00 2001 From: leonzh0u Date: Sun, 16 Jul 2023 18:28:44 -0400 Subject: [PATCH] 6.i initial pr --- metagpt/roles/role.py | 1 + metagpt/roles/seacher.py | 23 ++++++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/metagpt/roles/role.py b/metagpt/roles/role.py index 36269aed2..66be77dcd 100644 --- a/metagpt/roles/role.py +++ b/metagpt/roles/role.py @@ -219,6 +219,7 @@ class Role: if message: if isinstance(message, str): message = Message(message) + self.recv(message) if isinstance(message, Message): self.recv(message) elif not await self._observe(): diff --git a/metagpt/roles/seacher.py b/metagpt/roles/seacher.py index 8e9f5c417..bc7bd7470 100644 --- a/metagpt/roles/seacher.py +++ b/metagpt/roles/seacher.py @@ -5,10 +5,12 @@ @Author : alexanderwu @File : seacher.py """ -from metagpt.roles import Role -from metagpt.actions import SearchAndSummarize -from metagpt.tools import SearchEngineType +from metagpt.logs import logger +from metagpt.roles import Role +from metagpt.actions import SearchAndSummarize, ActionOutput +from metagpt.tools import SearchEngineType +from metagpt.schema import Message class Searcher(Role): def __init__(self, name='Alice', profile='Smart Assistant', goal='Provide search services for users', @@ -19,3 +21,18 @@ class Searcher(Role): def set_search_func(self, search_func): action = SearchAndSummarize("", engine=SearchEngineType.CUSTOM_ENGINE, search_func=search_func) self._init_actions([action]) + + async def _act_sp(self) -> Message: + logger.info(f"{self._setting}: ready to {self._rc.todo}") + logger.info(self._rc.memory.get(k=0)) + response = await self._rc.todo.run(self._rc.memory.get(k=0)) + # logger.info(response) + if isinstance(response, ActionOutput): + msg = Message(content=response.content, instruct_content=response.instruct_content, + role=self.profile, cause_by=type(self._rc.todo)) + else: + msg = Message(content=response, role=self.profile, cause_by=type(self._rc.todo)) + self._rc.memory.add(msg) + + async def _act(self) -> Message: + return await self._act_sp() \ No newline at end of file