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

如何在Virtual Assistant模板中启用QnA Follow-Up Prompts并解决显示问题?

How to Enable QnA Maker Follow-Up Prompts in Virtual Assistant

我之前也碰到过这个问题——Virtual Assistant模板默认并没有处理QnA Maker返回的Follow-Up Prompts,所以才会出现本地/WebChat里不显示,但纯QnA Bot正常的情况。不过咱们可以通过自定义QnA的响应处理逻辑来启用这个功能,具体操作步骤如下:

1. 定位QnA处理的核心代码

首先找到你项目中负责处理QnA查询的代码文件,通常是在Dialogs/QnADialog.cs(C#项目)或者对应的Python/JS路径下。这个文件里包含了调用QnA Maker API并返回结果的核心逻辑。

2. 扩展响应处理逻辑,提取并展示Follow-Up Prompts

在获取QnA返回结果后,我们需要从结果中提取Follow-Up Prompts,然后把它转换成用户能看到的交互元素(比如建议按钮或者文本提示)。

示例(C#):用建议按钮展示Prompt

var qnaResults = await _qnaMaker.GetAnswersAsync(turnContext);
if (qnaResults.Any())
{
    // 基础回答内容
    var reply = MessageFactory.Text(qnaResults.First().Answer);
    
    // 提取Follow-Up Prompts
    var followUpPrompts = qnaResults.First().Context?.Prompts;
    if (followUpPrompts != null && followUpPrompts.Any())
    {
        // 将Prompt转为建议操作按钮
        reply.SuggestedActions = new SuggestedActions()
        {
            Actions = followUpPrompts.Select(p => 
                new CardAction(ActionTypes.ImBack, p.DisplayText, value: p.DisplayText)
            ).ToList()
        };
    }
    
    await turnContext.SendActivityAsync(reply, cancellationToken);
}

示例:用文本列表展示Prompt

如果你更倾向于用文本列表展示而不是按钮,也可以改成这样:

var qnaResults = await _qnaMaker.GetAnswersAsync(turnContext);
if (qnaResults.Any())
{
    var answerContent = qnaResults.First().Answer;
    var followUpPrompts = qnaResults.First().Context?.Prompts;
    
    // 追加Follow-Up Prompts到回答文本
    if (followUpPrompts != null && followUpPrompts.Any())
    {
        answerContent += "\n\n你可能还想问:\n";
        answerContent += string.Join("\n- ", followUpPrompts.Select(p => p.DisplayText));
    }
    
    await turnContext.SendActivityAsync(MessageFactory.Text(answerContent), cancellationToken);
}

3. 确保QnA API请求包含上下文参数

检查你的QnA调用代码,确保在调用GetAnswersAsync时传递了正确的选项,让QnA Maker返回包含Follow-Up Prompts的上下文信息。比如可以配置QnAMakerOptions:

var options = new QnAMakerOptions
{
    Top = 1,
    Context = new QnARequestContext { PreviousQnAId = 0 } // 根据对话上下文传递对应ID
};
var qnaResults = await _qnaMaker.GetAnswersAsync(turnContext, options);

4. 验证WebChat渲染

如果用的是WebChat组件,确保它支持渲染SuggestedActions(建议按钮)——大部分现代WebChat版本都支持,但如果是旧版本可能需要调整样式或升级组件。

这样修改后,当你的Virtual Assistant调用QnA Maker获取结果时,就会自动把Follow-Up Prompts展示给用户了。

内容的提问来源于stack exchange,提问作者samueljohnpaul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:16:04