logo
开发者文档
搜索
立即同步知识库

立即同步知识库

可立即触发知识库的有源知识的增量同步,当前仅支持 Google Drive 来源。

注意:

接口在完成校验与规划后立即返回,因此返回的是“已受理”,而非“已更新”。

频率限制:每个 Agent / Workflow 每分钟最多 1 次。

请求方式

POST

调用地址

按 API Key 所属的资源类型选择对应路径。两个接口的请求参数、响应结构、限流规则完全一致。

  • Agent:

https://api-${endpoint}.gptbots.ai/v1/agent/knowledge-base/sync

  • Workflow:

https://api-${endpoint}.gptbots.ai/v1/workflow/knowledge-base/sync

下文的请求 / 响应说明对两个路径同时适用,示例以 Agent 路径书写。

调用验证

详情参见 API 概述的鉴权方式说明。

请求

请求示例

  • 同步指定知识库:
curl -X POST 'https://api-${endpoint}.gptbots.ai/v1/agent/knowledge-base/sync' \ -H 'Authorization: Bearer ${API Key}' \ -H 'Content-Type: application/json' \ -d '{ "source": "google-drive", "knowledge_base_ids": ["6a44c3512ceb43775567391c", "6a44c3512ceb43775567391d"] }'
                      
                      curl -X POST 'https://api-${endpoint}.gptbots.ai/v1/agent/knowledge-base/sync' \
-H 'Authorization: Bearer ${API Key}' \
-H 'Content-Type: application/json' \
-d '{
    "source": "google-drive",
    "knowledge_base_ids": ["6a44c3512ceb43775567391c", "6a44c3512ceb43775567391d"]
}'

                    
此代码块在浮窗中显示
  • 同步该 Agent 下全部知识库:
curl -X POST 'https://api-${endpoint}.gptbots.ai/v1/agent/knowledge-base/sync' \ -H 'Authorization: Bearer ${API Key}' \ -H 'Content-Type: application/json' \ -d '{ "source": "google-drive" }'
                      
                      curl -X POST 'https://api-${endpoint}.gptbots.ai/v1/agent/knowledge-base/sync' \
-H 'Authorization: Bearer ${API Key}' \
-H 'Content-Type: application/json' \
-d '{
    "source": "google-drive"
}'

                    
此代码块在浮窗中显示

请求头

字段 类型 描述
Authorization Bearer ${API Key} 使用 Authorization: Bearer ${API Key}进行调用验证,请在 API 密钥页面获取密钥作为 API Key。
Content-Type application/json 数据类型,取值为 application/json

请求参数

字段 类型 必填 说明
source String 来源类型。当前仅支持 google-drive,传其它值返回参数错误。
knowledge_base_ids Array<String> 目标知识库 ID 列表,最多 200 个,超出返回参数错误。不传、传 null 或传空数组表示该 Agent / Workflow 名下全部知识库。列表中不存在或不属于当前 Agent / Workflow 的 ID 不会导致整个请求失败,会出现在 skipped 中。

响应

响应示例

{ "code": 0, "message": "OK", "data": { "accepted": true, "source": "google-drive", "matched_knowledge_base_count": 2, "matched_doc_count": 37, "matched_folder_count": 3, "skipped": [ { "reason": "DRIVE_NOT_AUTHORIZED", "message": "The document owner has not authorized Google Drive, or the authorization has expired.", "knowledge_base_id": "6a44c3512ceb43775567391e", "doc_count": 8 }, { "reason": "KNOWLEDGE_BASE_NOT_FOUND", "message": "Knowledge base does not exist or does not belong to this agent.", "knowledge_base_id": "deadbeefdeadbeefdeadbeef" } ], "scheduled_round_running": false } }
                      
                      {
    "code": 0,
    "message": "OK",
    "data": {
        "accepted": true,
        "source": "google-drive",
        "matched_knowledge_base_count": 2,
        "matched_doc_count": 37,
        "matched_folder_count": 3,
        "skipped": [
            {
                "reason": "DRIVE_NOT_AUTHORIZED",
                "message": "The document owner has not authorized Google Drive, or the authorization has expired.",
                "knowledge_base_id": "6a44c3512ceb43775567391e",
                "doc_count": 8
            },
            {
                "reason": "KNOWLEDGE_BASE_NOT_FOUND",
                "message": "Knowledge base does not exist or does not belong to this agent.",
                "knowledge_base_id": "deadbeefdeadbeefdeadbeef"
            }
        ],
        "scheduled_round_running": false
    }
}

                    
此代码块在浮窗中显示

成功响应

字段 类型 说明
code Integer 返回码,0 表示成功。
message String 返回信息。
data Object 受理结果。
accepted Boolean 是否已受理。false 表示本次什么都没启动,原因见 skipped
source String 本次同步的来源类型。
matched_knowledge_base_count Integer 本次命中的知识库数量。
matched_doc_count Integer 本次将检查的知识文档数量。注意是“将检查”,而非“已更新”。
matched_folder_count Integer 本次将检查新增文件的文件夹来源数量。
skipped Array<Object> 被跳过的明细,按“知识库 + 原因”聚合,不逐文档展开。
reason String 跳过原因,取值见下表。
message String 原因说明。
knowledge_base_id String 受影响的知识库 ID。整体性原因(如余额不足)时不返回该字段。
doc_count Integer 受影响的文档数。按知识库整体跳过时不返回该字段。
scheduled_round_running Boolean 系统定时同步轮次当前是否正在执行。仅作告知,不影响本次受理。acceptedfalse 时本次未做该判定,返回 null

skipped[].reason 取值

取值 含义 处理建议
KNOWLEDGE_BASE_NOT_FOUND 知识库不存在,或不属于当前 API Key 绑定的 Agent / Workflow。 检查 knowledge_base_ids,可先调用“获取知识库列表”确认。
NO_GOOGLE_DRIVE_SOURCE 知识库存在,但其中没有任何来自 Google Drive 的文档。 正常情况,说明该知识库无需同步。
DRIVE_NOT_AUTHORIZED 文档所属成员没有可用的 Google Drive 授权(从未授权,或授权已失效)。 让该成员重新授权 Google Drive。
DOC_IN_PROGRESS 文档正在处理中。多为定时轮次或上一次同步尚未完成。 稍后重试,或等待处理完成。
DOC_NO_OWNER 文档缺少所属成员信息,无法确定使用谁的 Google Drive 授权。 需联系支持人员排查该文档。
INSUFFICIENT_BALANCE 组织余额不足。此时 acceptedfalse,不启动任何同步。 充值后重试。
SYNC_IN_PROGRESS 该 Agent / Workflow 上一次手动同步仍在执行。此时 acceptedfalse 等待上一次完成后重试。

失败响应

字段 类型 描述
code Integer 错误码。
message String 错误详情。

常见错误码:

HTTP code 场景
400 40000 source 缺失或不支持;knowledge_base_ids 超过 200 个;单次命中文档数超过 5000(需用 knowledge_base_ids 缩小范围)。
400 40001 触发过于频繁,超出接口限流。
401 40101 缺少 Authorization 请求头。
401 40127 API Key 无效。

source 非法时的响应示例:

{ "code": 40000, "message": "Unsupported source: sharepoint. Supported: google-drive" }
                      
                      {
    "code": 40000,
    "message": "Unsupported source: sharepoint. Supported: google-drive"
}

                    
此代码块在浮窗中显示

使用说明

返回的是“已受理”,不是“已完成”

接口在完成校验与规划后立即返回,真正的拉取、解析、向量化在后台异步执行。因此 matched_doc_count 是“本次将检查多少个文档”,而非“更新了多少个文档”。想确认最终结果,请轮询获取知识文档列表接口查看文档状态,文档状态变为 AVAILABLE 即表示该文档已同步完成。

只做增量,不会重复消耗额度

对每个文档,系统会先比对 Google Drive 上的最后修改时间:

  • 源文档未改动:跳过,不重新下载、不重新解析、不消耗额度。
  • 源文档已改动:重新拉取并重新解析、向量化。
  • 绑定的文件夹中有新文件:自动新增为知识文档。

因此重复调用本接口是安全的,未变更的内容不会产生额外费用。

本接口不能重试解析失败的文档

增量判断只看 Google Drive 上的源文档有没有变化,不看文档当前处于什么状态。

因此,一个此前解析失败(状态为 FAIL)的文档,只要它在 Google Drive 上的源文件没有被修改过,调用本接口不会重新处理它——它会被当作“源文档未改动”直接跳过,状态保持不变,也不会出现在 skipped 中。

要重试解析失败的文档,请使用重新嵌入文档接口。或者在 Google Drive 上对源文件做一次修改,使其最后修改时间更新,本接口即可重新拉取。

同步会删除知识文档

本接口不只做新增和更新,也会按 Google Drive 的当前状态删除知识文档。

当绑定的 Google Drive 文件夹变空时,该文件夹下已导入的知识文档会被全部删除。 触发条件是文件夹在 Google Drive 上仍可访问、但列举不到任何文件。系统会先校验文件夹可访问性,拿不到文件夹元信息时(文件夹被移走、权限变更、临时不可达等)会跳过删除,以避免误删。

删除范围限定在“该文件夹 + 该知识库”之内。同一个 Google Drive 文件夹被多个知识库引用时,各知识库互不影响。

该行为与系统定时同步一致,本接口只是让它提前发生。但由于本接口还覆盖了导入时没有配置定时同步计划的文档(这部分原本不会被任何自动流程删除),调用前请确认 Google Drive 侧的文件夹内容符合预期。

覆盖范围

同步范围覆盖知识库中所有来自 Google Drive 的文档,包括导入时没有配置定时同步计划的那部分——这部分文档不会被系统的定时轮次处理,只能通过本接口更新。

限流

  • 每个 Agent / Workflow 每分钟最多 1 次。两条路径共用同一个计数器,换路径不会绕过限流。
  • 同时受组织套餐的知识库类 API 每分钟请求数(RPM)限制,与其它知识库接口共享该额度。
  • 同一 Agent / Workflow 的上一次同步尚未执行完时,再次调用会返回 accepted=falsereason=SYNC_IN_PROGRESS

与定时同步的关系

本接口与系统定时同步相互独立、互不阻塞。scheduled_round_runningtrue 时本次请求仍会被受理,不会因为定时轮次正在执行而被拒绝。

两者同时处理同一个文档时不会产生重复内容:系统按源文档的最后修改时间做增量判断,且已导入的文件不会被重复创建。

定时同步按知识库自身配置的频率自动执行,本接口则忽略该频率立即触发。二者互为补充:定时同步负责常态更新,本接口负责“现在就要同步”的场景。