AI

分类下相关文章

对话机器人 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(一):安装 对话机器人 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 ...

阅读全文...

对话机器人 Rasa (三):基于规则添加一个意图对应的回复

使用 Rasa rules.yml 是最简单的指定回复内容的方式,即,添加一条匹配规则。 添加一个意图对应的回复,需要编辑三个文件。 以回复用户的夸奖为例: nlu.yml 意图识别: data/nlu.yml - intent: praise examples: | - 你真聪明 - 你怎么这么聪明 - 你太智能了 - you are really smart - you are so clever domain.yml 编辑返回的内容模板。domain.yml 中添加: version: "3.1" intents: ...

阅读全文...

对话机器人 Rasa (二):中文支持

Rasa 安装之后,默认是不支持中文对话的。 学习、配置的策略 查到的示例,pipeline 配置各不相同,不动手试,难以知道相互间的优劣。 所以,先从能运行的最简单配置开始。例如使用《Rasa 实战:构建开源对话机器人》这本书上的推荐的中文 pipeline。 里面有个医疗机器人的 nlu 配置示例。当然,只包含了 nlu 部分的配置,即识别意图和实体,没有回复配置。 效果 基于 Rasa websocket 的网页组件 实现。 最简单的中文配置 打开项目根目录下的 config.yml 配置文件,修改如下: recipe: default.v1 language: zh pipeli ...

阅读全文...

Rasa NLU pipeline 组件列表

官方文档 https://rasa.com/docs/rasa/components 记录几个感觉比较重要的: 语言模型 Language Model MitieNLP: 预训练的语言模型之一,需要指定模型文件,网上有可以下载到的用百度知道和维基百科训练好的中文模型文件。 SpacyNLP: 另一个预训练的语言模型。也需要指定模型文件,以中文为例,有几个版本,https://spacy.io/usage/models, 小的几十M,大的几百M. 推荐使用至少中型模型,即 md,否则影响意图分类的性能。 在一些文章里看到说是官方推荐使用 SpacyNLP, 但是我在官方文档里没有找到这样的说 ...

阅读全文...

对话机器人 Rasa(二十一):Rasa 项目的 gitignore 配置

rasa init 初始化项目之后,可以看到增加了很多不需要添加到 git 项目管理中的文件,例如 模型文件。默认的模型文件大小就有 24M。 cache 文件 等。 在开始动手修改各种 yml 配置文件之前,最好先提交原始的文件到 git 管理中,防止误操作。 网上找到一个规范的 rasa gitignore 文件,用来过滤这些文件。 参考 https://raw.githubusercontent.com/RasaHQ/rasa-nlu-examples/main/.gitignore gitignore 配置 # Byte-compiled / optimized / DLL fil ...

阅读全文...