大象笔记 > 标签 > rasa
2023-12-28 · 阅读 1561 · 字数 97
需求背景 Rasa custom action 的 Python 代码中,需要根据不同 channel 渠道,来做不同的逻辑处理。 所以,需要能获取当前消息的 channel 来源。 获取 channel channel = tracker.get_latest_input_channel() print(channel) 可能值 配置文件 credentials.yml 中有详情的 channel 清单。 例如: 默认 channel: rest 自定义的 channel: 例如 app 等 查看合集 📖 对话机器人 Rasa 中文系列教程 ...
2023-11-08 · 阅读 1924 · 字数 873
使用场景 例如,用 Rasa 实现一个自动聊天机器人,要同时实现多端: 网页端 微信小程序端 Android / iOS 原生 App 端 Windows 端 每一端的回复内容会有些许差异,如: utter_greet 网页端:欢迎使用大象计算器,地球上最不强大的计算器 微信小程序端:欢迎使用大象计算器微信小程序,您也可以关注大象工具公众号接收各种骚扰信息 突然想到 Rasa channel 是否可以实现这个功能,于是查了一下官方文档,看起来很挺合适。 不同 channel 返回不同 response 参考: https://rasa.com/docs/rasa/connectors/ ...
2023-08-27 · 阅读 1270 · 字数 340
现象 rasa custom action 中的代码,无法获取到 slot 值: items = tracker.get_slot("items") 而我确实在之前的流程中已经设置了 slot 的值 return [ SlotSet("items", items), FollowupAction("action_a"), ] 疑惑 通过打印日志,可以确定的是,赋给 slot 的值不是空。 可是为何获取不到呢? 我怀疑是 story 中没有加入对应的流程,即 slot_was_set 逻辑。 解决方法 测试了一下,确实如此,加入 ...
2023-09-20 · 阅读 1952 · 字数 483
需求 前端访问 Rasa 接口获取聊天对话的应答信息,除了想获取 text,和 buttons 之外,还想获取额外的信息。 例如,多个操作按钮对应的 item id。 查了很久才找到一点线索,然后尝试了一圈,发现两个可行的方法。 方案一: custom action 直接在 custom action python 代码中,utter_message 中指定 custom 字典参数: custom_data = { "field1": "value1", "field2": "value2", "i ...
2023-09-17 · 阅读 1859 · 字数 406
需求 在每次 rasa form 获取用户输入之后,将这个过程中用到的 slot 值重置。 即,置为 None。 防止下次进入同一个 form 时,slot 非空的情况导致未提示用户输入就进入之后的流程。 slot 重置 custom action 中,return 列表中加入 SlotSet 即可。例如: 在获取用户名之后,将用户名重置: return [ SlotSet("name", None), ] 错误的做法 SlotSet("name", None), return [ ] 这样,并不会生效。 custom action 中 retu ...
2023-09-17 · 阅读 1277 · 字数 533
今天又遇到一例 Rasa 对话多返回额外消息的 Bug,结合之前遇到的另外一例,都非常具有代表性, 有必要总结一下。避免之后再出现此类问题,浪费时间去调试。 具体细节就不贴日志了,直接上结论。 现象 表现的现象都是一样的,就是本来用过对一个消息返回一条回复,例如: response1 但是实际返回是 [response1, response2] 多返回了一条。而且这条还是固定的,但是找不到关联性在哪里。 Bug 1:未加 slot_was_set,导致两个 story 没有区分度 custom action 中对查询到数据和未查询到做了不同的回复。 但是由于没有区分,导致在返回查询结果时,总 ...
2023-09-17 · 阅读 1495 · 字数 523
需求背景 例如,我想让 Rasa 提示用户输入要购买的图书数量,需要输入 1 本到 100 本。 方案一 slots: book_number: type: float min_value: 1 max_value: 100 但是这里的 min_value 及 max_value 只是限制了范围, 在输入的数字超过范围时,自动修正为边界值,没有起到校验失败时提示的效果。 这个方案不好。 注: slot type 没有整型,只有 float 类型。 方案二 Rasa Custom Action validating: https://rasa.com/docs/ra ...
2024-04-06 · 阅读 2116 · 字数 842
默认,Rasa 服务器只使用 1 个 worker。 对于生产环境,这肯定是不能接受的。 rasa 多并发 单机高并发设置 环境变量 SANIC_WORKERS 设置为 1 以上 默认 Rasa custom action server 也只使用 1 个worker。将环境变量 ACTION_SERVER_SANIC_WORKERS 的值设置为 1 以上 注意:locker store 的设置不是 InMemoryLockStore 时, 才可以启用多个 worker。 为何直接增加 worker 数量行不通 因为每一次请求的回复都需要基于对话的历史,而同一个用户的多个请求分散到多个 wo ...
2023-10-09 · 阅读 2036 · 字数 150
When deploying Rasa service in production Docker environment, error show: rasa.core.agent - Could not load model due to Error deserializing graph schema. Can't find class for graph component type 'rasa.graph_components.providers.forms_provider.FormsProvider' Reason This error typically occurs whe ...
2023-10-23 · 阅读 2067 · 字数 214
虽然 Rasa 支持图片资源的返回,但是并不支持视频资源。 可以采用自定义字段的方式返回视频链接。 例如: utter_my_video: - text: "Watch video below" custom: video: "https://www.youtube.com/embed/qsKoT__cmAw?si=1hv4HoKA3ZcTvNCN" 这里的视频链接使用了 youtube 嵌入 iframe 中的视频源链接。 前端可以封装一个 video 卡片组件,将 youtube iframe 嵌入到页面中。 自定义字段直接返回 ifr ...
2023-11-07 · 阅读 2356 · 字数 575
总结的一些 Rasa 开发过程中的经验和技巧,持续更新中 ... 第一步:流程图/对话逻辑图 原始的流程是怎样的 新流程逻辑分支 1 是怎样的 新流程逻辑分支 2 是怎样的 新流程逻辑分支 N 是怎样的 新流程逻辑抽象合并 第二步:utter_xxx 回复内容 domain.yml 中补充新增的 utter。 因为有了 utter,剩下的任务就把逻辑串联起来。 与此同时,通过完成简单的小任务,减少项目进度焦虑。 utter_xxx 前加上 intent 方便在 domain.yml 内可以搜索到所有的逻辑,省去了去 stories / rules 文件中去查找逻辑对应关系。 例如: utt ...
2024-04-06 · 阅读 2100 · 字数 544
应邀做一个关于 Rasa 开发智能客服的培训,所以简单整理一下培训内容的大纲。 之前在公司内部做过一个 Rasa 的培训,实际谈不上培训,只能算是一个技术分享。 因为团队内部大部分是硬件工程师和嵌入式开发工程师,大家对于纯软件相关的了解不多,也不负责相关的开发,所以只能算是一个入门介绍,具体细节没有深入。 而这次不同,受众是软件开发团队,负责智能客服系统的开发,所以需要有针对性的做内容调整。同时,把自己踩过的坑分享一下。 先列一下大纲,然后再基于此做成 PPT。 培训大纲 rasa 原理及处理逻辑 配置规则:意图识别、回复模板、关联规则 如何通过界面管理 rasa 的 yaml 文件(rul ...
2024-02-17 · 阅读 1516 · 字数 413
bug 现象 修改了一处不相干的 story/rule A,引起了另一个 B 流程返回空消息。 这不是一个典型的问题,也没有最终定位到 story 的问题,但是通过将 story 改写为 rule 解决。 这里只记录一下排查,及 debug 的思路。 思路 首先排除掉 intent 识别的问题。因为请求时直接使用的 /intent 的方式,不存在意图识别问题 首要目标:快速复现问题 大概率就是前面流程的 story / rule 写的有问题 TODO done: 整理思路 done: new branch done: model backup & 使用有问题的 model don ...
2024-02-18 · 阅读 1516 · 字数 205
实现了一个自定义的 Rasa Socket.IO channel, 但是发现在生产环境始终无法建立 websocket 链接,返回 400 错误。而在开发环境却一切正常。 在 Rasa 官网论坛找到了一个类似的问题: https://forum.rasa.com/t/urgent-connetions-problems-with-socketio-channel-and-sanic-workers-1/59139/1 大致意思是 SANIC_WORKERS 大于 1 时,总是返回 400 错误。 在生产环境将 SANIC_WORKERS 修改为 1 之后,发现确实可以正常建立连接了。 这就非 ...
2024-02-16 · 阅读 1714 · 字数 513
在之前的 Rasa 笔记中记录过 Sender ID 的使用,即 session id 的管理: 对话机器人 Rasa(十二):用户会话 Session 管理 对于基于 HTTP 的自定义渠道,session id 比较好处理,直接获取请求中的 sender 等自定义的字段值即可。 但是,对于基于 socket.io channel 来说,代码修改相对复杂一些,还有额外的概念。这里记录一下。 session_persistence 参考官方文档: https://rasa.com/docs/rasa/connectors/your-own-website/ socketio: user_m ...
生活 | 跑步 清单 足球 鲁班 探索 孤独的美食家 驾驶 电视剧 收纳 奶爸 健康 game 电影 周末 joke |
---|---|
Geek | 健身 Laravel Git Vim MySQL Linux UI Windows SVN 纪录片 管理 Shell 游记 工具 手机 BackboneJS 自建博客 Mac DNS Tornado CDN Django Python AngularJS 理财 前端 Nginx 爬虫 Redis Javascript Browser 浏览器 推广 OAuth CSS PHP Social Networks 安全 运维 创业 杂记 VueJS Android Image IDE Java ReactJS 数据分析 SQLite RESTful 读书笔记 家电 ecshop Vagrant wordpress docker SEO GTD magento mongodb nodejs weex 冷知识 ruby iOS 微信小程序 AI CMS 快应用 backpack 广告联盟 OA 短信 UWP Win CSharp Tampermonkey graphviz 钉钉 WPS 数据字典 微信公众号 Fuchsia Adobe XD SQL Server thinkphp 代码规范 商业模式 Flutter 头痛的问题 serverless 视频制作 国际化 golang 服务器 Kotlin 网站建设 5G 笔记本 图片 spark spring 物联网 InfluxDB 图像识别 postgre rust |
成长的烦恼 | 闲言碎语 待产 不睡觉 写作 程序员 孙心然语录 原则 大鸿语录 |
地球 | 植物 时间 中文 赚钱 国家地理 烟台 一生伏首拜阳明 emoji 弟子规 英文 国际贸易 |