admin管理员组文章数量:1579086
Rasa Core基础
Rasa Core是Rasa系统中负责对话管理的部分,主要职责是记录对话的过程和选择下一个动作;
Rasa Core是一种机器学习驱动的对话管理引擎;
领域domain
官方链接:https://rasa/docs/rasa/domain
包括:
- 意图(intent)
- 实体(entity)
- 词槽(slot)
- 动作(action)
- 表单(form)
- 回复(response)
说明:reponse此字段内容,可以放到data/responses.yml里;
Responses go under the responses key in your domain file or in a separate “responses.yml” file.
故事(story)
官方链接: https://rasa/docs/rasa/stories
格式
stories:
- story: collect restaurant booking info # name of the story - just for debugging
steps:
- intent: greet # user message with no entities
- action: utter_ask_howcanhelp
- intent: inform # user message with entities
entities:
- location: "rome"
- price: "cheap"
- action: utter_on_it # action that the bot should execute
- action: utter_ask_cuisine
- intent: inform
entities:
- cuisine: "spanish"
- action: utter_ask_num_people
动作(action)
官方链接: https://rasa/docs/rasa/actions
默认动作
名称 | 功能(效果) |
---|---|
action_listen | 停止预测动作,等待用户输入 |
action_restart | 重启对话过程,清理对话历史和词槽;用户可以通过在客户端中输入 /restart 来执行此动作 |
action_session_start | 所有的对话开始前都会执行此动作,启动对话过程 |
action_default_fallback | 重置系统状态至上一轮(就像用户从来没说过这句话,系统也从来没做出反应一样),并将渲染utter_default模板作为给用户的信息 |
action_deactivate_loop | 停用当前已经激活的active_loop,并重置名为requested_slot的词槽 |
action_two_stage_fallback | 用于处理NLU得分较低时触发的fallback逻辑 |
action_default_ask_affirmation | 被action_two_stage_fallback使用,要求用户确认他们的意图 |
action_default_ask_rephrase | 被action_two_stage_fallback使用,要求用户重新表述 |
action_back | 回退一轮,回退到最后一次用户消息前;用户可以用**/back**来执行这个动作 |
词槽(slot)
[重要]influence_conversation
开发者可以通过influence_conversation来设置该词槽对对话过程是否有影响;如为false,该词槽仅用于存储信息,不会影响对话行为
词槽的类型
- text
- bool
- category
- float
- list
- any
策略(policy)
策略负责学习故事,从而预测动作
策略需要通过特征提取组件(featurizer)将故事转换成对话状态,进而得到对话状态特征,按照对话特征预测下一个对话动作;
在Rasa中,我们可以同时拥有多个策略,这些策略可独立进行训练和预测,最后通过优先级及预测得分共同决策
内建的策略
策略名称 | 描述 |
---|---|
TEDPolicy | TED是Rasa自行开发的一套对话预测算法,采用基于transformer的方案将当前的会话映射成一个对话向量,找到和这个向量最近的已知动作的对话向量 |
MemoizaionPolicy | 这个策略比较简单,直接记住历史中出现的状态和对应的动作,把这种关系做成字典;在预测时,直接查询相关的字典,如果有这样的状态,则将对应的动作作为结果;如果没有,则预测失败 |
AugmentedMemoizationPolicy | 这个策略和MemoizationPolicy的工作原理一致,只是它有一个遗忘机制,会随机地遗忘当前对话历史中的部分步骤,随后试图在训练的故事集合中寻找和当前历史匹配的故事; |
RulePolicy | 这个策略是规则驱动的,它合并了Rasa 1.x中所有基于规则的策略MappingPolicy,FallbackPolicy,TwoStageFallbackPolicy和FormPolicy |
策略的优先级
在Rasa中,每个策略独立预测下一个动作后,会使用得分最高的动
作。在得分相同(通常都是满分1分)的情况下,策略之间是有优先级
的(优先级数值越高,策略越优先)。
端点(endpoint)
endpoints.yml定义了Rasa Core和其他服务进行连接的配置信息,这
种信息被称为端点(endpoint)。目前支持的端点有event broker、
tracker store、lock store、动作服务器(action server)、NLU服务器、
NLG服务器和model storage。
Rasa SDK和自定义动作
Rasa本身包含Rasa SDK,所以安装了Rasa也就自动安装了Rasa SDK;如果只使用Rasa SDK而不想安装Rasa(如在生产环境中),那么可以按照如下方式安装:
pip install rasa-sdk
自定义动作
-
tracker对象
-
事件对象
在自定义动作中,如果想要更改对话状态,则需要用到事件(event)对象;
运行自定义动作
rasa run actions
Rasa支持的客户端
在绝大部分情况下,用户都是使用各种即时通信软件(IM)来和对话机器人进行沟通的
在Rasa中,负责和IM连接的组件称为connector; connector负责实现通信协议;
Rasa支持同时使用多个connector(也就是同时连接多个IM),开发者需要在credentials.yml文件中配置如何连接客户端;
值得注意的是,由于Rasa WebChat使用的底层协议是socketio,所以配置里使用的是socketio;
版权声明:本文标题:<Rasa实战> 内容摘要(二) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1725457656a1024395.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论