From 1a2ca4f8085fdf1c7dd7131298d898f2c14f02ca Mon Sep 17 00:00:00 2001 From: liuwei Date: Mon, 2 Feb 2026 14:05:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=87=AA=E5=8A=A8=E5=AF=B9?= =?UTF-8?q?=E8=AF=9D=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/ai_auto_response/main.py | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/plugins/ai_auto_response/main.py b/plugins/ai_auto_response/main.py index 2b2a1fc..087b433 100644 --- a/plugins/ai_auto_response/main.py +++ b/plugins/ai_auto_response/main.py @@ -151,8 +151,8 @@ class AIAutoResponsePlugin(MessagePluginInterface): return False, "没有权限" # 处理自动回复 try: - # 获取最近的消息 - messages = [msg["message"] for msg in self.group_messages[roomid]] + # 获取最近的消息 (完整的消息对象) + chat_history = self.group_messages[roomid] timestamp = message.get("timestamp", "") # 记录触发原因 @@ -160,7 +160,7 @@ class AIAutoResponsePlugin(MessagePluginInterface): self.LOG.info(f"[{roomid}] 触发高频率回复规则,准备生成回复") # 生成回复 - response = self._generate_response_with_dify(content, messages) + response = self._generate_response_with_dify(content, chat_history) if response: # 发送回复 await bot.send_text_message(roomid, response, sender) @@ -172,21 +172,29 @@ class AIAutoResponsePlugin(MessagePluginInterface): self.LOG.error(f"处理AI自动对话出错: {e}") return False, f"处理出错: {e}" - def _generate_response_with_dify(self, message: str, messages: List[str]) -> str: + def _generate_response_with_dify(self, current_message: str, chat_history: List[Dict[str, Any]]) -> str: """使用DIFY API生成自动回复内容""" try: # 构建上下文消息 # 取更多上下文以帮助理解语境 - context_messages = messages[-10:] if len(messages) > 10 else messages - context = "\n".join(context_messages) + recent_msgs = chat_history[-10:] if len(chat_history) > 10 else chat_history + + context_str_list = [] + for msg in recent_msgs: + sender = msg.get("sender", "Unknown") + content = msg.get("message", "") + context_str_list.append(f"{sender}: {content}") + + context = "\n".join(context_str_list) # 构建提示词 - 增强拟人化指令 prompt = ( - f"当前群聊上下文(最后一句是最新消息):\n{context}\n\n" + f"当前群聊上下文(格式为 '发言人: 内容',最后一句是最新消息):\n{context}\n\n" f"指令:\n" - f"1. 保持简短(1-2句话),口语化,不要长篇大论。\n" - f"2. 不要重复之前的回复。\n" - f"3. 如果最后一句不是对你说的,且你觉得没必要强行接话,可以回个表情或简短的语气词,或者委婉结束话题。\n" + f"1. 参考上下文。\n" + f"2. 保持简短(1-2句话),口语化,不要长篇大论。\n" + f"3. 不要重复之前的回复。\n" + f"4. 如果最后一句不是对你说的,且你觉得没必要强行接话,可以回个表情或简短的语气词,或者委婉结束话题。\n" f"请生成回复:" )