gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 18:28:57 26 4
gpt4 key购买 nike

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

What is the weather in Los Angeles, CA?
Bot response
How many people live in Los Angeles, CA?
Bot response

但我希望我的聊天机器人记住我说的是洛杉矶,所以交互看起来像这样:

What is the weather in Los Angeles, CA?
Bot Response
How many people live there?
Bot Response

即使正在执行 2 个不同的故事。目前我能够通过添加一个额外的函数(我使用它的方式与使用合并的方式相同)和一个单例到我的代码来实现这一点,它从实体中提取值并存储它们以供以后根据 session 信息使用,如下所示:

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

我通读了所有文档,对他们所说的有些困惑。文档对上下文这样说:

Converse allows you to build conversational app. It allows you to predict what your app should do at any given state in the conversation based on the current context and the user query.

The context is an object you manage to tell Wit.ai about the current state of the conversation. Wit.ai is able to predict the next action your bot should take by comparing — among other things — the context described in your Stories with the one you send to the the /converse endpoint. Wit will never update the context by itself, you have to manage the context object on your side. There is usually one context object per session. In addition to helping Wit.ai predict the next action, the context is used to create dynamic answers in templates.

我读这意味着机智将传递我管理的上下文对象而不对其进行任何更改,这意味着我负责添加和删除 key 。不过我也发现了this其中指出“对话感知实体提取”尚未实现,所以我很困惑这是否可行。

我还发现,当我查看传递到我的每个故事执行函数的 request['context'] 的值时,context 的值只是一个空字典,无论之前添加或删除的内容,即使上面说您的上下文从未被机智触及。

这是否有可能通过机智本身来实现,或者是否有机智认可的方法来实现这一点,或者我现在正在做的是我能做的最好的事情吗?如果我不得不猜测它似乎还不受支持,但它似乎是一个基本的聊天机器人功能,而且文档非常模糊,我也可能只是忽略了执行此操作的正确方法。任何帮助将不胜感激。我正在使用 python 以防与任何人相关。

最佳答案

它应该按照您描述的方式工作。是的,Wit 不会更新上下文,所以如果您想保留/记住一些东西以备后用,您将不得不使用客户端操作将其存储在上下文中。在您的示例中,您将实体机智/位置的值存储在上下文键中,比方说 loc

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

关于python - 是否有可能让 wit.ai 机器人记住/重用故事中的上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39049703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com