【发布时间】:2019-04-08 15:33:13
【问题描述】:
我在我的 Bot Framework 中使用 QnAMaker REST API 来查询知识库。
它工作正常,但我想根据requestData 中指定的“来源”过滤“问题”。参考文档-https://docs.microsoft.com/en-us/azure/cognitive-services/qnamaker/how-to/metadata-generateanswer-usage 我没有看到任何选项可以做到这一点。文档指出“来源”只是响应答案的一部分,而不是请求的一部分。
我尝试将“源”作为元数据传递给strictFilters。
Dictionary<string, object> requestData = new Dictionary<string, object>
{
["question"] = question,
["top"] = top,
["strictFilters"] = new Dictionary<string, object>
{
["source"] = "test.tsv"
}
};
string requestBody = JsonConvert.SerializeObject(requestData);
kbId = _configuration[qnaKbName];
method = "/knowledgebases/" + kbId + "/generateAnswer/";
var uri = host + method;
var response = await Post(uri, requestBody);
return response;
请求 JSON 格式-
{"question":"flexible working","top":5,"strictFilters":{"source":"test.tsv"}}
它不起作用,我得到以下响应-
{
"error": {
"code": "BadArgument",
"message": "Parameter is null"
}
}
尝试像这样创建请求 JSON-
{"question":"sabbatical","top":5,"strictFilters":[{"name":"source","value":"test.tsv"}]}
得到以下响应-
{
"error": {
"code": "Unspecified",
"message": "Something happened. Please retry after some time."
}
}
有没有办法做到这一点?如果我可以提供更多详细信息,请告诉我..
【问题讨论】:
-
你不能简单地过滤你得到的结果,因为它们包含
source字段吗?因为你尝试使用过滤器但这些过滤器值必须在元数据中指定,目前还没有完成 -
@NicolasR Here-github.com/MicrosoftDocs/azure-docs/issues/14778 他们说我们可以。如果我们得到很大的过滤响应,过滤结果也很麻烦并且性能成本很高。
-
正如他们在 Github 的帖子中所说的那样,
source不是元数据中的信息:“源不是元数据。我们将明确添加为元数据的元数据视为名称:值对。” -
@NicolasR 是的,我正在与他们联系。
-
因此,如果您想使用这些过滤器,请确保首先添加元数据。那么它应该可以工作
标签: c# botframework azure-cognitive-services qnamaker