当前位置: 首页 > news >正文

首次在rasa中使用form的个人小结

Form是rasa的一个很重要的组成,通过form可以引导user提交关键信息,从而配合完成相应的任务。在之前实现《让自家的智能语音助手实现todo任务的添加》的时候,我尝试使用了form,这是我第一次在rasa中使用form,今天空下来了,自己小结下。

首先需要在domain中定义form,同时也要定义这个form会引用那个entity,这些在slot中也要一起定义。然后是设计stories,即在什么场景下会使用这个form。和其他actions的story定义类似,先有一个用户的intent发起,比如我的“查找任务”story就如下定义:

## query_task   //这个是story名字*query_task // 用户intent- utter_ask_task_id //chatbot询问任务编号- query_task_form //告诉chatbot要使用form- form{“name”: “query_task_form”} //告诉chatbot使用哪个form,只有按照这个格式写,form才真正被调用- form{“name”: null} //告诉chatbot结束使用form

定义好form,rasa train完成模型训练,接下来修改actions。和普通action的定义一样,先要定义一个class,如Class ActionQueryTaskForm(FormAction),注意括弧内要填写“FormAction”,代表这是一个form action。这个class里会包含四个def,分别定义如下:   

 def name(self) -> Text:return "query_task_form"# 这个函数返回anctions名字,与domain中定义的form名字对应。@staticmethoddef required_slots(tracker: Tracker) -> List[Text]:return ["id"]# 这个函数返回form关联的entity是哪一个,如果是多个,就在return中添加。def slot_mappings(self) -> Dict[Text, Union[Dict, List[Dict]]]:return {"id": [self.from_entity(entity="id"), self.from_text()]}# 这个函数返回slot_mapping映射,如果缺少了这个函数,anction运行时会报“Failed to extract slot content with action query_task_form”。def submit(self,dispatcher: CollectingDispatcher,tracker: Tracker,domain: Dict[Text, Any],) -> Dict[Text, Any]://main action codereturn []# 这个函数相当于普通actions中的run,它是指将form收集的信息提交后需要做什么,是action的执行主体。

form完成了如上定义后,在和chatbot互动时就能按照我在stories中定义的场景应用了。当然,rasa中的form使用必定还有其他内容,等我用到的时候再来小结。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • stm32 W25Q数据存储
  • C语言的结构体类型
  • Rust Windows下编译 静态链接VCRuntime140.dll
  • 华为 HCIP 认证费用和报名资格
  • 【5G QoS】详解5G QoS端到端工作机制
  • Linux tr命令
  • CMake构建学习笔记16-使用VS进行CMake项目的开发
  • [论文笔记]ChatQA: Surpassing GPT-4 on Conversational QA and RAG
  • 【LLM多模态】文生视频评测基准VBench
  • django-admin自定义功能按钮样式
  • 数据结构之栈和队列的应用
  • 【物联网技术大作业】设计一个智能家居的应用场景
  • 树莓派Pico开发板简介
  • 【网络】高级IO——阻塞IO和非阻塞IO的实现
  • 【项目一】基于pytest的自动化测试框架———解读requests模块
  • JavaScript 如何正确处理 Unicode 编码问题!
  • @jsonView过滤属性
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • Angular Elements 及其运作原理
  • javascript 总结(常用工具类的封装)
  • maven工程打包jar以及java jar命令的classpath使用
  • Promise面试题2实现异步串行执行
  • Redis字符串类型内部编码剖析
  • Sublime Text 2/3 绑定Eclipse快捷键
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • 搞机器学习要哪些技能
  • 每天一个设计模式之命令模式
  • 前端攻城师
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 说说动画卡顿的解决方案
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 【干货分享】dos命令大全
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • #DBA杂记1
  • #define
  • #include到底该写在哪
  • #数据结构 笔记一
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (06)Hive——正则表达式
  • (09)Hive——CTE 公共表达式
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (备忘)Java Map 遍历
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (六)c52学习之旅-独立按键
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (七)理解angular中的module和injector,即依赖注入
  • (十一)c52学习之旅-动态数码管
  • (四)Linux Shell编程——输入输出重定向
  • (算法)大数的进制转换
  • (循环依赖问题)学习spring的第九天
  • (游戏设计草稿) 《外卖员模拟器》 (3D 科幻 角色扮演 开放世界 AI VR)
  • (源码分析)springsecurity认证授权
  • (转)Android学习笔记 --- android任务栈和启动模式