以编程方式使用文档

PlainID 提供基于策略的授权(PBAC)和集中式策略执行。此集成允许您在 LLM 链的不同阶段对 LangChain 应用实施细粒度访问控制。

通过 langchain-plainid,您可以: - **过滤 RAG 数据:** 根据用户权限动态过滤从向量存储中检索的文档,确保他们只能看到有权访问的数据。 - **授权提示:** 控制用户或租户是否被允许 *调用* 链或工具,基于其查询的 *类别* 。 - **匿名化数据:** 根据 PlainID 中定义的策略,检测并匿名化(掩码或加密)响应中的 PII 或其他敏感实体。

安装

首先,安装合作伙伴包:

pip install langchain_plainid

设置

接下来,您需要使用 PlainID 租户中的凭证配置提供商。您将需要 Client ID、Client Secret 和 Base URL。

您可以将这些设置为环境变量:

如果在实例化过程中未提供显式凭证,所有组件将自动使用这些环境变量。

用法

该包提供三个主要组件用于强制执行授权。

RAG 数据过滤

PlainIDRetriever 包装您的现有向量存储检索器。它根据用户身份从 PlainID 获取授权过滤器,并将其应用到向量存储查询。这会在文档传递到 LLM 上下文之前将其过滤掉 *之前* 。

此示例假设您已 PlainIDPermissionsProvider 配置了 PlainID(例如通过环境变量)并 PlainIDRetrieverFilterProvider 设置了检索器。

提示授权

PlainIDCategorizer 可以放置在链的开头以授权用户的 *意图*。它对输入提示进行分类(例如"HR"、"财务"、"合同"),并检查用户是否被允许询问该类别。如果未授权,它会抛出 ValueError.

PII 匿名化

PlainIDAnonymizer 可以放置在链的末尾以检查 LLM 的响应。它使用 presidio 检测 PII 实体(如"PERSON"、"PHONE_NUMBER"),然后咨询 PlainID 是否要 MASK or ENCRYPT 根据定义的策略对这些实体进行

更多信息和完整示例,请参阅 langchain_plainid PyPI 页面.