运行 完全离线的聊天机器人有哪些限制?

What are the restrictions of running a completely offline chatbot?

首先post。 我是国际发展部门的聊天机器人对话 designer/digital 策略师,我的客户有兴趣在他们的 Android period-tracker 应用程序中安装聊天机器人。该应用程序专为低连接性地区的用户设计,他们对数据的访问较少,因此需要离线。最初它只会允许用户与头像聊天并获取有关各种教育主题的信息,但我们可能希望在未来更有创意地使用它。

我发现拥有一个在应用程序中完全脱机运行的聊天机器人在技术上是可行的(对吗?),但我想更多地了解 restrictions/downsides 实现类似的东西。对我来说最明显的是我想象应用程序需要的大小才能支持这个,当你使用糟糕的 Android phone 时,这是一个让你的应用程序被删除的可靠方法我们的用户将是。

还有什么?任何建议表示赞赏!

谢谢。

运行 不依赖任何基于云的服务的离线机器人是完全可行的。该应用程序需要建立以下内容。

为简洁起见,我使用 Online Bot 来指代基于在线服务的机器人应用程序。 离线机器人 用于基于离线或设备上机器人开发平台的机器人应用程序。

要求

  • 知识库(包含 IntentsEntitiesContexts)必须保存在应用程序中。 Entities 有助于(虽然可能以千字节为单位)您的应用程序大小。例如,如果您的机器人要识别国家/地区名称,您需要将所有国家/地区名称存储在机器人的知识库中。
  • 自然语言特定领域的信息,如词典、词库和附加词信息。 生成模型后,这些可能不会传递到您的 deployment/published 应用程序
  • 应用程序生成的
  • 语言模型 将驻留在应用程序包中。 这将是您的应用程序规模中的主要角色

在线

低带宽数据连接应该不是什么大问题,因为与以下服务通信的开销并不高:

上述服务直接通过小型 JSON 数据交换启用 API。您可以通过查看他们的 API 和返回的数据来检查多少开销对您来说是太多的开销。

优缺点

  • 在线机器人会喜欢远程更新他们的知识库
  • 您的在线机器人数据不安全,因为您的用户 say/type 会通过第三方服务生成响应。
  • 您的机器人的响应速度取决于您使用的在线服务的性能。通常在普通网络上应该不是问题。
  • 您的应用程序在未连接到互联网时毫无用处。

离线或在设备上

如果您要设计完全离线的机器人,则需要依赖旨在实现上述功能的框架或平台。

  • OSCOVA - 我个人用来创建 Android 机器人的设备上机器人开发平台,用于 Xamarin 中的一般客户查询。
  • SIML - 一种基于 XML 的知识库创作语言,具有机器学习功能。
  • BotSharp - SciSharp 的机器人开发平台
  • Xatkit - Java 基于聊天机器人的创建平台。

优缺点

  • 每当您希望向其知识库 (KB) 添加更多内容时,您的离线机器人应用都需要更新包(在 App Store 或 Play Store 中)。 也许您可以在连接在线时直接向应用程序发送 KB。
  • 与使用在线服务的机器人相比,您的离线机器人尺寸会更大一些。
  • 您的机器人始终在线,因为它不需要互联网来执行任务或响应用户。
  • 与您的机器人对话非常安全,因为数据不会像在线机器人那样共享给第三方服务。