如何让 api.ai 代理动态学习?

Posted

技术标签:

【中文标题】如何让 api.ai 代理动态学习?【英文标题】:How to make api.ai agent learn something dynamically? 【发布时间】:2016-05-18 18:52:08 【问题描述】:

我目前正在使用 api.ai 来创建代理来执行特定任务,但我没有回答的一个问题是,我可以让它在聊天时学习一些东西吗?意味着我说 我的名字是'John Cena' 她应该存储它,然后每当我再次问她时,机器人应该回答我。我知道有一种方法可以通过登录 api.ai 网络并手动添加条目来做到这一点,但这无济于事,是否有任何以编程方式或自动解决的方法?我一直用来练习的文件在github 中给出。这里正在工作DEMO

【问题讨论】:

【参考方案1】:

要存储和调用用户名,您需要设置一个具有一些基本数据持久性功能的 webhook。任何数据库或键值存储都可以正常工作。

以下是细分:

    为捕获用户姓名的意图实现 webhook 实现。 Webhook 应该存储名称以及一个唯一的标识 ID,您应该在 sessionId 或调用 /query 时作为上下文参数从前端提供该 ID。 为读取用户名的意图实现 webhook 实现。 Webhook 应按 ID 查找名称并返回一个响应,告诉用户他们的名字。

用于编写实现 webhook 的高级文档在这里:

https://docs.api.ai/docs/webhook

【讨论】:

【参考方案2】:

您的机器人基本上需要“学习”事实。有许多不同的方法可以实现这一点,但最近最常见的方法是将知识安排到语义“三元组”中,并将知识存储到 Graph 存储库中(如 Neo4j、Titan、Spark Graph 等)。在您的示例中,“我的名字是 John Cena”将翻译成三重像(“anubava”、“Name”、“John Cena”)。这样,下次您以 anubhava 身份登录并询问“我叫什么名字?”时,它会转化为返回“John Cena”的图形搜索。需要注意的是,实现这一点并非易事,需要进行大量微调。更多信息,您可以查看here和here。

最后,最完整的解决方案(据我所知)是服务器端解决方案。如果您希望整个知识库驻留在您的移动设备中,您可能会使用那里的资源作为灵感,并使用嵌入式数据库构建您自己的关联数据存储库。

希望这会有所帮助。祝你好运。

【讨论】:

以上是关于如何让 api.ai 代理动态学习?的主要内容,如果未能解决你的问题,请参考以下文章

静态代理和动态代理的区别

Java学习:动态代理的一点小理解

Java进阶学习第24天——动态代理与类加载器

mybatis源码学习:基于动态代理实现查询全过程

Java动态代理学习Spring AOP基础之一

JDK动态代理-超详细源码分析