Microsoft OneNote
這個筆記本涵蓋了如何從 OneNote
載入文件。
先決條件
- 依照Microsoft 身分識別平台指示註冊應用程式。
- 完成註冊後,Azure 入口網站會顯示應用程式註冊的 [概觀] 窗格。 您會看到應用程式 (用戶端) 識別碼。 也稱為
client ID
,此值可唯一識別 Microsoft 身分識別平台中的應用程式。 - 在您將在項目 1 中執行的步驟中,您可以將重新導向 URI 設定為
https://127.0.0.1:8000/callback
- 在您將在項目 1 中執行的步驟中,在「應用程式密碼」區段下產生新的密碼 (
client_secret
)。 - 請依照此文件中的指示,將以下
SCOPES
(Notes.Read
) 新增至您的應用程式。 - 您需要使用命令
pip install msal
和pip install beautifulsoup4
安裝 msal 和 bs4 套件。 - 在步驟結束時,您必須具有以下值
CLIENT_ID
CLIENT_SECRET
🧑 從 OneNote 擷取文件的指示
🔑 身份驗證
預設情況下,OneNoteLoader
期望 CLIENT_ID
和 CLIENT_SECRET
的值必須分別儲存為名為 MS_GRAPH_CLIENT_ID
和 MS_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")
完成身份驗證後,載入器會將權杖 (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)
或者,您也可以將權杖直接傳遞給載入器。 當您想要使用由另一個應用程式產生的權杖進行身份驗證時,這非常有用。 例如,您可以使用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")
🗂️ 文件載入器
📑 從 OneNote 筆記本載入頁面
OneNoteLoader
可以從儲存在 OneDrive 中的 OneNote 筆記本載入頁面。 您可以指定 notebook_name
、section_name
、page_title
的任意組合,以篩選特定筆記本下、特定區段下或具有特定標題的頁面。 例如,您想要載入儲存在 OneDrive 中任何筆記本中名為 Recipes
的區段下的所有頁面。
from langchain_community.document_loaders.onenote import OneNoteLoader
loader = OneNoteLoader(section_name="Recipes", auth_with_token=True)
documents = loader.load()
📑 從頁面 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()