You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python版Bot Framework SDK从QnA Maker获取排名前5的答案

你当前使用的QnA Maker SDK的get_answers接口返回的response本身就是按匹配置信度从高到低排序的问答对列表,每个元素包含问题、答案、匹配分数、来源等完整信息,原有代码仅取了列表第一个元素返回,可按如下方式调整代码获取完整的高匹配问答对列表:

async def on_message_activity(self, turn_context: TurnContext):
    # 调用QnA Maker服务获取匹配结果,结果默认按匹配度从高到低排序
    response = await self.qna_maker.get_answers(turn_context)
    if response:
        # 构造匹配度最高的问答对列表输出内容
        result_text = "匹配度最高的问答对列表如下:\n"
        for index, qna_result in enumerate(response, start=1):
            # 可按需提取字段:questions是匹配的问题列表,answer是对应答案,score是置信度分数
            result_text += f"\n{index}. 匹配问题:{qna_result.questions[0]}\n   答案:{qna_result.answer}\n   匹配置信度:{round(qna_result.score * 100, 2)}%\n"
        await turn_context.send_activity(MessageFactory.text(result_text))
    else:
        await turn_context.send_activity("未找到匹配的QnA Maker问答结果。")

补充说明:

  • 如果你只需要Top N个最高匹配的结果,可以在遍历前对response做切片,比如取前3个就写for qna_result in response[:3]:
  • 每个返回结果的常用字段包括questions(匹配的标准问题集合)、answer(对应答案)、score(0-1区间的置信度分数,数值越高匹配度越高)、metadata(你在知识库配置的自定义元数据),可按需提取使用。

内容的提问来源于stack exchange,提问作者Герман Крауклит

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 12:27:10