6.1 上下文的实际应用
什么是上下文?
在真实对话中,人们交流时通常不会重复之前已经明确的信息,而是利用之前对话中的内容来进行后续的交流。这种对话中“记住”前面内容的能力在Dialogflow中称为“上下文”(Context)。
用通俗的例子理解上下文:
你在餐厅点菜时,服务员会记录你的点单内容,不会反复问你已经确认过的菜品。
例如:
- 用户:我想要一杯咖啡。
- 机器人:好的,一杯咖啡。需要加糖吗?
- 用户:要的。
- 机器人:好的,加糖的咖啡已为您下单。
上下文的重要性:
- 提升用户体验,使对话自然流畅;
- 避免用户重复提供相同信息;
- 记录对话历史信息,实现智能交互。
6.2 配置和管理上下文
以下将通过一个简单的“点餐机器人”示例来教你如何配置上下文。
案例:点餐机器人
Step 1:创建意图(Intent)并设置上下文
-
打开Dialogflow控制台,创建新的意图
OrderFood
。 -
在 Training phrases 中输入示例短语:
我要点餐 点餐 我想点吃的
-
在该意图的顶部 Contexts 部分设置:
- 在 Output contexts 中输入:
ordering
,生命周期(Lifespan)设为5次对话回合。
- 在 Output contexts 中输入:
此时,每当用户启动点餐对话后,上下文ordering
会自动激活。
Step 2:创建后续意图,使用上下文管理对话状态
-
再创建一个新意图:
ChooseFood
,用于捕获用户想要的具体食物。 -
在 Contexts 部分设置:
- Input contexts:填写刚刚定义的
ordering
。 - Output contexts:继续填写
ordering
(生命周期继续保持5)。
- Input contexts:填写刚刚定义的
-
在 Training phrases 中,用户可能说:
我要一份披萨 给我来一碗面 一杯咖啡
-
在 Responses 中可填写:
好的,您要的是 $food-item。还需要别的吗?
注意: $food-item
是通过实体(Entity)识别到的菜品名,这里你需要定义一个自定义实体food-item
。
Step 3:定义实体(Entities)
-
点击 Entities,新建实体,名称为
food-item
。 -
在实体中填写常见菜品,比如:
披萨 面条 咖啡 汉堡 沙拉
-
保存实体。
测试效果:
用户:“我要点餐” → 上下文ordering
启动。
机器人:“您想吃点什么?”
用户:“一杯咖啡” → 自动识别food-item
实体。
Step 4:完成点餐流程(结束上下文)
-
新建意图
CompleteOrder
,表示用户确认结束点餐。 -
设置上下文:
- Input contexts:
ordering
- Output contexts:空(表示结束对话状态)。
- Input contexts:
-
Training phrases:
不要了 就这些了 没有了,谢谢
-
Responses:
好的,您的订单已经确认,一会儿就送到!
这样,机器人完成了一次完整的点餐流程,上下文ordering
也自然地结束了。
6.3 通过上下文改善用户体验(示例演示)
上下文不仅能记录当前的对话状态,还可以极大改善对话体验:
例如,用户临时改变主意:
- 用户:“我要点餐。”
- 机器人:“好的,您想吃什么?”
- 用户:“一份披萨。”
- 机器人:“好的,披萨已加入订单。还需要别的吗?”
- 用户:“哦,不对,改成汉堡吧。”
- 机器人(识别到修改意图):“好的,已将披萨改为汉堡,还需要别的吗?”
如何实现这种灵活对话体验?
- 你只需要额外创建一个
ModifyOrder
意图:- Input contexts:
ordering
- Output contexts:继续使用
ordering
- Training phrases示例:
改成汉堡 我改成面条吧 披萨换成沙拉
- Response示例:
好的,已将您的订单修改为 $food-item,还需要其他的吗?
- Input contexts:
这样通过上下文管理,使机器人能够轻松处理复杂对话流程。
小结与关键点:
- 上下文(Context):帮助机器人记住和管理对话历史;
- 配置上下文:在意图中设定输入(Input)和输出(Output)上下文;
- 上下文生命周期(Lifespan):决定上下文持续回合数;
- 通过上下文管理,可显著改善用户体验,提升机器人智能表现。
课后实践与练习:
练习1: 在点餐机器人中加入“取消订单”功能,用户可以随时说“取消点餐”,机器人应结束上下文。
练习2: 进一步扩展点餐机器人,使之能记住用户过去的点餐习惯,并主动推荐。
练习3: 创建一个简单的酒店预订机器人,通过上下文管理完整的房间预订对话流程。
通过以上详细讲解和实际操作,你将对Dialogflow的上下文管理有深入理解和实践掌握。