首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能让wit.ai机器人记住/重用跨故事的上下文?

是否有可能让wit.ai机器人记住/重用跨故事的上下文?
EN

Stack Overflow用户
提问于 2016-08-20 01:47:14
回答 1查看 1.5K关注 0票数 3

我正在使用Wit.ai创建一个聊天机器人,并试图实现一种更具有会话风格的交互方式。目前,我有几个故事,都需要一个位置才能发挥作用,但有些相关。下面是我现在如何与我的机器人交互的一个例子:

代码语言:javascript
复制
What is the weather in Los Angeles, CA?
Bot response
How many people live in Los Angeles, CA? 
Bot response

但是我想让我的聊天机器人记住我说的是洛杉矶,所以互动看起来是这样的:

代码语言:javascript
复制
What is the weather in Los Angeles, CA?
Bot Response
How many people live there? 
Bot Response

尽管有两个不同的故事正在被执行。目前,我能够通过添加一个额外的函数(使用合并的方式使用该函数)和代码中的一个单例来完成这一任务,该代码从实体中提取值,并根据以下会话信息存储它们供以后使用:

代码语言:javascript
复制
session_info = {}


def _init_store(session_id):

    global session_info
    print "session info", session_info
    if session_id in session_info:
        pass
    else:
        s_info = {}
        session_info[session_id] = s_info


def get_stored_info(session_id, key):

    global session_info
    try:
        return session_info[session_id][key]
    except:
        return None


def add_stored_info(session_id, key, data):
    _init_store(session_id)
    global session_info
    try:
        session_info[session_id][key] = data
        return True
    except:
        return False

我读过所有的文档,对他们说的话有点困惑。医生们说这是关于上下文的:

相反,你可以建立对话应用程序。它允许您根据当前上下文和用户查询来预测您的应用程序在会话中的任何给定状态下应该做什么。 上下文是一个可以告诉Wit.ai会话当前状态的对象。Wit.ai能够通过将故事中描述的上下文与发送到/converse端点的上下文进行比较来预测机器人应该采取的下一个操作。Wit永远不会自动更新上下文,您必须管理您的上下文对象。每个会话通常有一个上下文对象。除了帮助Wit.ai预测下一个操作之外,上下文还用于在模板中创建动态答案。

我读到这意味着,wit将传递给我所管理的上下文对象,而不对其进行任何更改,这意味着我负责添加和删除它中的键。然而,我也发现了,它指出“会话感知的实体提取”还没有实现,所以我对这是否可行感到非常困惑。

我还发现,当我查看传递给我的每个故事执行函数的request['context']的值时,上下文的值只是一个空字典,不管之前添加或删除了什么,尽管它上面说你的上下文从未被智慧所触及。

这是有可能的,在智慧本身,或有一个智慧认可的方式来实现这一点,或是我现在所能做的最好的?如果我不得不猜测,它看起来似乎还不受支持,但它似乎是这样一个基本的聊天机器人功能和文档是足够模糊的,我也可以忽略正确的方式来做这件事。任何帮助都将不胜感激。我正在使用python,以防与任何人相关。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-06 04:09:42

它应该像你描述的那样起作用。是的,Wit不会更新上下文,所以如果您想保留/记住一些东西,那么您必须使用客户端操作来将其存储在上下文中。在您的示例中,您将在上下文键中存储实体wit/location的值,比如loc

在您的“有多少人住在那里?”故事中,您将有一个客户端操作,检查是否存在context.loc,如果不存在,将通过分支机构https://wit.ai/docs/recipes#build-a-slot-based-bot食谱来要求它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39049703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档