Rasa官方教程翻译8 运行服务

运行HTTP服务

从服务获取模型

从远程存储获取模型

配置SSL / HTTPS

安全性考虑

节点配置

连接跟踪器存储

连接事件代理

运行HTTP服务

你可以运行一个简单的HTTP服务器,该服务器使用经过训练的Rasa模型处理用户请求:

rasa run -m models --enable-api --log-file out.log

所有节点公开的API都记录在在文档HTTP API中。

参数解释:

  • -m: 包含Rasa 模型的文件夹路径,
  • --enable-api: 使能外部API
  • --log-file: 日志文件路径.

Rasa可以通过三种不同的方式加载模型:

  1. 从服务器获取模型(查看 Fetching Models from a Server),
  2. 从远程存储中获取模型 ( Cloud Storage)
  3. 使用 -m 参数从本地系统存储中加载

Rasa会按上述顺序加载模型,即如果没有没有配置模型服务和远程存储,将尝试从本地系统存储中加载模型。

警告

请确保你的服务安全,可以通过限制访问(例如,防火墙)或者启用身份验证的方式(Security Considerations)。

 

注意

如果你要使用自定义action,请确保你的action服务正常运行(查看Start an Action Server)。 如果你的action服务运行在其他服务器或者没有使用Rasa SDK,请更新你的endpoints.yml文件。

 

注意

如果你仅仅使用了NLU模型启动服务,你不能调用所有的节点。注意,某些节点服务可能会返回409状态码,因为这些节点需要训练过的Core模型来响应请求。

 

注意

默认情况下,HTTP服务器作为单独进程运行的。你可以使用环境变量SANIC_WORKERS改变工作进程的数量。建议你把工作进程数量设置为CPU核数的数量(查看文档Sanic docs了解更多详细信息)。着只能与RedisLockStore结合使用(参考Lock Stores)。

从服务获取模型

你可以通过配置HTTP服务从其他URL中获取模型:

rasa run --enable-api --log-file out.log --endpoints my_endpoints.yml

在节点配置文件(my_endpoints.yml)中指定模型服务,Rasa会在你指定的URL中定期查询压缩的Rasa模型:

models:

  url: http://my-server.com/models/default@latest

  wait_time_between_pulls: 10   # [optional](default: 100)

 

注意

如果你只需下载一次模型文件,可以把wait_time_between_pulls设置为 None

 

注意

你的模型必须是zip压缩的并用 {"ETag": <model_hash_string>} 作为头信息之一。如果模型的hash值改变,Rasa将重新下载模型。

Rasa给模型服务发送数据时,头信息中会包含参数值为当前模型的hash值的参数If-None-Match。如果发送的hash值和模型服务中的hash值不一样,模型服务会返回新的zip格式压缩文件,在参数ETag中包含了新的模型的hash值。否则,将返回状态码为204或304的空消息。

Rasa可能向模型服务器发出的请求示例如下:

$ curl --header "If-None-Match: d41d8cd98f00b204e9800998ecf8427e" http://my-server.com/models/default@latest

 

从远程存储获取模型

你可以配置Rasa服务从远程存储获取模型:

rasa run -m 20190506-100418.tar.gz --enable-api --log-file out.log --remote-storage aws

模型将被下载并存储在本地存储系统的临时目录中。更多信息查看Cloud Storage

配置SSL/HTTPS

默认情况下,Rasa服务使用HTTP协议进行通信。如果要使用SSL加密通信,你需要提供有效的证书和相应的私钥文件。

你可以在rasa run命令中指定这些文件:

rasa run --ssl-certificate myssl.crt --ssl-keyfile myssl.key

如果在创建时你使用密码加密了密钥文件,你需要在命令中添加密码:

rasa run --ssl-certificate myssl.crt --ssl-keyfile myssl.key --ssl-password mypassword

安全考虑

我们建议你不要对外公开Rasa服务,而是通过私有连接从后端连接它(例如使用docker容器)。

不过,Rasa服务内置了两种安全验证方法:

基于令牌的验证:

启动服务时使用参数--auth-token thisismysecret指定令牌:

rasa run \

    -m models \

    --enable-api \

    --log-file out.log \

    --auth-token thisismysecret

 

在请求时应该携带该令牌作为参数,这个例子中令牌是thisismysecret

 

$ curl -XGET localhost:5005/conversations/default/tracker?token=thisismysecret

基于JWT的验证

使用--jwt-secret thisismysecret开启JWT验证。请求时头信息Authorization中需要携带有效的JWT令牌,令牌使用HS256算法进行加密签名。

用户必须有username和role属性。如果role的值是admin则可以访问所有节点。如果role的值是user,只有用户请求携带的username的值能够匹配到节点中的sender_id才能访问。

rasa run \

    -m models \

    --enable-api \

    --log-file out.log \

    --jwt-secret thisismysecret

 

你应该正确设置JWT头信息:

"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ"

                 "zdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIi"

                 "wiaWF0IjoxNTE2MjM5MDIyfQ.qdrr2_a7Sd80gmCWjnDomO"

                 "Gl8eZFVfKXA6jhncgRn-I"

 

节点配置

要将Rasa连接到其他端点,可以在YAML文件中指定节点配置。Rasa运行时携带标志

--endpoints <path to endpoint configuration.yml>.

例如:

rasa run \

    --m <Rasa model> \

    --endpoints <path to endpoint configuration>.yml

 

注意

可以在配置文件中使用环境变量,方法是使用${name of environment variable}指定它们。这些占位符随后被环境变量的值替换。

连接跟踪器存储

在节点配置中配置跟踪存储,请参阅Tracker Stores

连接事件代理

在节点配置中配置事件代理,请参阅 Event Brokers

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值