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 页面.