Skip to main content
PlainID 提供基于策略的授权(PBAC)和集中式策略执行。此集成允许您在 LLM 应用程序的不同阶段将细粒度访问控制集成到 LangChain 应用程序中。 使用 langchain-plainid,您可以:
  • 过滤 RAG 数据: 根据用户权限动态过滤从向量存储检索的文档,确保他们只能看到被授权访问的数据。
  • 授权提示: 根据用户查询的类别控制用户或租户是否被允许调用链或工具。
  • 匿名化数据: 根据 PlainID 中定义的策略,检测并匿名化(屏蔽或加密)响应中的 PII 或其他敏感实体。

安装

首先,安装合作伙伴包:
pip install langchain_plainid

设置

接下来,您需要使用 PlainID 租户的凭证配置提供商。您将需要您的客户端 ID、客户端密钥和基本 URL。 您可以将这些设置为环境变量:
export PLAINID_CLIENT_ID="your-client-id"
export PLAINID_CLIENT_SECRET="your-client-secret"
export PLAINID_BASE_URL="[https://platform-product.us1.plainid.io](https://platform-product.us1.plainid.io)"
如果在实例化期间没有提供明确的凭证,所有组件都将自动使用这些环境变量。

使用方法

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

RAG 数据过滤

PlainIDRetriever 包装您现有的向量存储检索器。它根据用户身份从 PlainID 获取授权过滤器,并将其应用于向量存储查询。这在文档被传递给 LLM 作为上下文之前就过滤掉文档。 此示例假设您已配置 PlainIDPermissionsProvider(例如,通过环境变量)并设置了 PlainIDRetrieverFilterProvider

提示授权

PlainIDCategorizer 可以放置在链的开头以授权用户的意图。它对输入提示进行分类(例如,“HR”、“Finance”、“Contract”),并检查 PlainID 是否允许用户询问该类别的问题。如果未授权,则引发 ValueError

PII 匿名化

PlainIDAnonymizer 可以放置在链的末尾以检查 LLM 的响应。它使用 presidio 检测 PII 实体(如 “PERSON”、“PHONE_NUMBER”),然后根据定义的策略咨询 PlainID 是否应该 MASKENCRYPT 它们。 有关更详细的信息和完整示例,请参阅 langchain_plainid PyPI 页面