用途:管理流经 Perplexity Sonar API 的数据。核心关注点是查询会发送到 Perplexity 进行网络搜索,因此查询中的任何 PII 都会暴露给外部基础设施;响应中的引用(第三方 URL)在展示给用户前需要校验。
主要能力:
- 查询脱敏:用正则匹配邮箱、电话、SSN、银行卡号、API token、用户/客户/账户 ID,替换为占位符(如 [email]、[phone]、[ssn]、[card]、[token]、[id]),并返回是否发生脱敏。
- 引用校验与去重:解析 URL,检查协议是否为 http/https,标记有效/无效;按去掉查询参数和末尾斜杠的规范化 URL 去重;可将答案中的 [1] 标记替换为带链接的引用。
- 结果缓存:用 LRU 缓存(max 500),以 sha256(model:小写去空格查询) 为键;按查询类型设置 TTL——news 30 分钟、research 4 小时、factual 24 小时、default 1 小时;通过关键词(latest/today/breaking/recent/this week、research/study/paper/analysis/compare、what is/define/how does/who is)判断类型。
- 对话上下文管理:SearchContext 类保留 system 提示与最近消息,maxMessages 为 10,估算 token 上限 8000(按字符数/4 估算),超限时自动裁剪,支持 clear 保留 system。
使用方式:需配置 Perplexity API key、了解 PII 法规(GDPR/CCPA)、准备缓存存储(Redis 或内存)。调用流程为:用户输入 → 查询脱敏 → Perplexity API → 响应解析(答案文本、引用、搜索结果)。示例调用使用 model "sonar",messages 为单条 user 消息。
适用场景:需要向 Perplexity 发起搜索并展示引用、且对隐私与缓存新鲜度有要求的搜索工作流。
限制:资料未提供具体部署环境、性能数据、收费信息;脱敏基于正则,可能无法覆盖所有 PII 形式;缓存 TTL 与上下文裁剪阈值为示例默认值,需按实际调整。访问控制可参考 perplexity-enterprise-rbac。