在网络研讨会中,它提到了使用多个会话工作区来处理项目的不同主题(例如,功能对话与非主题)。我们该如何实施这个设计?
假设我们有两个工作区,一个是功能主题,另一个是偏离主题。如何确定请求所涉及的工作空间的逻辑?
此确定逻辑应该在服务器后端还是在工作区逻辑中实现?
感谢。
答案 0 :(得分:0)
您可以使用要分类的内容创建第一组意图。其中一个意图应该是“Offtopic”,并举行所有非主题问题。
第二个工作区只是您的主题,但分为相关主题。
当您拨打电话并获得Offtopic时,请拨打第二个工作区。它应该返回off主题的性质,因此您可以对其采取行动。
您必须测试/调整主要意图集,以便它不会干扰主题内容。例如,如果谈话涉及销售体育用品,那么关于体育运动的主题可能会很棘手。
您可能需要考虑该点的置信度。
答案 1 :(得分:0)
我和我目前正在尝试的另一种方法是拥有主路由工作区和可能的多个应用程序工作区。在第一个实例中,用户的输入转到主设备,主设备具有高级意图,用于确定要路由到哪个应用工作空间。应用程序工作区具有更多细节的意图。
然后,微妙的是将所有后续输入并行发送到选定的应用工作区和主路由器。这相对于前面描述的顺序方法的潜在优势在于主工作空间可以摔跤控制而不是必须通过偏离主题或低置信度放弃它。这意味着除了允许集中偏离主题之外,您还可以使用主服务器中与初始路由相同的意图来动态路由到其他工作空间。
我已经通过让业务流程层将会话管理为像这样的上下文数组来完成此任务
{
currentWs: xxxx,
contexts: {
ws_idn: {}, // basically an array of conversation contexts,
.... // keyed on workspace_id's
}
}
输入被发送到主工作空间以及主服务器标记为当前的任何工作空间(以及该工作空间的相关上下文对象)。您可以在多个聊天机器人应用程序之间无缝切换,而不会丢失其中任何一个的上下文。