feat: add verbose ai-guard console logs and color mapping
This commit is contained in:
@@ -39,6 +39,7 @@ class _AnsiColorFormatter(logging.Formatter):
|
||||
("[THINK/RAW_OUTPUT]", "[AI思考-原始输出]"),
|
||||
("[REPLY->CUSTOMER]", "[AI回复客户]"),
|
||||
("[ACTIVITY]", "[活动日志]"),
|
||||
("[AI质检]", "[AI质检]"),
|
||||
)
|
||||
# 业务消息类型颜色(优先于 level)
|
||||
MESSAGE_COLOR_RULES = (
|
||||
@@ -47,6 +48,7 @@ class _AnsiColorFormatter(logging.Formatter):
|
||||
("[REPLY->CUSTOMER]", "\033[92m"), # bright green
|
||||
("Agent 回复", "\033[92m"), # bright green
|
||||
("[ACTIVITY]", "\033[95m"), # bright magenta
|
||||
("[AI质检]", "\033[93m"), # bright yellow
|
||||
("收到新消息", "\033[36m"), # cyan
|
||||
("发送成功", "\033[32m"), # green
|
||||
("防抖等待", "\033[93m"), # bright yellow
|
||||
@@ -174,6 +176,7 @@ class QingjianAPIClient:
|
||||
)
|
||||
self._tianwang_agent_name = os.getenv("TIANWANG_AGENT_NAME", "终结者").strip() or "终结者"
|
||||
self._reply_guard_enabled = os.getenv("AI_REPLY_GUARD_ENABLED", "true").lower() in ("1", "true", "yes")
|
||||
self._reply_guard_verbose = os.getenv("AI_REPLY_GUARD_VERBOSE", "false").lower() in ("1", "true", "yes")
|
||||
|
||||
# 延迟加载任务模块(避免循环导入)
|
||||
self.task_scheduler = None
|
||||
@@ -2034,6 +2037,14 @@ class QingjianAPIClient:
|
||||
if msg:
|
||||
context_lines.append(f"{role}:{msg}")
|
||||
context_text = "\n".join(context_lines) if context_lines else "无历史"
|
||||
if self._reply_guard_verbose:
|
||||
logger.info(
|
||||
"[AI质检] 启动 | customer=%s | acc=%s | context_rows=%s | candidate=%s",
|
||||
customer_id,
|
||||
acc_id,
|
||||
len(shop_rows),
|
||||
text[:120],
|
||||
)
|
||||
|
||||
deps = AgentDeps(
|
||||
msg_id=str(original_msg.get("msg_id", "") or "reply_guard"),
|
||||
@@ -2068,12 +2079,20 @@ class QingjianAPIClient:
|
||||
allow = bool(obj.get("allow", True))
|
||||
rewrite = str(obj.get("rewrite", "") or "").strip()
|
||||
reason = str(obj.get("reason", "") or "").strip() or "guard_decision"
|
||||
if self._reply_guard_verbose:
|
||||
logger.info(
|
||||
"[AI质检] 结果 | allow=%s | reason=%s | rewrite=%s",
|
||||
allow,
|
||||
reason,
|
||||
(rewrite or "")[:160],
|
||||
)
|
||||
if allow:
|
||||
return True, (rewrite or text), reason
|
||||
if rewrite:
|
||||
return True, rewrite, reason
|
||||
return False, "", reason
|
||||
except Exception as e:
|
||||
logger.warning("[AI质检] 异常,降级放行: %s", e)
|
||||
return True, text, f"guard_error:{e}"
|
||||
|
||||
async def send_text(self, cy_id, acc_type, content):
|
||||
|
||||
Reference in New Issue
Block a user