优化自动对话逻辑

This commit is contained in:
liuwei
2026-02-02 13:34:32 +08:00
parent d1fc743af9
commit 5be3be48bf
5 changed files with 339 additions and 209 deletions

View File

@@ -130,7 +130,7 @@ class AIAutoResponsePlugin(MessagePluginInterface):
messages = [msg["message"] for msg in self.group_messages[roomid]]
timestamp = message.get("timestamp", "")
# 传递完整的聊天记录给should_intervene方法
can = self.intervention_bot.should_intervene(timestamp, content, messages, self.group_messages[roomid])
can = self.intervention_bot.should_intervene(roomid, timestamp, content, messages, self.group_messages[roomid])
if can:
self.LOG.debug(f"[{roomid}] 触发自动回复规则,准备生成回复")
return True
@@ -175,15 +175,21 @@ class AIAutoResponsePlugin(MessagePluginInterface):
def _generate_response_with_dify(self, message: str, messages: List[str]) -> str:
"""使用DIFY API生成自动回复内容"""
try:
# 检测话题类型
topic_type = self.intervention_bot.detect_topic(message)
# 构建上下文消息
context_messages = messages[-5:] if len(messages) > 5 else messages
# 取更多上下文以帮助理解语境
context_messages = messages[-10:] if len(messages) > 10 else messages
context = "\n".join(context_messages)
# 构建提示词
prompt = f"请根据以下群聊上下文,生成一个自然、友好的回复,主要关注最后一句消息,前面的作为参考信息。\n上下文:\n{context}\n\n当前话题类型:{topic_type or '一般聊天'}\n\n请生成回复:"
# 构建提示词 - 增强拟人化指令
prompt = (
f"当前群聊上下文(最后一句是最新消息):\n{context}\n\n"
f"指令:\n"
f"1. 请以'瑞依'(猫娘)的身份回复最后一句消息,参考上下文。\n"
f"2. 保持简短1-2句话口语化不要长篇大论。\n"
f"3. 不要重复之前的回复。\n"
f"4. 如果最后一句不是对你说的,且你觉得没必要强行接话,可以回个表情或简短的语气词,或者委婉结束话题。\n"
f"请生成回复:"
)
# 调用DIFY API
headers = {