我有一个使用.NET,MS Bot Framework和LUIS.ai的智能机器人。

很好,只不过我需要为非技术用户提供一种方法来训练机器人并教它新东西,即LUIS.ai中的新意图。

换句话说,假设现在该机器人可以用包含说明的简单短语来回答诸如“嘿机器人我可以在哪里喝咖啡”和“我可以在哪里买衣服”之类的消息。非技术用户也需要能够对其进行培训,以回答“我在哪里可以得到食物”。

这是我考虑过的:

  • 继续使用LUIS.ai。不起作用,因为LUIS.ai没有API。它最好的功能是可以改善现有意图的GUI和上载应用程序/短语列表功能。如果可以通过我编写的某些应用程序生成带有该应用程序的JSON文件,则该过程可以是半自动化的。但是,仍然需要处理新意图的后端代码,并且必须由C#编码器来实现。

  • Azure Bot服务。似乎它没有非技术性的界面,而只是一个基于浏览器的IDE。
  • 完全抛弃Bot Framework,并使用诸如motion.ai之类的第三方工具。无效,因为LUIS.ai没有提供“智力”。
  • 使用Bot Framework中的Form Flow。如果我的GUI机器人构建器应用程序可以生成JSON文件,则Bot Framework可以使用这些文件来自动构建机器人。不起作用,因为LUIS.ai中没有智力。
  • 继续使用Bot Framework,但放弃LUIS并基于用于确定意图的node.js语言处理库构建一个单独的Web服务。可能工作或可能不工作,可能不如LUIS聪明,并且可能是一个过大的杀手。
  • 覆盖LuisDialog中的方法,该方法从LuisResponse中选择意图,以便使用我自己的方式来确定意图(但是如何?)。

  • 在这一点上,我没有想法,任何指针将不胜感激。

    最佳答案

    首先,LUIS.ai提供了一个API,您可以使用它自动执行培训。而且,here是Luis Trainer完全用Python编写的,而API正是这样做的。

    最简单的一种可能是您在#1中描述的一种:您可以使培训自动化(如上所述),但是如果提供了新的意图,您仍然必须部署新版本的bot。一件事是让用户使用新的语言来训练现有模型,另一件事是让他们创建模型:完全不同的另一件事是:)

    可能很难跳过不得不编写后端代码的情况(我根本不会自动做到这一点)

    这是一个潜在的想法(虽然不确定是否会起作用)。您将需要2个Luis模型。

  • 使用您当前的模型,用户将能够使用新的语音进行训练。
  • 第二种模型是专门用于由用户使用新意图“扩展”的模型。

  • 如果以这种方式分开,则可以查看第二个LUIS模型的“插件”体系结构。因此,您的应用程序会以某种方式动态加载第二个模型所在的程序集。

    设置好之后,您就可以专注于为第二个Luis模型编写后端代码,而不必担心bot/第一个模型。您应该能够用第二个Luis模型替换该程序集,并能够在bot中检测该程序集是否有新版本,并在应用程序域中替换当前的程序集。

    正如我所说,这只是我与您集思广益时的一个想法。听起来有点复杂,但并不能解决您的所有问题;因为您仍然需要编写代码(在任何情况下,最终都必须这样做)

    关于botframework - 为LUIS.AI创建API或使用.JSON文件,以便为非技术用户培训机器人,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40990171/

    10-12 21:18