跳到主要內容
Open In ColabOpen on GitHub

Microsoft SharePoint

Microsoft SharePoint 是一個基於網站的協作系統,由 Microsoft 開發,使用工作流程應用程式、「列表」資料庫以及其他網頁元件和安全功能,以增強業務團隊的協作能力。

本筆記本涵蓋如何從 SharePoint 文件庫載入文件。 預設情況下,文件載入器會載入 pdfdocdocxtxt 檔案。 您可以透過提供適當的剖析器來載入其他檔案類型(請參閱下方詳細資訊)。

先決條件

  1. 依照 Microsoft 身分識別平台 指示註冊應用程式。
  2. 註冊完成後,Azure 入口網站會顯示應用程式註冊的「概觀」窗格。 您會看到應用程式 (用戶端) ID。 此值也稱為 client ID,可在 Microsoft 身分識別平台中唯一識別您的應用程式。
  3. 在您將在項目 1 遵循的步驟中,您可以將重新導向 URI 設定為 https://login.microsoftonline.com/common/oauth2/nativeclient
  4. 在您將在項目 1 遵循的步驟中,在「應用程式密碼」區段下產生新的密碼 (client_secret)。
  5. 依照此 文件 中的指示,將下列 SCOPES (offline_accessSites.Read.All) 新增至您的應用程式。
  6. 若要從您的文件庫擷取檔案,您需要其 ID。 若要取得 ID,您需要 Tenant NameCollection IDSubsite ID 的值。
  7. 若要尋找您的 Tenant Name,請依照此 文件 中的指示操作。 取得此名稱後,只需從值中移除 .onmicrosoft.com,並將其餘部分保留為您的 Tenant Name
  8. 若要取得您的 Collection IDSubsite ID,您需要您的 SharePoint site-name。 您的 SharePoint 網站 URL 具有以下格式 https://<tenant-name>.sharepoint.com/sites/<site-name>。 此 URL 的最後一部分是 site-name
  9. 若要取得網站 Collection ID,請在瀏覽器中點擊此 URL:https://<tenant>.sharepoint.com/sites/<site-name>/_api/site/id 並複製 Edm.Guid 屬性的值。
  10. 若要取得 Subsite ID (或 Web ID),請使用:https://<tenant>.sharepoint.com/sites/<site-name>/_api/web/id 並複製 Edm.Guid 屬性的值。
  11. SharePoint 網站 ID 具有以下格式:<tenant-name>.sharepoint.com,<Collection ID>,<subsite ID>。 您可以保留該值以在下一步中使用。
  12. 造訪 Graph Explorer Playground 以取得您的 Document Library ID。 第一步是確保您已使用與您的 SharePoint 網站相關聯的帳戶登入。 然後您需要向 https://graph.microsoft.com/v1.0/sites/<SharePoint site ID>/drive 發出請求,回應將傳回包含欄位 id 的酬載,其中包含您的 Document Library ID

🧑 從 SharePoint 文件庫擷取文件的說明

🔑 驗證

預設情況下,SharePointLoader 預期 CLIENT_IDCLIENT_SECRET 的值必須儲存為名為 O365_CLIENT_IDO365_CLIENT_SECRET 的環境變數。 您可以透過應用程式根目錄中的 .env 檔案或使用指令碼中的以下命令傳遞這些環境變數。

os.environ['O365_CLIENT_ID'] = "YOUR CLIENT ID"
os.environ['O365_CLIENT_SECRET'] = "YOUR CLIENT SECRET"

此載入器使用名為 代表使用者 的驗證。 這是需要使用者同意的 2 步驟驗證。 當您實例化載入器時,它將呼叫並列印使用者必須造訪的 URL,以授予應用程式所需的權限。 然後使用者必須造訪此 URL 並授予應用程式權限。 然後使用者必須複製產生的頁面 URL 並將其貼回主控台。 如果登入嘗試成功,該方法將傳回 True。

from langchain_community.document_loaders.sharepoint import SharePointLoader

loader = SharePointLoader(document_library_id="YOUR DOCUMENT LIBRARY ID")
API 參考:SharePointLoader

驗證完成後,載入器會將權杖 (o365_token.txt) 儲存在 ~/.credentials/ 資料夾中。 此權杖稍後可用於驗證,而無需先前說明的複製/貼上步驟。 若要使用此權杖進行驗證,您需要在實例化載入器時將 auth_with_token 參數變更為 True。

from langchain_community.document_loaders.sharepoint import SharePointLoader

loader = SharePointLoader(document_library_id="YOUR DOCUMENT LIBRARY ID", auth_with_token=True)
API 參考:SharePointLoader

🗂️ 文件載入器

📑 從文件庫目錄載入文件

SharePointLoader 可以從文件庫中特定資料夾載入文件。 例如,您想要載入儲存在文件庫中 Documents/marketing 資料夾中的所有文件。

from langchain_community.document_loaders.sharepoint import SharePointLoader

loader = SharePointLoader(document_library_id="YOUR DOCUMENT LIBRARY ID", folder_path="Documents/marketing", auth_with_token=True)
documents = loader.load()
API 參考:SharePointLoader

如果您收到錯誤 Resource not found for the segment,請嘗試使用 folder_id 而不是資料夾路徑,可以從 Microsoft Graph API 取得 folder_id

loader = SharePointLoader(document_library_id="YOUR DOCUMENT LIBRARY ID", auth_with_token=True
folder_id="<folder-id>")
documents = loader.load()

如果您希望從根目錄載入文件,您可以省略 folder_idfolder_pathdocuments_ids,載入器將載入根目錄。

# loads documents from root directory
loader = SharePointLoader(document_library_id="YOUR DOCUMENT LIBRARY ID", auth_with_token=True)
documents = loader.load()

recursive=True 結合使用,您可以輕鬆載入整個 SharePoint 中的所有文件

# loads documents from root directory
loader = SharePointLoader(document_library_id="YOUR DOCUMENT LIBRARY ID",
recursive=True,
auth_with_token=True)
documents = loader.load()

📑 從文件 ID 列表載入文件

另一種可能性是為您要載入的每個文件提供 object_id 列表。 為此,您需要查詢 Microsoft Graph API,以尋找您感興趣的所有文件 ID。 此 連結 提供端點列表,這將有助於擷取文件 ID。

例如,若要擷取儲存在 data/finance/ 資料夾中的所有物件的相關資訊,您需要向以下網址發出請求:https://graph.microsoft.com/v1.0/drives/<document-library-id>/root:/data/finance:/children。 取得您感興趣的 ID 列表後,您可以使用以下參數實例化載入器。

from langchain_community.document_loaders.sharepoint import SharePointLoader

loader = SharePointLoader(document_library_id="YOUR DOCUMENT LIBRARY ID", object_ids=["ID_1", "ID_2"], auth_with_token=True)
documents = loader.load()
API 參考:SharePointLoader

📑 選擇支援的檔案類型和偏好的剖析器

預設情況下,SharePointLoader 會使用預設剖析器載入 document_loaders/parsers/registry 中定義的檔案類型(請參閱下方)。

def _get_default_parser() -> BaseBlobParser:
"""Get default mime-type based parser."""
return MimeTypeBasedParser(
handlers={
"application/pdf": PyMuPDFParser(),
"text/plain": TextParser(),
"application/msword": MsWordParser(),
"application/vnd.openxmlformats-officedocument.wordprocessingml.document": (
MsWordParser()
),
},
fallback_parser=None,
)

您可以透過將 handlers 引數傳遞至 SharePointLoader 來覆寫此行為。 傳遞字典,將檔案副檔名(如 "doc""pdf" 等)或 MIME 類型(如 "application/pdf""text/plain" 等)對應到剖析器。 請注意,您必須完全使用檔案副檔名或 MIME 類型,且不能混合使用。

請勿在檔案副檔名中包含前導點。

# using file extensions:
handlers = {
"doc": MsWordParser(),
"pdf": PDFMinerParser(),
"mp3": OpenAIWhisperParser()
}

# using MIME types:
handlers = {
"application/msword": MsWordParser(),
"application/pdf": PDFMinerParser(),
"audio/mpeg": OpenAIWhisperParser()
}

loader = SharePointLoader(document_library_id="...",
handlers=handlers # pass handlers to SharePointLoader
)

如果多個檔案副檔名對應到相同的 MIME 類型,則將套用最後一個字典項目。 範例

# 'jpg' and 'jpeg' both map to 'image/jpeg' MIME type. SecondParser() will be used 
# to parse all jpg/jpeg files.
handlers = {
"jpg": FirstParser(),
"jpeg": SecondParser()
}

此頁面是否對您有幫助?