AI PLAY玩法更新持续收录
← 回到更新流

2026-10-08 · 原文发布日

n8n模板:客服工单先脱敏再RAG匹配,高置信度才让Claude自动回复

三个带密钥验证的webhook分别处理新工单、员工答复和索引重建。新工单先用正则脱敏邮箱电话等个人信息,用Gemini生成向量在内存库中检索相似历史问答,超过相似度阈值才让Claude仅依据检索结果起草回复,答不了或输出不安全就转为待人工。员工答复同样经正则加Claude双重脱敏后才入库存档学习。作者提醒脱敏是尽力而为、内存索引重启丢失需重建,并给了实测相似度区间供调阈值参考。模板免费。

原文要点

n8n模板20667(作者久保田卓磨):三个带Header验证的webhook分别处理新工单、员工答复和索引重建。新工单先用正则脱敏邮箱、电话、卡号、邮编、订单号等PII,用Gemini生成向量在内存向量库检索相似历史问答,超过阈值才让Claude仅依据检索结果起草回复,Claude表示答不了或输出不安全就转待人工;员工答复经正则加Claude双重脱敏后才入库学习;重建webhook从Data Table恢复内存索引。Data Table名为cs_rag_cases。作者小样本测试:无关问题相似度约0.56-0.67,相关约0.84-0.96。模板免费,脱敏是尽力而为,内存索引重启即丢失。

这次做成什么

搭起一个“先脱敏、再检索、高置信才自动回复”的客服工单流水线,并用三个webhook的合成测试数据分别验证新工单、员工学习和索引重建三条链路。

准备什么

  • 一个支持Data Table功能的n8n环境(建议自托管)
  • Anthropic API密钥,供两个Claude节点使用
  • Google AI Studio的Gemini API密钥,用于生成embedding
  • 为三个webhook配置的Header Auth凭据(如X-API-Key头)

具体怎么做

  1. 导入模板并建Data Table

    从 https://n8n.io/workflows/20667 复制工作流;在n8n中新建名为cs_rag_cases的Data Table,列结构以模板内sticky note列出的为准,并在所有读写该表的节点中选中它。

  2. 配置三类凭据

    添加Anthropic凭据、Gemini(PaLM)API凭据,以及一个Header Auth凭据(头名建议X-API-Key),套用到全部三个webhook节点。

  3. 激活并记录三个webhook地址

    激活工作流后复制三个URL:/webhook/cs-rag-inquiry(新工单)、/webhook/cs-rag-answer(员工答复)、/webhook/cs-rag-reindex(重建索引),用POST发送对应JSON。

  4. 播种知识并调阈值

    先POST几条咨询,再用cs-rag-answer发送员工答复并开启learn让Q&A入库;观察Check similarity节点的实际分数,结合作者参考区间(无关约0.56-0.67、相关约0.84-0.96)在两者之间设定THRESHOLD。

  5. 验证重建链路

    重启n8n后内存向量库清空,向cs-rag-reindex发送POST,确认Data Table中已学习的行被重新载入,再发一条相似咨询应能恢复自动回复。

可直接复制的材料

三个webhook的合成测试数据

本站虚构的合成测试数据;具体字段名以模板webhook节点实际读取的为准,导入后先核对再调用。

新工单 POST /webhook/cs-rag-inquiry
{"question":"我的订单A-10293什么时候发货?联系邮箱wang@example.com,电话13812345678"}
员工答复 POST /webhook/cs-rag-answer
{"case_id":"从inquiry返回中获得","answer":"订单A-10293将在48小时内发出,物流单号稍后短信通知您。","learn":true}
重建索引 POST /webhook/cs-rag-reindex
{}
三个请求都需带请求头 X-API-Key: 你的测试密钥

PII脱敏正则补充清单(本站独立示例)

本站独立编写的正则示例,用于在模板既有脱敏之外补充模式;模板已覆盖邮箱、电话、卡、邮编、订单或账号ID,扩展前先测试误伤率。

邮箱:[\w.+-]+@[\w-]+\.[\w.]+
手机号:1[3-9]\d{9}
电话(含区号):0\d{2,3}-?\d{7,8}
银行卡:\d{16,19}
邮编:\b\d{6}\b
订单号:\b[A-Z]-\d{5,}\b

Claude起草回复约束提示词(本站独立示例)

本站设计的练习提示词,用于理解“仅依据检索结果作答”的约束思路;模板内Claude节点原有提示词以原模板为准。

你是客服助手。只能依据下面检索到的参考问答起草回复,不得编造参考中没有的承诺、金额或时效。若参考内容不足以回答,只输出CANNOT_ANSWER。回复不超过150字,语气礼貌,结尾告知可转人工。
客户问题:{masked_question}
参考问答:{retrieved_qa}

输入与输出示例

本站虚构演示,分数与回复为示意,非真实模型输出;实际分数取决于你的embedding模型和数据。

输入

POST /webhook/cs-rag-inquiry,body为{"question":"我的订单A-10293什么时候发货?联系邮箱wang@example.com,电话13812345678"},库中已有相似问答“订单多久发货/48小时内发出”,相似度0.91,高于阈值0.80。

对应输出

webhook返回{"reply":"您好,订单将在48小时内发出,物流单号会稍后通知您。如需进一步帮助可转人工。","status":"auto_answered","score":0.91};Data Table新增一行,记录脱敏后的问题(邮箱电话已替换为占位符)、匹配分数0.91和生成的回复。

做完检查这些

  • 不带X-API-Key或密钥错误的POST请求被webhook拒绝
  • 含邮箱电话的咨询入库后,Data Table中保存的是脱敏后的文本
  • 相似度高于阈值的咨询返回自动回复,低于阈值的返回“等待员工处理”且记录为pending
  • 发送员工答复并learn后,再发相似问题能命中刚学习的Q&A
  • 重启n8n后先调reindex,自动回复功能恢复正常

容易卡住的地方

  • 脱敏是尽力而为:最终检查只认模式,AI漏掉的人名识别不出来,用真实客户数据前务必自测
  • 内存向量库在n8n重启后全部丢失,必须调reindex重建,生产环境建议换成Qdrant、Pinecone或Supabase
  • 作者给的0.56-0.67/0.84-0.96区间来自少量英日文小样本,你的数据分布不同,阈值必须自己调
  • Data Table列名以模板内sticky note为准,本页未列出全部列,不要凭猜测建表
  • 原始问答的保留时长需要自己决定并写进隐私流程

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Answer masked customer support tickets with Claude and Google Gemini RAG
原作者
久保田 卓磨
原始发布日期
2026-10-08T12:51:16.713Z
来源
https://n8n.io/workflows/20667