Transformer课程 业务对话机器人Rasa 3.x Contextual Conversations
![Transformer课程 业务对话机器人Rasa 3.x Contextual Conversations](https://qiniu.meowparty.cn/coder.2023/2024-12-21/Lesson-6884f91f66be2.png)
Transformer课程 业务对话机器人Rasa 3.x Contextual Conversations
Rasa 官网
Learn more about Rasa:
Rasa documentation:
Join the Rasa Community:
Twitter:
Facebook:
Linkedin:
Youtube :
![www.zeeklog.com - Transformer课程 业务对话机器人Rasa 3.x Contextual Conversations](https://qiniu.meowparty.cn/coder.2023/2024-12-21/Lesson-6884f91f66be2.png)
Contextual Conversations
考虑上下文通常是提供良好用户体验的关键。本页是创建上下文对话模式的指南。
在上下文对话中,对话中前一步之外的内容会影响下一步应该发生的事情。例如,如果用户询问“有多少?”,仅仅从信息中还不清楚用户在问什么。在助手说“你有邮件”的情况下,回答可能是“你的邮箱里有五封信”。在关于未付账单的对话中,回答可能是“你有三张逾期账单”。助手需要知道上一个操作才能选择下一个操作。
要创建上下文感知会话助手,您需要定义会话历史如何影响下一个响应。
例如,如果用户询问示例音乐会机器人如何开始,机器人会根据他们是否喜欢音乐做出不同的响应:
与喜欢音乐的用户的对话:
![www.zeeklog.com - Transformer课程 业务对话机器人Rasa 3.x Contextual Conversations](https://qiniu.meowparty.cn/coder.2023/2024-12-21/Lesson-c23394555c92b.png)
与不喜欢音乐的用户的对话:
![www.zeeklog.com - Transformer课程 业务对话机器人Rasa 3.x Contextual Conversations](https://qiniu.meowparty.cn/coder.2023/2024-12-21/Lesson-cb695c7a9acae.png)
Step-by-step Guide on Creating Contextual Conversation Patterns
1. Defining Slots
插槽是助理的内存。插槽存储您的助手稍后需要参考的信息片段,可以根据插槽设置slot_was_set事件引导对话流程。有不同类型的插槽,每个插槽都以自己的方式影响会话流。
在音乐会机器人示例中,likes_music槽是一个布尔槽。如果为true,则bot发送一条介绍消息。如果为false,则bot发送另一条消息。在域中定义插槽及其类型:
domain.yml
slots:
likes_music:
type: bool
mappings:
- type: custom
2. Creating Stories
故事是对话应该如何进行的例子。在上面的示例中,音乐会机器人对喜欢音乐的用户和不喜欢音乐的用户的响应不同,因为这两个故事:
stories.yml
stories:
- story: User likes music
steps:
- intent: how_to_get_started
- action: utter_get_started
- intent: affirm
- action: action_set_music_preference
- slot_was_set:
- likes_music: True
- action: utter_awesome
- story: User doesn't like music
steps:
- intent: how_to_get_started
- action: utter_get_started
- intent: deny
- action: action_set_music_preference
- slot_was_set:
- likes_music: False
- action: utter_goodbye
这些故事根据用户的意图(肯定或否定)而有所不同。根据用户的意图,自定义操作会设置一个槽,进一步引导对话。
3. Configuring the TEDPolicy
除了添加故事来解释上下文之外,机器学习策略还可以帮助您的模型概括为看不见的对话路径。重要的是要理解,使用机器学习策略并不意味着放弃对助手的控制。如果基于规则的策略能够进行预测,则该预测将始终具有更高的策略优先级,并将预测下一个操作。
TED策略用于处理意外的用户行为。例如,在下面的对话中(摘自Rasa X上的对话):
stories:
- story: Story from conversation with a2baab6c83054bfaa8d598459c659d2a on November 28th 2019
steps:
- checkpoint: STORY_START
- intent: greet
- action: action_greet_user
- slot_was_set:
- shown_privacy: true
- intent: ask_whoisit
- action: action_chitchat
- intent: ask_whatspossible
- action: action_chitchat
- intent: telljoke
- action: action_chitchat
- intent: how_to_get_started
entities:
- product: x
- slot_was_set:
- product: x
- action: utter_explain_x
- action: utter_also_explain_nlucore
- intent: affirm
- action: utter_explain_nlu
- action: utter_explain_core
- action: utter_direct_to_step2
在这里,我们可以看到用户首先完成了一些聊天任务,然后最终询问他们如何开始使用Rasa X。TED策略正确地预测了Rasa X应该向用户解释,然后还引导他们开始使用,而不需要先询问所有符合条件的问题。
由于机器学习策略已经推广到这种情况,您应该将此故事添加到您的训练数据中,以不断改进您的机器人,并帮助模型在将来更好地推广。RASAX是一个工具,可以帮助您改进您的机器人,使其更加上下文化。
Setting max_history
通常,只有一定数量的上下文与您的助手相关。max_history是Rasa对话管理策略的超参数,用于控制模型在对话中查看多少步骤以决定下一步要采取的操作。
在下面的故事中,用户连续三次请求帮助。前两次,机器人发送相同的信息,但第三次,它将它们交给人工客服
stories.yml
stories:
- story: user persists in asking for help
steps:
- intent: help
- action: utter_help
- intent: help
- action: utter_help
- intent: help
- action: action_human_handoff
为了让模型了解这种模式,它至少需要知道前面的四个步骤,即四个的最大历史信息max_history。如果max_history为3,则模型将没有足够的上下文来查看用户已经发送了两个帮助请求,并且永远不会预测人工切换操作。
通过将max_history 历史记录传递到配置文件中的策略设置,可以设置max_history ,例如:
config.yml
policies:
- name: "TEDPolicy"
max_history: 5
您需要确保将max_history设置得足够高,以便您的助手能够准确预测下一步要做什么。有关更多详细信息,请参阅Featureizer上的文档。
Summary
以下是您可以应用的概念摘要,以使您的助手能够进行上下文对话:
为上下文对话写故事
使用插槽存储上下文信息以供以后使用
根据bot所需的上下文量,为策略设置最大历史记录
使用TED策略对不可见的对话路径进行泛化
rasa 链接