【发布时间】:2020-04-03 01:50:35
【问题描述】:
对于我当前的项目,我尝试使用仅限上下文的后续提示。
在 qna ui 中,上下文的分离工作正常,但是当用户从我在应用程序中实现的聊天中回答问题时,qna 返回错误的答案。
代码: 机器人生成器版本:4.5.3 NodeJS:12.10.0
onMessage(){.....
let results = qna.getAnswer(context);
if(results[0].context.prompts.length){ // Answer with Follow-up
return context.sendActivity(CardHelper.GetHeroCard(results[0].answer, results[0].context.prompts))
}else{ // normal answer
return context.sendActivity(results[0].answer)
}
}
Sample Questions:
Expected Answer:
I want to learn programming => java => here is our guide
Real Answer:
I want to learn programming => java => that is the java test
Expected Answer:
I want to do a test => java => that is the java test
Real Answer:
I want to do a test => java => that is the java test
如何在代码中实现这些后续提示,又不丢失后续上下文?
【问题讨论】:
-
对于您的第一个问题,您是说“Java”是多个根本问题的后续问题,并且您想根据上下文对该问题给出不同的答案吗?当用户在问题 1 后说“Java”时,API 会返回问题 2 的 Java 答案,反之亦然?
-
我在我的问题中添加了一些示例,希望对您有所帮助 :) tltr:后续的“java”总是返回相同的答案
-
好的,这澄清了第一个问题,但是“此外,我还想根据代码中的数据回答一些后续问题”是什么意思?您是说要在机器人代码中动态生成一些答案吗?您想使用 Dispatch 将 QnA 知识库问题与代码数据问题区分开来,还是希望机器人知道它需要根据从 QnA Maker 收到的答案从代码数据中生成答案?你能举个例子吗?您想在这篇文章中解决这两个问题,还是想为第二个问题再发一篇文章?
-
我的想法是我在 Userprofile 中保存 QuestionContext 之类的“Java”,并使用这些信息将答案返回给 qna,而无需再次询问用户。但这首先是不相关的,所以它可能会从我的问题中删除这部分。
-
明确地说,您使用的是 botbuilder-ai 包中的
QnAMaker.getAnswers方法,对吧?
标签: javascript node.js azure botframework qnamaker