AI

分类下相关文章

对话机器人 Rasa(十三):GUI 管理系统 Botfront 部署

Botfront 是一个非常方便的 Rasa GUI 图形化管理后台。可以在网页里: 编辑所有的 Rasa 配置文件 执行训练 使用 web 聊天组件 非常适合没有 linux 服务器操作经验的用户。 整个安装配置过程参考 https://botfront.io/docs/installation/server-cluster 即可。 这里只是记录一下文档中没有提及的细节。 版本 botfront@1.0.5 目录结构 $ tree -a . ├── .botfront │   ├── botfront.yml │   └── docker-compose-template.yml ├── ...

阅读全文...

对话机器人 Rasa(十二):用户会话 Session 管理

Rasa 可以管理用户 session,每个 session 由 conversation_id 唯一标识。 当你从 web 聊天组件或者 telegram app, fackbook messager 等不同的 channel 向 rasa webhook 发送一条消息时, 你所指定的 sender_id 即被转换为 conversation_id, 然后传递给 Rasa Core。 注意,默认情况下,Rasa session 是存储在内存中,即一旦你关闭 rasa 服务,session 就会丢失。 可以通过将对话信息存储到数据库来解决这个问题,例如,MongoTrackerStore, R ...

阅读全文...

对话机器人 Rasa(十一):custom actions 中使用 python 设置 slot 值

例如,我想在 Rasa 对话过程中,缓存当前用户选择的服务 ID。 方便在调用其他业务接口时使用该 slot 的值。 custom actions 代码示例 actions.py 中,假设要将 my_slot 设置为 some_value: from typing import Any, Text, Dict, List from rasa_sdk import Action, Tracker from rasa_sdk.events import SlotSet class MyCustomAction(Action): def name(self) -> Text: ...

阅读全文...

对话机器人 Rasa(十): 回复消息格式化,加粗换行等

例如,我想在 Rasa actions.py 中,对 dispatcher.utter_message 返回的消息进行格式化。 加粗 这里类似 Markdown 的语法,需要加粗的文本前后加双星号即可。 换行 使用 \n Rasa 会自动 trim 掉前后的空格。 示例: dispatcher.utter_message( text=f"**Reservation No.{index+1}** \n Name: {item['name']}" ) 效果: 注意 如果换了其他前端方案,例如 ChatUI,就不支持 markdown 语法了。需要自己去兼容。 ...

阅读全文...

对话机器人 Rasa(九): docker compose 同时部署 rasa core 和 actions 服务

尝试手动启动了两个 docker containter: 一个用于 rasa core 一个用于 rasa actions 但是,发现测试对话不涉及 actions 服务的,一切正常返回; 但是跟 actions 相关的,没有任何返回。 查看 docker 容器日志 docker logs -f <containter-id> 这样就能实时查看 docker 容器中 rasa 的运行日志,跟 tail -f 效果等同。非常方便。 异常日志 查看了一下 rasa core 的日志: rasa.shared.exceptions.RasaException: Failed to ...

阅读全文...

对话机器人 Rasa(八): actions 通过 Python 查询天气信息

非常典型地一个应用场景,即通过 rasa 从提交消息中提取城市和时间,然后调用三方天气接口查询天气,再返回用户。 但是按照官方文档,及电子书,网上资料里配置,jieba dict 也好,lookup table 也好,都会因为 DIETClassifier 报奇怪的异常。我感觉是版本的 bug,目前还没有定位到问题。 折腾了两天,没有头绪,看了部分 rasa 源代码,印象也非常不好,许多配置规则没有在文档中体现,需要看源码才能理清。 距离这个项目验收的时间不多了,我也懒得折腾,干脆直接在 actions 中直接获取消息原文,用 python 通过正则提取 entity,这本应由 DIETCla ...

阅读全文...

对话机器人 Rasa(七):Action 支持 Python 查询今天星期几

场景 例如,跟 Rasa 机器人对话中,询问今天星期几,然后使用 Python 返回中文答复。 nlu.yml 增加自然语言解析: - intent: weekday examples: | - 今天是星期几 - 今天几号 - 今天的日期 domain.yml 增加 actions: intents: - weekday actions: - action_weekday rules.yml 配置映射关系 - rule: 星期几 steps: - intent: weekday - action: action_weekday actio ...

阅读全文...

对话机器人 Rasa 中文系列教程

Rasa 是一个自然语言处理开源框架,用于构建聊天机器人和智能助手。它提供了一系列用于处理对话流程的工具和算法,包括自然语言理解(NLU)、对话管理、对话策略等。 使用 Rasa,可以创建一个可扩展、灵活且高度个性化的聊天机器人,该机器人可以与用户进行深入的交互,以满足他们的需求。 Rasa 是基于 Python 编写的,并且支持命令行和 API 接口的方式进行使用和集成。 它还有一个友好的社区,提供了很多文档、教程和示例来帮助开发者上手。 以下教程基于 Rasa 3.4.6 版本,我边学习,边整理的实战笔记,并经过测试。应不少好友要求,我也建了一个Rasa 学习讨论的微信群,人不多,也欢迎大 ...

阅读全文...

一个简单问题快速区分 ChatGPT 4 与 3.5

今天在 V2EX 论坛上学到了一个有趣的技巧:如何一句话区分 ChatGPT 3.5 与 4。 目前我用到的大部分免费的 ChatGPT 套壳网站都是基于 ChatGPT 3.5 的,偶有标榜使用了 ChatGPT 4 接口的网站。即便是申明使用了 4 的接口,很多也是挂着羊头卖狗肉。比较 4 的接口成本太高了。 回归正题,直接看截图: 这个我一直在用的一个套壳站,果然一句话就露馅了,这就是典型的 ChatGPT 3.5 的回复。 对于 4 则是有逻辑性的分析过程: 问:小明 8 岁,他妹妹年龄是他的一半。小明 56 岁时,妹妹几岁 答:小明现在 8 岁,他的妹妹年龄是他的一半,因此妹 ...

阅读全文...

Rasa 中 JiebaTokenizer, LanguageModelFeaturizer 与 DIETClassifier 各自的作用及区别

虽然我已经 用 Rasa 实现了中文自动问答机器人功能,但是里面 pipeline 的配置,其实我完全没看明白各个组件起到的作用。我已经很认真地读了几遍官方文档关于各个组件的描述,英文/中文文档都看了不少,对我来说太晦涩了,无法理解。 但是这个项目除了要实现功能,还要做成 PPT 给合作方讲解,对方有深度学习的专家教授,这就更尴尬了。只能临时抱佛脚求助 ChatGPT,没想到 AI 给出的解释通俗易懂,真大哥也。 除了口头禅 “总之”,其他都挺好的。 rasa 中 DIETClassifier 的作用 在 Rasa 中,DIETClassifier 是一种用于意图分类和实体提取的深度学习模型。 ...

阅读全文...

对话机器人 rasa(六): 基于 websocket 的网页组件

由于要现场演示 Rasa 对话机器人的实际效果,感觉用 Rasa Shell 命令来演示不太正式。 还是用网页版 Rasa 组件来演示更直观一些,也容易理解。 再就是我想把对话场景制作成一段小视频,或 gif,放到 PPT 里给客户演示。这种情况,也是网页端更简单直观。 页面效果 但是官方组件在手机端体验不太好,底部发送按钮有遮拦,在 iphone 上按钮超出右侧屏幕,原因是宽度都是用的 px 写死。 rasa websocket 配置 打开配置文件 credentials.yml: 增加 socketio: user_message_evt: user_uttered bot_me ...

阅读全文...

对话机器人 Rasa(五):自动化测试

自动化的必要性 手动跑一遍覆盖各种问题的对话,太耗费时间了。例如,即便最简单的有十几个意图识别的对话场景,手动测试一遍都需要很长时间。 而且记不住有哪些 rule ... 需要对照着 nlu.yml 文件才能记起来。 比较高效的方式是,跑一遍自动化测试,然后将失败的 case 摘出来,手动跑一遍交互式训练。 还有另外一个好处,就是之后现场演示的时候,可以照着自动化测试的 test case 来演示,以保证万无一失。避免像百度文心一言一样,发布会上连现场演示的勇气都没有。 测试文件 > ls tests/ test_stories.yml 似乎没有 test_rules.yml 这样的文 ...

阅读全文...

对话机器人 Rasa 何时使用 rule,何时使用 story

在配置 Rasa 对话规则的时候,我一直有一个疑问。 Rasa 中 story 的意义是什么? 我在跟 Rasa 对话的时候,似乎也没发现按照 story 的流程走。 查了一下: Rasa 包含了两种方式来定义对话流程:规则(Rules)和故事(Stories)。 规则是一种简单而有限制的方式来定义对话流程。它们通常用于处理简单的用户请求,例如回答一个固定的问题或者执行某些操作。规则只能捕获单个意图(intent)并且不能处理槽位填充或多轮对话。该方法适用于简单的场景下。 相比之下,故事可用于更复杂的对话流程。故事中可以包含多个意图、槽位填充以及多轮对话。在故事中,您可以定义特定的对话场景,并 ...

阅读全文...

在 google colab 上申请免费的 gpu 资源

首先在 google colab 上新建一个笔记本,然后菜单里选择 “修改” - “笔记本设置” 在弹出的配置对话框里,选择 GPU 作为硬件加速器,即可。 点击保存。 GPU 加速数据处理的场景 机器学习和深度学习:GPU 对于大规模数据集的处理速度比 CPU 快得多,因此免费的 GPU 资源可以用于训练神经网络、图像识别、自然语言处理等任务。 科学计算:GPU 可以用于加速各种科学计算,如物理仿真、气象预测等。 游戏开发:使用 GPU 进行游戏开发可以提高渲染速度和图形质量。 数字艺术和设计:GPU 可以用于加速渲染和处理高分辨率图像和视频,从而加快数字艺术和设计的工作流程。 例如 ...

阅读全文...

对话机器人 rasa (四):生产环境部署,Ubuntu 服务器基于 docker

由于线上生产环境使用的是腾讯云的服务器,Ubuntu server 版本比较低,是 18.04。自带的 python 版本为 3.6,不满足对话机器人框架 rasa 对 python 版本的最低要求。 而升级 python 版本可能破坏系统的一些工具。至于 virtualenv, miniconda 的方案我都非常反感,因为手动操作也不少,增加了重复部署的复杂度,而且长时间不用,命令就忘了。(目前大部分服务端程序,我都采用了 golang,已经很少用 python)我觉得目前最佳的部署方案是 docker。 这也是我第一次线上生产环境尝试 docker 部署,所以记录一下流程。 如果有一定 d ...

阅读全文...