- Added `ThresholdRepository` for managing customer loss threshold configurations and notifications. - Introduced `threshold_service` to handle loss threshold alerts based on customer portfolio performance. - Enhanced `customer_prompts` to include new intent for querying product net values. - Updated `customer_service` to integrate new threshold alert functionality into existing workflows. - Implemented `sanitize_postprocess` for improved compliance handling in customer interactions. - Enhanced course documentation to reflect updates in advisor training modules and interactive elements. This update significantly improves the customer experience by providing proactive loss threshold notifications and enhancing the overall service framework.
128 lines
7.9 KiB
HTML
128 lines
7.9 KiB
HTML
<section class="module" id="module-5">
|
||
<div class="module-inner">
|
||
<p class="eyebrow animate-in">模块 5 · 边界与接缝</p>
|
||
<h1 class="module-title animate-in">两套知识库、合规口径<br>和一期代码差在哪?</h1>
|
||
<p class="module-lead animate-in">
|
||
客服线「能答什么」不只看 LangGraph,还看<strong>知识库分家</strong>和<strong>合规文档 vs 一期实现</strong>。
|
||
指挥 AI 改 RAG 或「放开推荐」前,先对齐下面这张差分表。
|
||
</p>
|
||
|
||
<div class="screen animate-in">
|
||
<h2>两套 RAG:别灌错库</h2>
|
||
<div class="pattern-cards">
|
||
<div class="pattern-card">
|
||
<h3>客服 · fin_* 三库</h3>
|
||
<p>登录客户的对话编排(<code>customer_service.py</code>)和游客试聊编排(<code>visitor_service.py</code>)遇到产品/政策/FAQ 类问题时,都会交给 RAG 检索层(<code>rag_service.py</code>:把问题向量化后查 Milvus),从 <code>fin_product</code> · <code>fin_policy</code> · <code>fin_faq</code> 三个知识集合取片段。</p>
|
||
</div>
|
||
<div class="pattern-card">
|
||
<h3>顾问 · kb_product_rules</h3>
|
||
<p>理财师/风控通用 tool→llm→guard 编排(<code>agent_service.py</code>)的 <code>search_knowledge</code> Tool → 知识库对话 Tool 注册与分发(<code>kb_tools.py</code>)· 集合名不同,<strong>不能</strong>把顾问文档灌进 fin_*。</p>
|
||
</div>
|
||
<div class="pattern-card">
|
||
<h3>风控 · 不开放 search_knowledge</h3>
|
||
<p>知识库对话 Tool 注册与分发(<code>kb_tools.py</code>)注册表对 risk 关闭——风控对话走 RISK_TOOL_REGISTRY 四只读 Tool。</p>
|
||
</div>
|
||
</div>
|
||
<div class="callout callout-warning">
|
||
<strong>指挥 AI 误区:</strong> 「统一成一个知识库」听起来省事,但会破坏各 Agent 合规过滤与检索策略——要改先对契约和 <code>scripts/kb/</code> 脚本。
|
||
</div>
|
||
</div>
|
||
|
||
<div class="screen animate-in">
|
||
<h2>合规允许 vs 一期拒答(你拍板要讲的)</h2>
|
||
<p>合规文档里,客户 Agent 在<strong>过 R-02 + 附免责 + 标注需持证审核</strong>时,可以做「匹配说明」——但一期代码对<strong>主动推荐/预测类</strong>问题走 <code>reject</code> 静态拒答,更保守。</p>
|
||
|
||
<div class="translation-block">
|
||
<div class="translation-code">
|
||
<span class="translation-label">合规文档 · 允许方向</span>
|
||
<pre><code><span class="code-line">适当性匹配说明(C-11)</span>
|
||
<span class="code-line">→ 系统判定 + 规则解读 + 免责声明</span>
|
||
<span class="code-line">→ 禁止具体操作指令</span></code></pre>
|
||
</div>
|
||
<div class="translation-english">
|
||
<span class="translation-label">一期代码 · 实际行为</span>
|
||
<div class="translation-lines">
|
||
<p class="tl"><code>suitability_check</code> Tool:「我能买 R3 吗」「有哪些匹配产品」——<strong>允许</strong>。</p>
|
||
<p class="tl">「推荐稳赚基金」「买什么好」→ <code>reject</code> + <code>REJECT_ADVICE_TEXT</code>——<strong>直接拒</strong>。</p>
|
||
<p class="tl">要「放开推荐」= 产品决策 + 改 intent 路由 + 合规评审,不是只改 prompt 一句。</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="screen animate-in">
|
||
<h2>群聊:同一客户,两种问法</h2>
|
||
<div class="chat-window" id="chat-customer-m5">
|
||
<div class="chat-messages">
|
||
<div class="chat-message" data-msg="0" data-sender="user" style="display:none">
|
||
<div class="chat-avatar" style="background:#2D8B55">客</div>
|
||
<div class="chat-bubble">
|
||
<span class="chat-sender" style="color:#2D8B55">客户 A</span>
|
||
<p>我能买 R3 产品吗?</p>
|
||
</div>
|
||
</div>
|
||
<div class="chat-message" data-msg="1" data-sender="ok" style="display:none">
|
||
<div class="chat-avatar" style="background:#236B44">✓</div>
|
||
<div class="chat-bubble">
|
||
<span class="chat-sender" style="color:#236B44">suitability_check</span>
|
||
<p>意图 <code>suitability_check</code> → Core 只读判定 → interpret 解释规则(合规允许路径)</p>
|
||
</div>
|
||
</div>
|
||
<div class="chat-message" data-msg="2" data-sender="user2" style="display:none">
|
||
<div class="chat-avatar" style="background:#2D8B55">客</div>
|
||
<div class="chat-bubble">
|
||
<span class="chat-sender" style="color:#2D8B55">客户 B</span>
|
||
<p>推荐一个稳赚的基金</p>
|
||
</div>
|
||
</div>
|
||
<div class="chat-message" data-msg="3" data-sender="rej" style="display:none">
|
||
<div class="chat-avatar" style="background:#B84A4A">⑨</div>
|
||
<div class="chat-bubble">
|
||
<span class="chat-sender" style="color:#B84A4A">reject</span>
|
||
<p><code>REJECT_ADVICE_TEXT</code> · transfer 标志 false · 话术中可引导「转人工」</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="chat-typing" id="chat-customer-m5-typing" style="display:none">
|
||
<div class="chat-avatar" id="chat-customer-m5-typing-avatar">…</div>
|
||
<div class="chat-typing-dots"><span class="typing-dot"></span><span class="typing-dot"></span><span class="typing-dot"></span></div>
|
||
</div>
|
||
<div class="chat-controls">
|
||
<button class="btn chat-next-btn">下一条</button>
|
||
<button class="btn chat-all-btn">全部播放</button>
|
||
<button class="btn chat-reset-btn">重播</button>
|
||
<span class="chat-progress"></span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="screen animate-in">
|
||
<h2>游客与画像:客户看不见 L2/L3</h2>
|
||
<p>游客走游客试聊 9 节点编排(<code>visitor_service.py</code>):无 JWT、无 Core 持仓查询、不写登录客户会话表。L1 画像由客服线后台抽槽写入;<span class="term" data-definition="L2 = 代理人侧 enrich 画像;L3 = 风控监测标签。客户 Agent 不可读 L3,也不应把 L2 内容念给客户。">L2/L3</span> 对客户不可见——合规上客户只能 enrich L1,不能替代正式风评。</p>
|
||
|
||
<div class="quiz-container" id="quiz-customer-m5">
|
||
<div class="quiz-question-block"
|
||
data-correct="option-a"
|
||
data-explanation-right="对。顾问 kb_product_rules 与客服 fin_* 是两套集合;混改会导致检索策略和合规过滤错乱。"
|
||
data-explanation-wrong="两套 RAG 分 Agent 是有意的,不能为了「统一」直接合并 Milvus 集合。">
|
||
<h3 class="quiz-question">AI 建议「把 kb 和 fin 合成一个 Milvus 集合简化维护」,你怎么回?</h3>
|
||
<div class="quiz-options">
|
||
<button class="quiz-option" data-value="option-a" onclick="selectOption(this)">
|
||
<div class="quiz-option-radio"></div><span>不行,两套库各服务 customer/advisor,先对 scripts/kb 和契约</span>
|
||
</button>
|
||
<button class="quiz-option" data-value="option-b" onclick="selectOption(this)">
|
||
<div class="quiz-option-radio"></div><span>好,合并后客服也能搜顾问话术</span>
|
||
</button>
|
||
<button class="quiz-option" data-value="option-c" onclick="selectOption(this)">
|
||
<div class="quiz-option-radio"></div><span>好,让风控也开放 search_knowledge</span>
|
||
</button>
|
||
</div>
|
||
<div class="quiz-feedback"></div>
|
||
</div>
|
||
<button class="quiz-check-btn" onclick="checkQuiz('quiz-customer-m5')">检查答案</button>
|
||
<button class="quiz-reset-btn" onclick="resetQuiz('quiz-customer-m5')">重做</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|