feat(customer-service): 接入适当性裁决,回答"我这个等级能不能买它"
客户实测反馈:「c1客户能买它吗」答的是 C1 的通用规则,没回答"能不能买季季盈90天"。 根因是这个问题需要**组合两个事实**——产品的风险等级(R2)与客户档案等级能不能匹配—— 而检索只能给出"最像的那段原文",给不出结论。基座早就有了 check_suitability 裁决工具, 接口留好了但客服没接线(这个项目里第三次遇到同一类情况)。 改动三处: 1. 新增 suitability_check 意图,意图码三处对齐(AgentDefinition.supported_intents、 agent_intent_config 的 active 行、发布版 agent_tools 白名单)。 2. 新出口 _answer_suitability:产品风险等级**从知识库查出来**(不猜、也不采信问句里 出现的"R2"字样),产品名只取上一轮回答里的主语(来自知识块字段,可信),客户等级 交给 check_suitability 按档案解析——**不采信客户自称**。任何一步拿不到确定值就转人工: 这个出口会给出"能不能买"的结论,宁可答不了也不能答错。 3. 发布脚本加意图注册与工具白名单,并做成幂等(重跑不会因为"已经审过了"而 409)。 实测:意图正确路由到新出口,裁决链路走通。9001 因为在 fin_risk_assessment 里没有测评 记录,系统给出"暂时无法购买 + 您目前没有在有效期内的风险测评结果"——这正是适当性管理 要求的行为,不是故障:不能卖给一个没有有效测评结果的客户。措辞也据此改过,不写 "您的等级为未记录"这种客户看不懂的句子。 顺带修了前端一处误导标记:它用"是否含客服热线"判断"已引导人工",而正常的适当性回答 里也会建议拨打客服热线,于是"已经给出结论"被误报成"已引导人工"。
This commit is contained in:
@@ -36,7 +36,9 @@ from app.worker.runtime import WorkerRuntime
|
||||
sys.stdout.reconfigure(errors="replace")
|
||||
|
||||
AGENT_TYPE = "customer_service"
|
||||
FALLBACK_MARK = "客服热线"
|
||||
# 兜底话术的固定开头。不能用"客服热线"这类词判断——正常的适当性回答里也会建议客户
|
||||
# 拨打客服热线,那样会把"已经给出了结论"误报成"已引导人工"。
|
||||
FALLBACK_MARK = "抱歉,这个问题我暂时无法给出准确答复"
|
||||
|
||||
PAGE = """<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
|
||||
Reference in New Issue
Block a user