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

如何在Azure Bot Service中实现英法双语QnAMaker分语言模式处理

当然可以实现!这里给你两种靠谱的解决方案

核心思路就是让机器人根据当前选中的语言模式,只检索对应语言的问答内容,从根源上避免混合展示的问题。

方案一:给QnAMaker问答对添加语言标签,调用时过滤

  1. 先给QnAMaker里的每一组问答打上语言标签:
    • 所有英文问答对添加标签 Language: en
    • 所有法文问答对添加标签 Language: fr
      (在QnAMaker门户编辑问答对时,找到「元数据」选项就能添加)
  2. 在机器人的对话逻辑里,记录用户当前选择的语言模式(比如存在对话状态state里,用userLanguage: 'en'或'fr'标识)
  3. 调用QnAMaker接口时,添加严格过滤条件,只返回对应语言标签的结果。举个Node.js的代码示例:
    // 从对话状态获取当前用户选择的语言
    const currentLang = turnContext.activity.state.userLanguage;
    
    // 调用QnAMaker时传入过滤参数
    const qnaResults = await qnaMaker.getAnswers(turnContext, {
      strictFilters: [
        {
          name: 'Language',
          value: currentLang
        }
      ]
    });
    
    这样QnAMaker只会返回匹配当前语言的问答,自然不会出现混合的候选问题了。

方案二:创建两个独立的QnAMaker知识库

如果你的英法双语内容差异较大,或者不想折腾标签,更简单的方式是:

  • 单独创建一个纯英文知识库,只录入英文问答
  • 再创建一个纯法文知识库,只录入法文问答
  • 当用户切换语言模式时,机器人切换调用对应的知识库接口即可——比如英文模式调用英文知识库的endpoint,法语模式调用法语的。

这种方式更直观,维护起来也更清晰,尤其适合后续双语内容各自迭代的场景。

额外注意点

  • 确保语言切换按钮触发时,及时更新对话状态里的语言标识,避免后续调用时用错过滤条件/知识库
  • 测试时可以验证:比如切换到法语模式后输入英文问题,机器人应该返回法语的“未找到相关答案”提示,而不是混出英文候选

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:33:39