Skip to content
On this page

🏗️ 将复杂任务拆分为更简单的子任务

技巧:使用意图分类来识别与用户查询最相关指令

对于需要处理不同情况下的大量独立指令集的任务,首先将查询类型进行分类并使用该分类确定所需的指令。这可以通过定义固定的类别并硬编码相关指令来实现,以处理给定类别中的任务。该方法也可以递归地应用于将一个任务分解成一系列阶段的过程中。该方法的优点在于每个查询只包含执行任务下一个阶段所需的那些指令,相比使用单个查询执行整个任务而言,错误率更低。此外该方法还更经济,因为运行更多的提示词需要更多费用。

假设一个客户服务应用程序,查询可以有以下分类

⚙️ 系统:
你将收到一份客服服务咨询,将每个咨询分为主要类别和次要类别。以json格式输出,格式为:{"primary":<主要类别>, "secondary":<次要类别>}。

主要类别:计费、技术支持、账户管理或一般查询。

计费次要类别:
- 取消订阅或升级
- 添加付款方式
- 收费说明
- 争议收费

技术支持次要类别:
- 故障排除
- 设备兼容性
- 软件更新

账户管理次要类别:
- 密码重置
- 更新个人信息
- 关闭帐户
- 帐户安全

一般查询次要类别:
- 产品信息
- 定价
- 反馈
- 联系人工客服

👤 用户:
我需要让我的互联网重新工作起来。

根据客户咨询的分类,可以为GPT模型提供一组更具体的指令来处理下一步。例如,假设客户需要“故障排除”帮助。

⚙️ 系统:
你将收到需要在技术支持环境中进行故障排除的客户服务咨询,请通过以下方式帮助用户:
- 要求他们检查路由器所有电缆是否连接。请注意,电缆随着时间的推移可能会松动。
- 如果所有电缆都已连接且问题仍然存在,请询问他们使用的路由器型号。
- 现在,您将告知他们如何重新启动设备:
  - 如果型号为MTD-327J,则建议按下红色按钮并保持5秒钟,然后等待5分钟再测试连接。
  - 如果型号为MTD-327S,则建议拔出插头并重新插入,然后等待5分钟再测试连接。
- 如果客户在重启设备并等待5分钟后仍有问题,请输出{"请求IT支持"}以将其转接至IT支持人员处理。
- 如果用户开始提出与此主题无关的问题,请确认是否要结束当前有关故障排除的聊天,并根据以下方案对其请求进行分类:

<在此处插入上述的主/次分类方案>

👤 用户:
我需要让我的互联网重新工作起来。

请注意,该模型已被要求使用特殊字符串以表明对话状态何时更改。这使我们能够将系统转换为状态机,其中状态确定了要注入哪些指令。通过跟踪状态,确定在该状态下哪些指令是相关的,更进一步还可以确定从该状态允许进行哪些状态转换,我们可以在用户体验周围设置防护栏。

技巧:对于需要非常长时间的对话应用,可以进行摘要或过滤以前的对话

由于GPTs具有固定的上下文长度,用户和助手之间的对话如果把整个上下文都包含在内,则无法一直持续。

解决这个问题的方法有很多种,其中一种是总结先前交谈中的内容。一旦输入大小达到预定阈值长度,就可以触发一个查询来总结部分对话,并将先前对话的摘要作为系统消息的一部分包括进去。或者,在整个会话过程中异步地在后台总结以前的会话。

另一种替代方案是动态选择与当前查询最相关的先前会话部分。请参见策略“利用基于嵌入式的搜索实现高效知识检索”。

技巧:逐段概括长文档并递归构建完整摘要

由于GPT模型具有固定的上下文长度,因此在单个查询中无法用它们来总结超过上下文长度上限减去生成摘要长度的长文本。

即是 待总结文本长度 + 待生成的摘要长度 > GPT模型上下文长度上限 将会失败

为了总结非常长的文档(例如书籍),我们可以使用一系列查询来总结每个部分。每个部分的摘要可以连接并汇总,再产生摘要的摘要。这个过程可以递归进行,直到整个文件被概括。如果需要使用先前部分的信息才能理解后面的内容,那么一个有用的技巧是在总结该书中任何给定点的内容时,将该点之前的摘要包含进去。 OpenAI曾经使用GPT-3变体研究了这种处理大量书籍进行概括工作的效果。