郑州网站推广方法,做网站好还是做安卓app好,h5网站搭建,温州建网站公司哪家好前文介绍了基于RASA的总体架构#xff0c;本文着重介绍一下实现细节。机器人管理概述框架是多租户SAAS系统#xff0c;每个用户可以创建多个机器人#xff0c;每个机器人关联独立的语料库#xff0c;机器人能力#xff0c;话术流程#xff0c;在RASA中对应一个RASA运行实…前文介绍了基于RASA的总体架构本文着重介绍一下实现细节。机器人管理概述框架是多租户SAAS系统每个用户可以创建多个机器人每个机器人关联独立的语料库机器人能力话术流程在RASA中对应一个RASA运行实例。机器人管理应用系统需要给用户提供最精简的配置UI且可以完成Rasa需要的相关配置。然后将这些数据转成Rasa可以识别的yaml格式保存在HDFS中。RASA到HDFS中获取配置数据进行训练测试。测试通过后将模型保存在HDFS中部署上线时候在启动一个容器加载HDFS中的模型并启动RASA服务。对话管理应用系统接收用户消息调用RASA endpoint完成响应消息预测。机器人创建应用系统中创建唯一标识调用rasa init接口在rasa中初始化机器人在git中创建版本库在hdfs分配存储路径和空间在train server上启动docker机器人话术设计RASA本身支持是多轮对话需要做一个可视化流程图然后转成Rasa的story和rule的配置。检索型机器人少量Faq可以直接使用rasa的response selector完成。但是海量知识库的检索需要单独系统这个后续在机器人扩展能力里面再阐述。因为机器人创建的时候已经分配了训练数据的存储路径话术设计的内容可以直接生成配置文件放在训练数据的路径里面。机器人训练训练数据生成以后用户可以启动训练。每次数据训练会自动在git中生成一个版本节点。训练是一个异步任务放入对话管理平台调度服务统一调度。训练完成后可以直接启动测试。这时候rasa的服务是在训练服务器启动。当训练新数据的时候必须停止当前的测试任务。机器人上线测试通过后启动上线。如果是第一次上线需要在生产环境创建容器然后使用新训练的模型启动生产环境对应的docker。如果是升级更新只是使用新模型重启docker。机器人能力扩展假如我们已经有了KBQA的服务那么用户要开通这个服务那只需要点击开通然后用户需要选择哪类问题由KBQA回答那么对话管理服务要做的事情根据用户提供的问题分类训练一个意图然后配置规则将这个意图关联到KBQA Action上。能力扩充就完成了。用户关闭KBQA在配置文件中删除这个意图就可以了。关于如何创建KBQA服务如何使用用户数据Fine turn模型等后续会按不同的能力单独讨论。机器人领域动态扩充前面我们讲的训练数据都基于一个前提那就是字典或者说语言模型是固定的。我们在此基础上扩展训练数据。当我们使用一个新的领域的时候会有很多字库中不存在的词这个时候需要Fine turn语言模型和字库。比如我们使用的分词是语言模型分词用的BERT作为基础Featurizer因此机器人领域扩充是Fineturn BERT模型。我们在训练服务器上单独启动BERT服务由用户传入训练数据然后加入训练调度队列成功后生成模型文件供RASA启动的时候引用。在线学习在线学习训练数据和上线的流程前面已经有了这里关键是错误回答的标注问题。如何根据用户的标注重新更新训练数据。业务能力集成业务模块提供接口rasa action server调用自定义action去调用业务模块的接口完成业务能力集成。算法层架构图1、生产服务器和训练服务器通过HDFS做文件共享训练服务器从HDFS取训练数据进行训练生成模型模型文件依旧保存于HDFS而生产服务器从HDFS取训练好的模型应用于推理。2、每个robot使用的模型都可能不同因此使用容器隔离每个机器人启动一个容器容器内运行自己的rasa及各个能力组件。3、语言模型也在各自的容器内训练启动的时候使用各自的语言模型。RASA相关配置nlu和dm的配置nlu和dm的配置都在config.yml里面语言模型采用BERT主要分了器使用DIET。# Configuration for Rasa NLU.# https://rasa.com/docs/rasa/nlu/components/language: zhpipeline:- name: LanguageModelTokenizer #需要改代码去掉不支持中文的限制- name: RegexFeaturizer- name: LexicalSyntacticFeaturizer- name: LanguageModelFeaturizermodel_name: bertmodel_weights: bert-base-chinese- name: DIETClassifierepochs: 100- name: EntitySynonymMapper- name: ResponseSelectorepochs: 100- name: FallbackClassifierthreshold: 0.3ambiguity_threshold: 0.1policies:- name: MemoizationPolicy- name: TEDPolicymax_history: 5epochs: 100- name: RulePolicyTracker Store配置Tracker Store主要功能是存储用户对话我们使用PostgreSQL存储。Rasa默认就支持。PostgreSQL的参数在endpoints.yml中配置。endpoints.ymltracker_store:type: SQLdialect: postgresql # the dialect used to interact with the dburl: postgresdb: rasa # path to your dbusername: # username used for authenticationpassword: # password used for authenticationquery: # optional dictionary to be added as a query string to the connection URLdriver: my-driverEvent Broker事件代理主要作用是讲机器人的对话异步传给其他服务比如将机器人的消息转发给ES等。Event Broker支持kafka数据库方式等我们采用kafka。配置也在endpoints.yml中配置。endpoints.ymlevent_broker:type: kafkasecurity_protocol: SASL_PLAINTEXTtopic: topicurl: localhostsasl_username: usernamesasl_password: passwordLock Store配置Rasa使用token锁定机制来确保以正确的顺序处理给定会话ID的传入消息并在消息处于活动状态时锁定会话。这意味着多个Rasa服务器可以作为复制服务并行运行并且客户端在发送给定会话ID的消息时不一定需要寻址同一节点。我们采用Redis作为Lock存储。redis参数的配置也是在endpoints.yml中。lock_store:type: redisurl: port: password: db: key_prefix: 模型加载路径模型保存在hdfs上为了和rasa服务解耦我们在rasa中使用从server加载这样模型保存以后启动一个http服务通过http服务可以下载模型然后再rasa的endpoints.yml中配置server地址models:url: http://model-server.com/models/defaultwait_time_between_pulls: 10 # In seconds, optional, default: 100Action Server配置需要运行ActionServer才可以调用自定义Action。Actionserver的配置也在endpoints.yml里面。action_endpoint:url: http://localhost:5055/webhookAction server的启动方式rasa run actions启动Action Server的时候需要在配置文件的路径下且里面必须包含actions路径如典型一个机器人的配置如下其中helloworld.py就是一个自定义action。├── actions│ ├── helloworld.py│ └── __init__.py├── config.yml├── credentials.yml├── data│ ├── nlu.yml│ ├── rules.yml│ └── stories.yml├── domain.yml├── endpoints.yml├── models│ └── 20201228-084711.tar.gz└── tests└── test_stories.yml自定义actionKBQA、DrQA 、闲聊机器人、检索机器人、业务系统相关查询都是基于自定义Action实现的。actions路径下有如下文件├── actions│ ├── drqa_action.py│ ├── kbqa_action.py│ ├── chat_action.py│ ├── retrival_action.py│ ├── business_action.py│ └── __init__.py这些自定义action主要是实现了rasa_sdk的api和各个能力之间的适配。具体能力的实现在不同的系统中后续我们会依次介绍各个系统的实现。机器人能力扩展开发规范由于机器人能力是动态扩展的而且要嵌入到rasa系统中因此要有遵循一定规则支持命令行启动训练和推理支持http调用并满足统一的接口规范支持训练数据和模型远程存储