Files
2026-06-11 16:28:00 +08:00

63 lines
1.8 KiB
Python

from __future__ import annotations
from dataclasses import dataclass, field
@dataclass
class DialogRuleEngine:
stop_phrases: tuple[str, ...] = (
"不用了",
"算了",
"先不要了",
"先这样吧",
"停一下",
"停止",
"停止当前任务",
"结束这次操作",
"别弄了",
"不需要了",
)
positive_confirmation_tokens: tuple[str, ...] = (
"确认",
"好的",
"",
"继续",
"可以",
"确定",
"yes",
"ok",
)
negative_confirmation_tokens: tuple[str, ...] = (
"取消",
"不用",
"不要",
"",
"no",
"算了",
"停止",
)
confirmation_required_intents: tuple[str, ...] = ("cs_cancel_order",)
confirmation_required_risk_levels: tuple[str, ...] = ("high",)
metadata: dict[str, object] = field(default_factory=dict)
def is_stop_request(self, text: str) -> bool:
normalized = text.strip().lower().replace(" ", "")
if not normalized:
return False
return any(phrase in normalized for phrase in self.stop_phrases)
def parse_confirmation_decision(self, text: str) -> bool | None:
normalized = text.strip().lower()
if not normalized:
return None
if any(token == normalized or token in normalized for token in self.negative_confirmation_tokens):
return False
if any(token == normalized or token in normalized for token in self.positive_confirmation_tokens):
return True
return None
def requires_confirmation(self, intent_id: str, risk_level: str) -> bool:
if intent_id in self.confirmation_required_intents:
return True
return risk_level in self.confirmation_required_risk_levels