微软 OneNote
这个笔记本涵盖了如何从OneNote加载文档。
前置条件
- 使用Microsoft身份平台注册应用程序的说明。
- 注册完成后,Azure门户将显示应用注册的概述窗格。您会看到应用程序(客户端)ID。这个值也被称为
client ID,它是您的应用程序在Microsoft身份平台中的唯一标识符。 - 在您将要遵循的步骤项1中,您可以将重定向URI设置为
http://localhost:8000/callback - 在步骤 项目1 中,您将在应用程序密钥部分生成一个新密码 (
client_secret)。 - 按照此 文档 中的说明,将以下
SCOPES(Notes.Read) 添加到您的应用程序中。 - 您需要使用命令 `0` 和 `1` 安装 msal 和 bs4 包。
- 在完成步骤后,您必须拥有以下值:
CLIENT_IDCLIENT_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")
完成身份验证后,加载器将在~/.credentials/文件夹中存储一个令牌(onenote_graph_token.txt)。此令牌可以在不需要之前所述的手动粘贴步骤的情况下用于后续的身份验证。为了使用此令牌进行身份验证,在加载器的实例化过程中需要将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)
Alternatively, you can also pass the token directly to the loader. This is useful when you want to authenticate with a token that was generated by another application. For instance, you can use the Microsoft Graph Explorer to generate a token and then pass it to the loader.
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来过滤特定笔记本下的页面、特定部分下的页面或具有特定标题的页面。例如,您想加载所有存储在一个名为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()