瀏覽代碼

Update dialogue_manager: remove message that will trigger safe problem

StrayWarrior 1 月之前
父節點
當前提交
4587d1d804
共有 1 個文件被更改,包括 11 次插入0 次删除
  1. 11 0
      pqai_agent/dialogue_manager.py

+ 11 - 0
pqai_agent/dialogue_manager.py

@@ -640,6 +640,17 @@ class DialogueManager:
             aggregated_message = '\n'.join(messages_to_aggr)
             messages.append(DialogueManager.build_chat_message(
                 last_message_role, aggregated_message, ChatServiceType.COZE_CHAT))
+        # 从末尾开始往前遍历,如果assistant曾经回复“无法回答”,则清除当前消息和前一条用户消息
+        idx = len(messages) - 1
+        while idx >= 0:
+            if messages[idx].role == 'assistant' and '无法回答' in messages[idx].content:
+                messages.pop(idx)
+                idx -= 1
+                if idx >= 0:
+                    messages.pop(idx)
+                    idx -= 1
+            else:
+                idx -= 1
         return messages
 
     def build_active_greeting_config(self, user_tags: List[str]):