本文于 2025-01-20 15:57 更新,部分内容具有时效性,如有失效,请留言
背景
客户服务相关对话设计中,经常需要让用户确认当前行动完成后,再执行下一个行动,有两种实现方式:
1.路由 2.提示词
1.路由
一般由大模型判断用户的状态,然后执行对应的节点服务,这和编排“智能客服”节点有些相似。例:问完姓名下一步获取电话。
典型的路由中转节点提示词:
您将获得<客户服务查询>。 将每个<客户服务查询>分类为主要类别和次要类别。 以Json格式提供输出,key为:<primary>和<secondary>。只需要输出Json格式的输出结果,其他的不需要输出。 主要类别:<结算>、<技术支持>、<账户管理>或<一般查询>。 <结算>次要类别:\ 取消订阅或升级 \ 添加付款方式 \ 有关费用的说明 \ 争议费用 <技术支持>次要类别:\ 一般故障排除\ 设备兼容性 \ 软件更新 \ <账户管理>次要类别:\ 重置密码 \ 更新个人信息 \ 关闭账户 \ 账户安全 \ <一般查询>次要类别: 产品信息 \ 支付 \ 反馈 \ 与人交谈 \ --- 客户服务查询:我想让你删除我的个人资料和我所有的用户数据
输出
{ "primary": "账户管理", "secondary": "关闭账户" }
开发者利用该状态继续设计后续服务节点。
2.提示词
在路由指令的基础上改造,增加后续服务节点。
您将获得<客户服务查询>。 ## 服务流程 1.首选确认用户的问题分类,问题分类如下: 主要类别:<结算>、<技术支持>、<账户管理>或<一般查询>。 <结算>次要类别:\ 取消订阅或升级 \ 添加付款方式 \ 有关费用的说明 \ 争议费用 <技术支持>次要类别:\ 一般故障排除\ 设备兼容性 \ 软件更新 \ <账户管理>次要类别:\ 重置密码 \ 更新个人信息 \ 关闭账户 \ 账户安全 \ <一般查询>次要类别: 产品信息 \ 支付 \ 反馈 \ 与人交谈 \ 2.当用户确认问题分类准确,根据上下文解答操作步骤 3.用户认可操作步骤后,并向用户友好的问候,并结束该话题。 --- {上下文} --- 客户服务查询:我想让你删除我的个人资料和我所有的用户数据
在设计提示词时,我们经常会描述“流程”,一种是让大模型按照流程逐步执行;灵一种则是要求大模型按照流程一步一步互动。
上述提示词示例是后者,需要大模型作为上下文参与“判断”,类似“状态机”。
提示词中描述判断流程的缺点:不稳定,作为历史上下文被截断,难以描述逻辑(导致的不稳定)。
OpenAI给出的新方法
原理很简单,在用户对话的上下文中定义一组对话状态:
# 对话状态 ```json { "id": "1_intro", "description": "引导客户提供个人信息和穿着场合信息,了解他们的需求。", "instructions": [ "友好地问候客户,并询问他们的年龄、性别、职业及个人喜好。", "确认客户的穿着场合(如正式、休闲、约会等),以便为他们推荐合适的服装搭配。" ], "examples": [ "您好!为了更好地帮助您选择搭配,能否先告诉我您的年龄、性别以及职业?", "请问您打算穿着这些服装出席什么场合呢?是工作、约会还是休闲活动?" ], "transitions": [{ "next_step": "2_recommend_outfit", "condition": "客户提供了个人信息和穿着场合信息后。" }] } ``` ```json { "id": "2_recommend_outfit", "description": "根据客户提供的信息推荐合适的服装搭配。", "instructions": [ "基于客户的个人信息和穿着场合,提供两到三个服装搭配建议。", "为每个搭配提供详细的描述,包括服装类型、搭配方式以及如何搭配饰品等。" ], "examples": [ "根据您的职业和即将参加的商务会议,我推荐您穿一套深色西装,配上一条简约的领带。", "如果您准备参加一个轻松的聚会,可以试试牛仔裤搭配一件休闲衬衫,再加上一双舒适的鞋子。" ], "transitions": [{ "next_step": "3_get_feedback", "condition": "客户已经收到了服装推荐并准备给出反馈。" }] } ``` ```json { "id": "3_get_feedback", "description": "根据客户的反馈进行调整或确认推荐。", "instructions": [ "询问客户是否对推荐的搭配感到满意,若有更具体需求,可根据反馈调整建议。", "如果客户对推荐感到满意,确认最终搭配并结束对话。" ], "examples": [ "您对这些搭配有何想法?是否需要根据您的需求进行调整?", "如果您觉得这套搭配合适,那就可以开始准备了!" ], "transitions": [{ "next_step": "4_finalize_outfit", "condition": "客户确认满意并最终决定服装搭配。" }] } ``` ```json { "id": "4_finalize_outfit", "description": "确认客户最终搭配并结束对话。", "instructions": [ "确认客户最终选择的搭配。", "祝福客户穿着得体,愉快出席场合。" ], "examples": [ "太好了,您的搭配已经选定!希望您能在场合中大放异彩。", "祝您今天的活动顺利,搭配的服装一定会让您更加自信!" ], "transitions": [] } ```
完整示例:https://chatgpt.com/share/678dcc28-9570-800b-986a-51e6f80fd241
解读
上述提示词是AI服装导购与用户之间保存的对话状态,记录预置好的服务流程。
定义4个服务流程节点:引导问题、提供搭配建议、根据反馈调整建议、用户确认后结束对话。
description定义“流程”,condition定义“流转”。
思考
仅使用自然语言构建 workflow 提供了新思路。尤其在构建 Agent 协作服务时,该方法可能让协作流程更加严谨。
如果针对每个对话状态,检索并插入用户问题相关的上下文,即可实现绝大多数服务,这可能是构架对话服务类AI应用轻量且高效的方法。