Browse Source

Update dialogue_manager: support human intervention reason

StrayWarrior 18 hours ago
parent
commit
cf078fb2c1
1 changed files with 5 additions and 3 deletions
  1. 5 3
      dialogue_manager.py

+ 5 - 3
dialogue_manager.py

@@ -340,13 +340,14 @@ class DialogueManager:
         # 发送告警
         self._send_human_intervention_alert()
 
-    def _send_human_intervention_alert(self) -> None:
+    def _send_human_intervention_alert(self, reason: Optional[str] = None) -> None:
         time_str = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
         alert_message = f"""
         人工介入告警
         员工: {self.staff_profile.get("agent_name", "未知")}[{self.staff_id}]
         用户: {self.user_profile.get("nickname", "未知")}[{self.user_id}]
         时间: {time_str}
+        原因:{reason if reason else "未知"}
         最近对话:"""
 
         alert_message = textwrap.dedent(alert_message)
@@ -376,9 +377,10 @@ class DialogueManager:
         :return:
         """
         if '<人工介入>' in llm_response:
-            logger.warning(f'staff[{self.staff_id}], user[{self.user_id}]: human intervention triggered')
+            reason = llm_response.replace('<人工介入>', '')
+            logger.warning(f'staff[{self.staff_id}], user[{self.user_id}]: human intervention triggered, reason: {reason}')
             self.do_state_change(DialogueState.HUMAN_INTERVENTION)
-            self._send_human_intervention_alert()
+            self._send_human_intervention_alert(reason)
             return None
 
         """根据当前状态处理LLM响应,如果处于人工介入状态则返回None"""