如何让 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 代理动态学习?的主要内容,如果未能解决你的问题,请参考以下文章