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

如何通过QnA Maker API v4.0正确更新现有知识库?

问题分析与解决方案

看起来你的知识库更新请求虽然返回了成功状态,但实际未生效,大概率是以下几个原因导致的,我们来逐一排查并给出正确的操作方式:

1. 确认QnA对的ID是否正确

你在请求中指定的id: 1很可能不是目标QnA对的真实ID。QnA Maker中每个QnA对的ID是系统自动生成的唯一标识,并非从1开始的连续数字。你需要先通过获取知识库详情API获取目标QnA对的正确ID,再在更新请求中使用这个ID。

2. 理解API的更新逻辑:替换而非追加

QnA Maker的Update API对questions和metadata字段采用完全替换逻辑,而非追加。如果你只想添加新的备选问题或元数据,不能直接只提交新内容,需要:

  • 先调用获取知识库详情API,拿到该QnA对当前的questions和metadata列表
  • 将新的备选问题添加到原questions数组中,将新的元数据条目添加到原metadata数组中
  • 把合并后的数组作为更新请求的字段值提交

3. 检查请求JSON的格式正确性

仔细看你提供的请求负载,末尾多了一个多余的闭合括号(可能是复制时的笔误),格式错误可能导致API静默失败。修正后的正确JSON结构应该是:

{ 
  "add": { }, 
  "delete": { }, 
  "update": { 
    "qnaList": [ 
      { 
        "id": 1, 
        "answer": "Answer", 
        "source": "link_to_source", 
        "questions": [ "Question 1?", "Question 2?" ], 
        "metadata": [ 
          { "name": "oldMetadata", "value": "oldMetadata" }, 
          { "name": "newlyAddedMetaData", "value": "newlyAddedMetaData" } 
        ] 
      }
    ]
  } 
}

正确的更新步骤示例

假设你已获取到目标QnA对的正确ID为123,原QnA对的questions是["Question 1?"],metadata是[{ "name": "oldMetadata", "value": "oldMetadata" }],现在要添加备选问题"Question 2?"和新元数据{ "name": "newlyAddedMetaData", "value": "newlyAddedMetaData" },正确的请求负载如下:

{
  "add": {},
  "delete": {},
  "update": {
    "qnaList": [
      {
        "id": 123,
        "questions": ["Question 1?", "Question 2?"],
        "metadata": [
          { "name": "oldMetadata", "value": "oldMetadata" },
          { "name": "newlyAddedMetaData", "value": "newlyAddedMetaData" }
        ]
      }
    ]
  }
}

提示:如果不想修改answer或source字段,可以不用在请求中包含它们,API会保留原来的值。

提交请求后,再次调用获取操作详情API确认状态为Succeeded,最后通过获取知识库详情API验证QnA对的内容是否已更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:20:48