logo
開發者文件
搜尋
立即同步知識庫

立即同步知識庫

可立即觸發知識庫的有源知識的增量同步,目前僅支援 Google Drive 來源。

注意:

API 在完成校驗與規劃後立即返回,因此返回的是「已受理」,而非「已更新」。

頻率限制:每個 Agent / Workflow 每分鐘最多 1 次。

請求方式

POST

調用地址

按 API Key 所屬的資源類型選擇對應路徑。兩個 API 的請求參數、回應結構、限流規則完全一致。

  • 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 觸發過於頻繁,超出 API 限流。
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"
}

                    
此代碼塊在浮窗中顯示

使用說明

返回的是「已受理」,不是「已完成」

API 在完成校驗與規劃後立即返回,真正的拉取、解析、向量化在後台非同步執行。因此 matched_doc_count 是「本次將檢查多少個文件」,而非「更新了多少個文件」。想確認最終結果,請輪詢取得知識文件清單 API 查看文件狀態,文件狀態變為 AVAILABLE 即表示該文件已同步完成。

只做增量,不會重複消耗額度

對每個文件,系統會先比對 Google Drive 上的最後修改時間:

  • 源文件未改動:跳過,不重新下載、不重新解析、不消耗額度。
  • 源文件已改動:重新拉取並重新解析、向量化。
  • 綁定的資料夾中有新檔案:自動新增為知識文件。

因此重複調用本 API 是安全的,未變更的內容不會產生額外費用。

本 API 不能重試解析失敗的文件

增量判斷只看 Google Drive 上的源文件有沒有變化,不看文件目前處於什麼狀態。

因此,一個此前解析失敗(狀態為 FAIL)的文件,只要它在 Google Drive 上的源檔案沒有被修改過,調用本 API 不會重新處理它——它會被當作「源文件未改動」直接跳過,狀態保持不變,也不會出現在 skipped 中。

要重試解析失敗的文件,請使用重新嵌入文件 API。或者在 Google Drive 上對源檔案做一次修改,使其最後修改時間更新,本 API 即可重新拉取。

同步會刪除知識文件

本 API 不只做新增和更新,也會按 Google Drive 的目前狀態刪除知識文件。

當綁定的 Google Drive 資料夾變空時,該資料夾下已匯入的知識文件會被全部刪除。 觸發條件是資料夾在 Google Drive 上仍可存取、但列舉不到任何檔案。系統會先校驗資料夾可存取性,拿不到資料夾元資訊時(資料夾被移走、權限變更、暫時不可達等)會跳過刪除,以避免誤刪。

刪除範圍限定在「該資料夾 + 該知識庫」之內。同一個 Google Drive 資料夾被多個知識庫引用時,各知識庫互不影響。

該行為與系統定時同步一致,本 API 只是讓它提前發生。但由於本 API 還涵蓋了匯入時沒有配置定時同步計劃的文件(這部分原本不會被任何自動流程刪除),調用前請確認 Google Drive 側的資料夾內容符合預期。

涵蓋範圍

同步範圍涵蓋知識庫中所有來自 Google Drive 的文件,包括匯入時沒有配置定時同步計劃的那部分——這部分文件不會被系統的定時輪次處理,只能透過本 API 更新。

限流

  • 每個 Agent / Workflow 每分鐘最多 1 次。兩條路徑共用同一個計數器,換路徑不會繞過限流。
  • 同時受組織套餐的知識庫類 API 每分鐘請求數(RPM)限制,與其它知識庫 API 共享該額度。
  • 同一 Agent / Workflow 的上一次同步尚未執行完時,再次調用會返回 accepted=falsereason=SYNC_IN_PROGRESS

與定時同步的關係

本 API 與系統定時同步相互獨立、互不阻塞。scheduled_round_runningtrue 時本次請求仍會被受理,不會因為定時輪次正在執行而被拒絕。

兩者同時處理同一個文件時不會產生重複內容:系統按源文件的最後修改時間做增量判斷,且已匯入的檔案不會被重複建立。

定時同步按知識庫自身配置的頻率自動執行,本 API 則忽略該頻率立即觸發。二者互為補充:定時同步負責常態更新,本 API 負責「現在就要同步」的場景。