Microsoft OneNote
本筆記本涵蓋如何從 OneNote
載入文件。
先決條件
- 依照 Microsoft 身分識別平台 指示註冊應用程式。
- 註冊完成後,Azure 入口網站會顯示應用程式註冊的 [概觀] 窗格。您會看到應用程式 (用戶端) ID。也稱為
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"
此載入器使用稱為 代表使用者 的驗證。這是需要使用者同意的 2 步驟驗證。當您例項化載入器時,它會呼叫並列印使用者必須造訪的 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()