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..1fa128ee6 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, @@ -270,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 + 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)