这是我的首次发帖。我是一名聊机对话设计师/数字战略家,工作在国际发展领域,我的客户希望在他们的Android周期跟踪应用程序中加入一个聊机。该应用程序是为低连通性地区的用户设计的,这些用户的数据访问有限,因此需要离线功能。最初,它只允许用户与一个头像聊天,并获取各种教育话题的信息,但我们以后可能会更有创意地使用它。
我了解到在应用程序内完全离线运行聊机在技术上是可行的(对吗?),但我想更多地了解实施这样一个系统的限制/缺点。我认为最明显的一个是应用程序需要支持这个功能的大小,这肯定会导致用户在使用劣质Android手机时删除应用程序,而我们的许多用户都会使用这种手机。
还有什么?任何建议都将不胜感激!
谢谢。
回答:
在不依赖任何云服务的情况下离线运行聊机是完全可行的。应用程序需要建立以下内容。
为了简洁起见,我使用在线聊机来指基于在线服务的聊机应用程序。使用离线聊机来指基于离线或设备内聊机开发平台的聊机应用程序。
要求
- 知识库(包含
意图
、实体
和上下文
)必须存储在应用程序内。实体
会(尽管可能只有几千字节)增加应用程序的大小。例如,如果你的聊机需要识别国家名称,你需要在聊机的知识库中存储所有国家的名称。 - 自然语言领域特定信息,如词典、同义词词典和额外的词汇信息。这些信息在生成模型后可能不会传递到你的部署/发布的应用程序中。
- 由应用程序生成的语言模型将驻留在应用程序包中。这将是影响应用程序大小的主要因素。
在线
低带宽数据连接不应该成为太大的问题,因为与以下服务通信的开销并不高:
上述服务通过小型JSON数据交换直接启用API。你可以通过查看它们的API和返回的数据来检查多少开销对你来说是过多的开销。
优点和缺点
- 在线聊机可以享受远程更新其知识库
- 你的在线聊机数据不安全,因为用户所说/输入的任何内容都会被发送到第三方服务以生成响应。
- 你的聊机的响应速度取决于你使用的在线服务的性能。通常在正常网络上不应该有问题。
- 当未连接到互联网时,你的应用程序将毫无用处。
离线或设备内
如果你正在设计一个完全离线的聊机,你将需要依赖那些设计来实现上述功能的框架或平台。
- OSCOVA – 我个人使用过的设备内聊机开发平台,用于在Xamarin中创建一个用于一般客户查询的Android聊机。
- SIML – 基于XML的知识库创作语言,具有机器学习功能。
- BotSharp – SciSharp的聊机开发平台
- Xatkit – 基于Java的聊机创建平台。
优点和缺点
- 你的离线聊机应用程序在你希望添加更多知识库内容时需要新的包更新(在应用商店或Play商店)。也许你可以在连接到互联网时直接向应用程序发送知识库。
- 与使用在线服务的聊机相比,你的离线聊机的大小会稍微大一些。
- 你的聊机始终可用,因为它不需要互联网来执行任务或回应用户。
- 与聊机的对话极其安全,因为数据不会像在线聊机那样共享给第三方服务。