工单路由
本指南介绍如何利用Claude的高级自然语言理解能力,根据客户意图、紧急程度、优先级、客户资料等大规模分类客户支持工单。
确定是否使用Claude进行工单路由
以下是一些关键指标,表明您应该使用像Claude这样的LLM而非传统机器学习方法进行分类任务:
构建和部署您的LLM支持工作流程
了解您当前的支持方法
在深入自动化之前,了解您现有的工单系统至关重要。首先调查您的支持团队当前如何处理工单路由。
考虑以下问题:
- 使用什么标准来确定应用哪种SLA/服务产品?
- 工单路由是否用于确定工单应该分配给哪个级别的支持或产品专家?
- 是否已经有任何自动化规则或工作流程?在哪些情况下它们会失败?
- 如何处理边缘情况或模糊工单?
- 团队如何确定工单优先级?
您对人类如何处理某些情况了解得越多,就越能更好地与Claude合作完成任务。
定义用户意图类别
一个定义明确的用户意图类别列表对于Claude准确分类支持工单至关重要。Claude在您系统中有效路由工单的能力与您系统类别的定义程度成正比。
以下是一些用户意图类别和子类别的示例。
除了意图外,工单路由和优先级还可能受到其他因素的影响,如紧急程度、客户类型、SLA或语言。在构建自动化路由系统时,请确保考虑其他路由标准。
建立成功标准
与您的支持团队合作,定义明确的成功标准,包括可衡量的基准、阈值和目标。
以下是使用LLM进行支持工单路由的一些标准标准和基准:
以下是一些常见的成功标准,无论是否使用LLM都可能有用:
选择合适的Claude模型
模型的选择取决于成本、准确性和响应时间之间的权衡。
许多客户发现claude-3-5-haiku-20241022
是工单路由的理想模型,因为它是Claude 3系列中最快速和最具成本效益的模型,同时仍能提供出色的结果。如果您的分类问题需要深入的专业知识或大量的意图类别复杂推理,您可能会选择更大的Sonnet模型。
构建强大的提示
工单路由是一种分类任务。Claude分析支持工单的内容,并根据问题类型、紧急程度、所需专业知识或其他相关因素将其分类为预定义的类别。
让我们编写一个工单分类提示。我们的初始提示应包含用户请求的内容,并返回推理和意图。
尝试在Anthropic控制台上使用提示生成器,让Claude为您编写初稿。
以下是一个工单路由分类提示示例:
让我们分解这个提示的关键组成部分:
- 我们使用Python f-strings创建提示模板,允许将
ticket_contents
插入到<request>
标签中。 - 我们给Claude一个明确定义的角色,作为一个分类系统,仔细分析工单内容以确定客户的核心意图和需求。
- 我们指导Claude关于正确的输出格式,在这种情况下,在
<reasoning>
标签内提供其推理和分析,然后在<intent>
标签内提供适当的分类标签。 - 我们指定有效的意图类别:“Support, Feedback, Complaint”、“Order Tracking”和”Refund/Exchange”。
- 我们包含了几个示例(即少样本提示)来说明输出应该如何格式化,这提高了准确性和一致性。
我们希望Claude将其响应分成各种XML标签部分的原因是,这样我们可以使用正则表达式从输出中分别提取推理和意图。这允许我们在工单路由工作流程中创建有针对性的下一步,例如仅使用意图来决定将工单路由给哪个人。
部署您的提示
如果不在测试生产环境中部署并运行评估,很难知道您的提示效果如何。
让我们构建部署结构。首先定义包装我们对Claude调用的方法签名。我们将继续编写已经开始的方法,该方法以ticket_contents
作为输入,并返回reasoning
和intent
的元组作为输出。如果您有使用传统ML的现有自动化,您将需要遵循该方法签名。
这段代码:
- 导入Anthropic库并使用您的API密钥创建客户端实例。
- 定义一个
classify_support_request
函数,该函数接受ticket_contents
字符串。 - 使用
classification_prompt
将ticket_contents
发送给Claude进行分类 - 返回从响应中提取的模型的
reasoning
和intent
。
由于我们需要等待生成整个推理和意图文本才能解析,我们设置stream=False
(默认值)。
评估您的提示
提示通常需要测试和优化才能准备好用于生产。要确定您的解决方案的准备程度,请根据您之前建立的成功标准和阈值评估性能。
要运行您的评估,您将需要测试用例来运行它。本指南的其余部分假设您已经开发了测试用例。
构建评估函数
本指南中的示例评估从三个关键指标衡量Claude的性能:
- 准确性
- 每次分类的成本
根据对您重要的因素,您可能需要在其他方面评估Claude。
为了评估这一点,我们首先必须修改我们编写的脚本,并添加一个函数来比较预测的意图与实际意图,并计算正确预测的百分比。我们还必须添加成本计算和时间测量功能。
让我们分解我们所做的编辑:
- 我们将测试用例中的
actual_intent
添加到classify_support_request
方法中,并设置了比较来评估Claude的意图分类是否与我们的黄金意图分类匹配。 - 我们提取了API调用的使用统计信息,以根据使用的输入和输出令牌计算成本
运行您的评估
正确的评估需要明确的阈值和基准来确定什么是好结果。上面的脚本将给我们准确性、响应时间和每次分类成本的运行时值,但我们仍然需要明确建立的阈值。例如:
- 准确性: 95%(100次测试中)
- 每次分类成本: 平均减少50%(在100次测试中)相比当前路由方法
有了这些阈值,您可以快速轻松地大规模地、以公正的经验主义方式判断哪种方法最适合您,以及可能需要做出哪些更改以更好地满足您的要求。
提高性能
在复杂场景中,除了标准的提示工程技术和护栏实施策略外,考虑其他策略来提高性能可能会有所帮助。以下是一些常见场景:
对于20多个意图类别的情况使用分类层次结构
随着类别数量的增加,所需的示例数量也会扩大,可能使提示变得笨重。作为替代方案,您可以考虑使用分类器混合实现分层分类系统。
- 将您的意图组织成分类树结构。
- 在树的每个级别创建一系列分类器,实现级联路由方法。
例如,您可能有一个顶级分类器,将工单大致分类为”技术问题”、“账单问题”和”一般查询”。然后,这些类别中的每一个都可以有自己的子分类器,进一步细化分类。
-
优点 - 更大的细微差别和准确性: 您可以为每个父路径创建不同的提示,允许更有针对性和上下文特定的分类。这可以提高准确性并更细致地处理客户请求。
-
缺点 - 增加延迟: 请注意,多个分类器可能会导致延迟增加,我们建议使用我们最快的模型Haiku实施这种方法。
使用向量数据库和相似性搜索检索来处理高度可变的工单
尽管提供示例是提高性能的最有效方式,但如果支持请求高度可变,在单个提示中包含足够的示例可能很困难。
在这种情况下,您可以使用向量数据库从示例数据集中进行相似性搜索,并检索与给定查询最相关的示例。
这种方法在我们的分类配方中详细概述,已被证明可以将性能从71%的准确性提高到93%的准确性。
专门考虑预期的边缘情况
以下是Claude可能错误分类工单的一些场景(可能还有其他特定于您情况的场景)。在这些场景中,考虑在提示中提供明确的指示或示例,说明Claude应如何处理边缘情况:
将Claude集成到您更大的支持工作流程中
正确的集成需要您就基于Claude的工单路由脚本如何适应您更大的工单路由系统架构做出一些决定。有两种方法可以做到这一点:
- 推送式: 您使用的支持工单系统(例如Zendesk)通过向您的路由服务发送webhook事件来触发您的代码,然后该服务对意图进行分类并进行路由。
- 这种方法更具网络可扩展性,但需要您公开一个公共端点。
- 拉取式: 您的代码根据给定的计划拉取最新工单,并在拉取时对其进行路由。
- 这种方法更容易实现,但当拉取频率过高时可能会对支持工单系统进行不必要的调用,或者当拉取频率过低时可能会过于缓慢。
对于这两种方法,您都需要将脚本包装在服务中。方法的选择取决于您的支持工单系统提供的API。