Rasa 运行服务【8】—Rasa 中文官方文档,聊天机器人,上下文管理,多伦对话,意图识别,填槽
本文是全系列中第9 / 10篇:Rasa 聊天机器人
- Rasa 模型评估【6】—Rasa 中文官方文档,聊天机器人,上下文管理,多伦对话,意图识别,填槽
- Rasa 消息和语音通道【5】—Rasa 中文官方文档,聊天机器人,上下文管理,多伦对话,意图识别,填槽
- Rasa 架构【4】—Rasa 中文官方文档,聊天机器人,上下文管理,多伦对话,意图识别,填槽
- Rasa 命令行界面【3】—Rasa 中文官方文档,聊天机器人,上下文管理,多伦对话,意图识别,填槽
- Rasa 教程【2】-Rasa 中文官方文档,聊天机器人,上下文管理,多伦对话,意图识别,填槽
- Rasa 云存储【10】—Rasa 中文官方文档,聊天机器人,上下文管理,多伦对话,意图识别,填槽
- Rasa 安装【1】-Rasa 中文官方文档,聊天机器人,上下文管理,多伦对话,意图识别,填槽
- 在Docker上运行Rasa【9】—Rasa 中文官方文档,聊天机器人,上下文管理,多伦对话,意图识别,填槽
- Rasa 运行服务【8】—Rasa 中文官方文档,聊天机器人,上下文管理,多伦对话,意图识别,填槽
- Rasa 验证数据【7】—Rasa 中文官方文档,聊天机器人,上下文管理,多伦对话,意图识别,填槽
运行服务
运行HTTP服务
你可以使用经过训练的Rasa模型运行一个简单的HTTP服务来处理请求:
[code lang=text]
rasa run -m models –enable-api –log-file out.log
[/code]
此API公开的所有端点都记录在HTTP API中。
各个参数分别代表:
1. -m: 包含Rasa模型的文件夹的路径
2. –enable-api: 启用此附加API
3. –log-file: 日志文件的路径
Rasa可以通过三种不同的方式加载你的模型:
- 从服务获取模型(请参阅下面从服务获取模型)
- 或从远程存储中获取模型(请参阅云存储)
- 通过
-m
从本地存储系统加载指定的模型
Rasa尝试按上述顺序加载模型,即如果没有配置模型服务和远程存储,它只会尝试从本地存储系统加载模型。
警告:
确保通过限制对服务的访问(例如,使用防火墙)或启用身份验证方法来保护你的服务:安全注意事项。
注意:
如果使用自定义操作,请确保操作服务正在运行(请参阅启动操作服务)。如果你的操作在另一台计算机上运行,或者你没有使用Rasa SDK,请确保更新你的endpoints.yml
文件。
注意:
如果使用仅NLU模型启动服务,则不能调用所有可用端点。请注意,某些端点将返回409状态代码,因为需要经过训练的Core模型来处理请求。
从服务获取模型
你可以配置HTTP服务以从其他URL获取模型:
[code lang=text]
rasa run –enable-api –log-file out.log –endpoints my_endpoints.yml
[/code]
模型服务在端点配置(my_endpoints.yml
)中指定,你可以在其中指定服务URL。Rasah会定期查询压缩的Rasa模型:
[code lang=text]
models:
url: http://my-server.com/models/default@latest
wait_time_between_pulls: 10 # [可选](default: 100)
[/code]
注意:
如果仅从服务拉取模型一次,请将wait_time_between_pulls
设置为None
。
注意:
你的模型服务必须提供压缩的Rasa模型,并将{“ETag”:<model_hash_string>}
作为其头部之一。如果此模型哈希发生更改,Rasa将下载新模型。
Rasa使用包含当前模型哈希的If-None-Match
头部向模型服务发送请求。如果模型服务可以提供与你发送的散列不同的模型,则应将其作为zip文件发送,并带有包含新散列的ETag
头部。如果没有,Rasa期望具有204或304状态码的空响应。
Rasa可能对你的模型服务提出的示例请求如下所示:
[code lang=text]
$ curl –header "If-None-Match: d41d8cd98f00b204e9800998ecf8427e" http://my-server.com/models/default@latest
[/code]
从远程存储中获取模型
你还可以配置Rasa服务以从远程存储中获取模型:
[code lang=text]
rasa run -m 20190506-100418.tar.gz –enable-api –log-file out.log –remote-storage aws
[/code]
模型被下载并存储在本地存储系统的临时目录中。有关更多信息,请参阅云存储。
安全注意事项
我们建议不要将Rasa服务暴露给外部世界,而是通过专用连接(例如,在docker容器之间)从后端连接到它。
其中,内置了两种身份验证方法:
基于令牌的身份验证
启动服务时使用--auth-token thisismysecret
传递令牌 :
[code lang=text]
rasa run \
-m models \
–enable-api \
–log-file out.log \
–auth-token thisismysecret
[/code]
你的请求应该传递令牌,在我们的案例中是thisismysecret
作为参数:
[code lang=text]
$ curl -XGET localhost:5005/conversations/default/tracker?token=thisismysecret
[/code]
基于JWT的身份验证
使用--jwt-secret thisismysecret
启用基于JWT的身份验证。对服务的请求需要在使用此密钥和HS256算法签名的Authorization
头部中包含有效的JWT令牌。
用户必须具有username
和role
属性。如果role
是admin
,则可以访问所有端点。如果role
是user
,则只有sender_id
与用户的username
匹配时才能访问具有sender_id
参数的端点。
[code lang=text]
rasa run \
-m models \
–enable-api \
–log-file out.log \
–jwt-secret thisismysecret
[/code]
你的请求应该设置正确的JWT头部:
[code lang=text]
"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ"
"zdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIi"
"wiaWF0IjoxNTE2MjM5MDIyfQ.qdrr2_a7Sd80gmCWjnDomO"
"Gl8eZFVfKXA6jhncgRn-I"
[/code]
端点配置
要将Rasa连接到其他端点,你可以在YAML文件中指定端点配置。然后使用参数--endpoints <path to endpoint configuration.yml>
运行Rasa。比如:
[code lang=text]
rasa run \
–m <Rasa model> \
–endpoints <path to endpoint configuration>.yml
[/code]
注意:
你可以在配置文件中使用$ {name of environment variable}
指定环境变量。然后,这些占位符将替换为环境变量的值。
连接一个踪器存储
要在端点配置中配置跟踪器存储,请参阅跟踪器存储
连接一个事件代理
要在端点配置中配置事件代理,请参阅事件代理。
原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2019/08/31/rasa_running_the_server-2/