跳至主要內容

Microsoft OneNote

這個筆記本涵蓋了如何從 OneNote 載入文件。

先決條件

  1. 依照Microsoft 身分識別平台指示註冊應用程式。
  2. 完成註冊後,Azure 入口網站會顯示應用程式註冊的 [概觀] 窗格。 您會看到應用程式 (用戶端) 識別碼。 也稱為 client ID,此值可唯一識別 Microsoft 身分識別平台中的應用程式。
  3. 在您將在項目 1 中執行的步驟中,您可以將重新導向 URI 設定為 https://127.0.0.1:8000/callback
  4. 在您將在項目 1 中執行的步驟中,在「應用程式密碼」區段下產生新的密碼 (client_secret)。
  5. 請依照此文件中的指示,將以下 SCOPES (Notes.Read) 新增至您的應用程式。
  6. 您需要使用命令 pip install msalpip install beautifulsoup4 安裝 msal 和 bs4 套件。
  7. 在步驟結束時,您必須具有以下值
  • CLIENT_ID
  • CLIENT_SECRET

🧑 從 OneNote 擷取文件的指示

🔑 身份驗證

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

os.environ['MS_GRAPH_CLIENT_ID'] = "YOUR CLIENT ID"
os.environ['MS_GRAPH_CLIENT_SECRET'] = "YOUR CLIENT SECRET"

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

from langchain_community.document_loaders.onenote import OneNoteLoader

loader = OneNoteLoader(notebook_name="NOTEBOOK NAME", section_name="SECTION NAME", page_title="PAGE TITLE")
API 參考:OneNoteLoader

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

from langchain_community.document_loaders.onenote import OneNoteLoader

loader = OneNoteLoader(notebook_name="NOTEBOOK NAME", section_name="SECTION NAME", page_title="PAGE TITLE", auth_with_token=True)
API 參考:OneNoteLoader

或者,您也可以將權杖直接傳遞給載入器。 當您想要使用由另一個應用程式產生的權杖進行身份驗證時,這非常有用。 例如,您可以使用Microsoft Graph Explorer產生權杖,然後將其傳遞給載入器。

from langchain_community.document_loaders.onenote import OneNoteLoader

loader = OneNoteLoader(notebook_name="NOTEBOOK NAME", section_name="SECTION NAME", page_title="PAGE TITLE", access_token="TOKEN")
API 參考:OneNoteLoader

🗂️ 文件載入器

📑 從 OneNote 筆記本載入頁面

OneNoteLoader 可以從儲存在 OneDrive 中的 OneNote 筆記本載入頁面。 您可以指定 notebook_namesection_namepage_title 的任意組合,以篩選特定筆記本下、特定區段下或具有特定標題的頁面。 例如,您想要載入儲存在 OneDrive 中任何筆記本中名為 Recipes 的區段下的所有頁面。

from langchain_community.document_loaders.onenote import OneNoteLoader

loader = OneNoteLoader(section_name="Recipes", auth_with_token=True)
documents = loader.load()
API 參考:OneNoteLoader

📑 從頁面 ID 列表載入頁面

另一種可能性是為您想要載入的每個頁面提供 object_ids 的列表。為此,您需要查詢 Microsoft Graph API,以找到您感興趣的所有文件 ID。此連結提供了有助於檢索文件 ID 的端點列表。

例如,要檢索儲存在您的筆記本中的所有頁面的資訊,您需要向以下位址發出請求:https://graph.microsoft.com/v1.0/me/onenote/pages。一旦您有了您感興趣的 ID 列表,您就可以使用以下參數實例化載入器。

from langchain_community.document_loaders.onenote import OneNoteLoader

loader = OneNoteLoader(object_ids=["ID_1", "ID_2"], auth_with_token=True)
documents = loader.load()
API 參考:OneNoteLoader

此頁面有幫助嗎?