From e5587500135c4770f09bea9f305c98e6e3fcf69b Mon Sep 17 00:00:00 2001 From: Yizhou Chi Date: Wed, 14 Aug 2024 19:00:35 +0800 Subject: [PATCH 1/3] add quick response system prompt --- metagpt/prompts/di/role_zero.py | 5 +++++ metagpt/roles/di/role_zero.py | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/metagpt/prompts/di/role_zero.py b/metagpt/prompts/di/role_zero.py index b7b32b7f3..9dcc97b96 100644 --- a/metagpt/prompts/di/role_zero.py +++ b/metagpt/prompts/di/role_zero.py @@ -204,3 +204,8 @@ Thought: The request is vague and lacks specifics, requiring clarification on th Response Category: AMBIGUOUS. """ + +QUICK_RESPONSE_SYSTEM_PROMPT = """ +{role_info} +However, you MUST respond to the user message by yourself directly, DON'T ask your team members. +""" \ No newline at end of file diff --git a/metagpt/roles/di/role_zero.py b/metagpt/roles/di/role_zero.py index e287471f6..fff14a883 100644 --- a/metagpt/roles/di/role_zero.py +++ b/metagpt/roles/di/role_zero.py @@ -23,6 +23,7 @@ from metagpt.prompts.di.role_zero import ( QUICK_THINK_PROMPT, QUICK_THINK_EXAMPLES, QUICK_THINK_SYSTEM_PROMPT, + QUICK_RESPONSE_SYSTEM_PROMPT, REGENERATE_PROMPT, ROLE_INSTRUCTION, SYSTEM_PROMPT, @@ -275,7 +276,7 @@ class RoleZero(Role): if "QUICK" in intent_result or "AMBIGUOUS " in intent_result: # llm call with the original context async with ThoughtReporter(enable_llm_stream=True) as reporter: await reporter.async_report({"type": "quick"}) - answer = await self.llm.aask(self.llm.format_msg(memory)) + answer = await self.llm.aask(self.llm.format_msg(memory), system_msgs=QUICK_RESPONSE_SYSTEM_PROMPT.format(role_info=self._get_prefix())) elif "SEARCH" in intent_result: query = "\n".join(str(msg) for msg in memory) answer = await SearchEnhancedQA().run(query) From 7a96978e149dec6e0dcf2636299fd77665c5934e Mon Sep 17 00:00:00 2001 From: Yizhou Chi Date: Wed, 14 Aug 2024 19:13:45 +0800 Subject: [PATCH 2/3] remove space --- metagpt/roles/di/role_zero.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metagpt/roles/di/role_zero.py b/metagpt/roles/di/role_zero.py index fff14a883..3e79b6a2c 100644 --- a/metagpt/roles/di/role_zero.py +++ b/metagpt/roles/di/role_zero.py @@ -273,7 +273,7 @@ class RoleZero(Role): context = self.llm.format_msg(memory + [UserMessage(content=QUICK_THINK_PROMPT)]) intent_result = await self.llm.aask(context, system_msgs=self.format_quick_system_prompt()) - if "QUICK" in intent_result or "AMBIGUOUS " in intent_result: # llm call with the original context + if "QUICK" in intent_result or "AMBIGUOUS" in intent_result: # llm call with the original context async with ThoughtReporter(enable_llm_stream=True) as reporter: await reporter.async_report({"type": "quick"}) answer = await self.llm.aask(self.llm.format_msg(memory), system_msgs=QUICK_RESPONSE_SYSTEM_PROMPT.format(role_info=self._get_prefix())) From a26199afd9ac4aabcb5196f75d5bdee95edfc376 Mon Sep 17 00:00:00 2001 From: Yizhou Chi Date: Wed, 14 Aug 2024 19:29:04 +0800 Subject: [PATCH 3/3] make system message a list --- metagpt/roles/di/role_zero.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/metagpt/roles/di/role_zero.py b/metagpt/roles/di/role_zero.py index 3e79b6a2c..1fa128ee6 100644 --- a/metagpt/roles/di/role_zero.py +++ b/metagpt/roles/di/role_zero.py @@ -271,12 +271,12 @@ class RoleZero(Role): # routing memory = self.get_memories(k=4) # FIXME: A magic number for two rounds of Q&A context = self.llm.format_msg(memory + [UserMessage(content=QUICK_THINK_PROMPT)]) - intent_result = await self.llm.aask(context, system_msgs=self.format_quick_system_prompt()) + intent_result = await self.llm.aask(context, system_msgs=[self.format_quick_system_prompt()]) if "QUICK" in intent_result or "AMBIGUOUS" in intent_result: # llm call with the original context async with ThoughtReporter(enable_llm_stream=True) as reporter: await reporter.async_report({"type": "quick"}) - answer = await self.llm.aask(self.llm.format_msg(memory), system_msgs=QUICK_RESPONSE_SYSTEM_PROMPT.format(role_info=self._get_prefix())) + answer = await self.llm.aask(self.llm.format_msg(memory), system_msgs=[QUICK_RESPONSE_SYSTEM_PROMPT.format(role_info=self._get_prefix())]) elif "SEARCH" in intent_result: query = "\n".join(str(msg) for msg in memory) answer = await SearchEnhancedQA().run(query)