我正在尝试开发一个天气机器人并且遇到了一些问题。
有什么见解?难道我做错了什么?我错过了什么?非常感谢你的帮助!
答案 0 :(得分:8)
我感到痛苦:)
你必须根据用户输入“强迫”wit.ai进入正确的故事,如果你需要用户跟踪故事直到最后 - 你将不得不在对话链中“强迫”他们。
我的意思是:
如果用户说What's the weather
,您可以使用名称wth
引入另一个自定义实体,并在“理解”标签中将其设为关键字,并添加与weather
字相关的严格关键字列表(预测...)。
这可能是你的“指导思路”。当此实体出现时=用户已使用与天气问题相关联的关键字=您可以使用该实体wth
作为故事的每个操作和响应的要求(“操作”选项卡)。
在我的一些应用程序中 - 对于每个故事我都想到“这个故事在做什么” - 什么是切入点,所以说并想出一个实体,通过使用Actions引导用户走下对话路径选项卡并设置Only if
... Always if
...对回复和操作的要求。
这种方法非常严格,但它可以让您对用户从“机器人”收到的内容进行一定程度的控制,以便您可以预测操作和回复。
我正在玩另一种方法,你有很多故事,它们都是“不完整的”,但它们试图涵盖用户可能的不同答案。所以用户开始在一个故事中聊天,然后根据他的回答 - 另一个故事开始,然后是另一个,然后是另一个...
这也是一种有效,更灵活的方法,但它需要非常好地规划“机器人回复”\故事,以便他们以合乎逻辑的对话方式感受到联系。是的,它还需要仔细的上下文管理,因为如果每个故事都会添加上下文 - 它可能会成为一大堆实体和值,所以你需要认为故事A将实体A1添加到上下文中,但是如果以后故事B启动并将B1实体添加到上下文然后我需要删除A1,因为它们是冲突的...
总结一下:看起来你想要更多控制并知道对话的去向。为此 - 尝试“操作”选项卡并设置答案和操作的要求。你可以非常直接地指导它。
答案 1 :(得分:2)
我想在这里澄清一个重要的概念。上下文你的。 Wit只读取它以预测下一步或通过变量生成Bot答案。我们永远不会更新我们这方面的背景。
您可以在旁边使用操作来更新上下文中的键。这些键可以反过来影响基于故事的预测。 Wit使用当前上下文(目前仅为密钥),上下文的状态(在交互N-1,N-2 ......)以及用户消息(特征实体)来预测下一个动作。
此处的其他信息:https://wit.ai/docs/recipes#manage-context-and-session-id