AI

分类下相关文章

将 yolov5 内置模型导出为 pytorch mobile 格式

Google Colab 地址 使用 Colab 能利用 Google 免费提供的 GPU 资源,快速进行模型训练。比在我的弱鸡笔记本上训练,能节省大量时间。 在 Colab 上新建一个项目 https://colab.research.google.com 或者可以考虑继续沿用之前的项目。 安装 yolov5 新建一个代码块 #clone YOLOv5 and !git clone https://github.com/ultralytics/yolov5 # clone repo %cd yolov5 %pip install -qr requirements.txt # install ...

阅读全文...

对话机器人 Rasa(二十八):添加逻辑的工作流/规范

总结的一些 Rasa 开发过程中的经验和技巧,持续更新中 ... 第一步:流程图/对话逻辑图 原始的流程是怎样的 新流程逻辑分支 1 是怎样的 新流程逻辑分支 2 是怎样的 新流程逻辑分支 N 是怎样的 新流程逻辑抽象合并 第二步:utter_xxx 回复内容 domain.yml 中补充新增的 utter。 因为有了 utter,剩下的任务就把逻辑串联起来。 与此同时,通过完成简单的小任务,减少项目进度焦虑。 utter_xxx 前加上 intent 方便在 domain.yml 内可以搜索到所有的逻辑,省去了去 stories / rules 文件中去查找逻辑对应关系。 例如: utt ...

阅读全文...

对话机器人 Rasa(二十七):返回视频

虽然 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 ...

阅读全文...

Rasa in Docker: Could not load model due to Error deserializing graph schema

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 ...

阅读全文...

对话机器人 Rasa(二十六):生产环境支持多并发的配置

默认,Rasa 服务器只使用 1 个 worker。 对于生产环境,这肯定是不能接受的。 rasa 多并发 单机高并发设置 环境变量 SANIC_WORKERS 设置为 1 以上 默认 Rasa custom action server 也只使用 1 个worker。将环境变量 ACTION_SERVER_SANIC_WORKERS 的值设置为 1 以上 注意:locker store 的设置不是 InMemoryLockStore 时, 才可以启用多个 worker。 为何直接增加 worker 数量行不通 因为每一次请求的回复都需要基于对话的历史,而同一个用户的多个请求分散到多个 wo ...

阅读全文...

对话机器人 Rasa(二十五):Form Slot 输入校验

需求背景 例如,我想让 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 ...

阅读全文...

对话机器人 Rasa(二十四):两例多返回额外消息的 bug 定位

今天又遇到一例 Rasa 对话多返回额外消息的 Bug,结合之前遇到的另外一例,都非常具有代表性, 有必要总结一下。避免之后再出现此类问题,浪费时间去调试。 具体细节就不贴日志了,直接上结论。 现象 表现的现象都是一样的,就是本来用过对一个消息返回一条回复,例如: response1 但是实际返回是 [response1, response2] 多返回了一条。而且这条还是固定的,但是找不到关联性在哪里。 Bug 1:未加 slot_was_set,导致两个 story 没有区分度 custom action 中对查询到数据和未查询到做了不同的回复。 但是由于没有区分,导致在返回查询结果时,总 ...

阅读全文...

对话机器人 Rasa(二十三):重置 slot 的值

需求 在每次 rasa form 获取用户输入之后,将这个过程中用到的 slot 值重置。 即,置为 None。 防止下次进入同一个 form 时,slot 非空的情况导致未提示用户输入就进入之后的流程。 slot 重置 custom action 中,return 列表中加入 SlotSet 即可。例如: 在获取用户名之后,将用户名重置: return [ SlotSet("name", None), ] 错误的做法 SlotSet("name", None), return [ ] 这样,并不会生效。 custom action 中 retu ...

阅读全文...

对话机器人 Rasa(二十二):返回自定义补充字段

需求 前端访问 Rasa 接口获取聊天对话的应答信息,除了想获取 text,和 buttons 之外,还想获取额外的信息。 例如,多个操作按钮对应的 item id。 查了很久才找到一点线索,然后尝试了一圈,发现两个可行的方法。 方案一: custom action 直接在 custom action python 代码中,utter_message 中指定 custom 字典参数: custom_data = { "field1": "value1", "field2": "value2", "i ...

阅读全文...

对话机器人 Rasa(二十):Custom Action 中无法读取 Slot 值

现象 rasa custom action 中的代码,无法获取到 slot 值: items = tracker.get_slot("items") 而我确实在之前的流程中已经设置了 slot 的值 return [ SlotSet("items", items), FollowupAction("action_a"), ] 疑惑 通过打印日志,可以确定的是,赋给 slot 的值不是空。 可是为何获取不到呢? 我怀疑是 story 中没有加入对应的流程,即 slot_was_set 逻辑。 解决方法 测试了一下,确实如此,加入 ...

阅读全文...

对话机器人 Rasa(十九):rasa 不同客户端类型区分处理 custom channel

使用场景 例如,用 Rasa 实现一个自动聊天机器人,要同时实现多端: 网页端 微信小程序端 Android / iOS 原生 App 端 Windows 端 每一端的回复内容会有些许差异,如: utter_greet 网页端:欢迎使用大象计算器,地球上最不强大的计算器 微信小程序端:欢迎使用大象计算器微信小程序,您也可以关注大象工具公众号接收各种骚扰信息 突然想到 Rasa channel 是否可以实现这个功能,于是查了一下官方文档,看起来很挺合适。 不同 channel 返回不同 response 参考: https://rasa.com/docs/rasa/connectors/ ...

阅读全文...

对话机器人 Rasa(十七):python custom actions 将 list 或 dict 存储到 slot

需求场景 在 rasa custom actions 的 python 代码中,需要调用一些三方 http api,并对查询结果进行缓存。 例如,调用天气查询接口一次查询未来三天的天气。将三天的结果放到一个 slot 中缓存。然后,用户通过聊天对话询问某一天的天气时,就可以直接返回 cache 中的结果,无需每次都调用三方接口。 rasa slot 是否支持 list,dict 类型 之前只用过 slot 存储 text,number 这样简单的基础数据类型。不确定是否支持 list 和 dict 这样的类型。 查了一下 rasa 的官方文档,确实支持,只需要将 slot 类型设置成 any。 ...

阅读全文...

对话机器人 Rasa(十六):rasa command not found

在给家里台式机增加了块新 SSD 之后,终于有足够的空间可以安装 Rasa 了。。。 参照 开源对话机器人框架 Rasa (一):安装 中的流程使用 pip3 安装了rasa 之后。 执行: > rasa --version rasa: command not found 却发现 rasa 没有找到。 实际的 rasa 安装路径为: /home/zhongwei/.local/bin/rasa 说明 $HOME/.local 不在 PATH 中。 修改 ~/.bashrc 添加 export PATH=$PATH:$HOME/.local/bin 使配置生效 source ~/.b ...

阅读全文...

对话机器人 Rasa(十五):slot type 与 influence conversation

domain.yml 中的 slot 配置 以下是一段有问题的 slot 配置 slots: email: type: any influence_conversation: true mappings: - type: from_text conditions: - active_loop: email_form 训练时的错误信息 > rasa train --force InvalidSlotConfigError: An AnySlot cannot be featurized. Please use a dif ...

阅读全文...

对话机器人 Rasa(十四):Botfront 自带的 MongoDB 端口问题

漏洞现象 在部署好 botfront,并创建了管理员账号之后,第二天发现账号消失了。 我本以为是本地目录权限问题,导致 mongodb 没有将数据写入磁盘。 但是,修改了本地目录权限之后,这个问题又出现了。 感觉出大问题了。 查看 mongodb 日志 通过 docker logs 查看了 mongodb 镜像的日志。 {"t":{"$date":"2023-07-10T12:33:33.424+00:00"},"s":"I", "c":"-", ...

阅读全文...