Files
story/docs/content-safety-provider.md
T

3.2 KiB
Raw Blame History

生产内容安全服务适配

1. 处理边界

Worker以两层策略保护故事、事实和后续记忆。第一层是进程内固定高风险规则,识别验证码、支付账户、提示注入和高敏医疗内容;命中后直接生成不含原文的受控提示,原文不发送给内容模型或外部安全服务。第二层是生产托管策略,分别检查准备送给内容模型的长者话轮和模型返回的摘要、开放话题、故事、事实组合文本。

托管策略返回BLOCK或REVIEW时,Worker只保存受控摘要和开放提示,不创建普通故事、事实或记忆。网络失败、超时、408/425/429/5xx、不可解析响应和不符合协议的响应均按可重试错误安全阻断;其他4xx作为永久配置或请求错误进入现有死信治理。任何失败都不会被降级解释为允许。

2. HTTP协议

Worker对CONTENT_SAFETY_ENDPOINT执行POST,使用Authorization: Bearer <API Key>和Content-Type: application/json。请求为:

{
  "policy_ref": "elder-story-production-v1",
  "content": "待分类文本"
}

成功响应必须是:

{
  "decision": "ALLOW",
  "sensitivity": "normal",
  "reason_code": "",
  "request_ref": "provider-audit-reference"
}

decision只允许ALLOW、BLOCK、REVIEW;sensitivity只允许normal、sensitive、high。阻断或复核必须返回由小写字母、数字、下划线或连字符组成且不超过64字符的reason_code。request_ref用于供应商侧审计关联,不写入普通业务正文。响应正文、API Key和待分类文本不会拼入应用错误。

3. 配置

变量 说明
CONTENT_SAFETY_PROVIDER 本地开发为local;生产必须为managed_http
CONTENT_SAFETY_ENDPOINT 托管分类服务绝对地址;生产必须为非本地HTTPS
CONTENT_SAFETY_API_KEY / _FILE Bearer密钥;二者只能配置一个,生产建议CSI文件
CONTENT_SAFETY_POLICY_REF 经业务、安全和法务批准的不可变策略版本
CONTENT_SAFETY_TIMEOUT 单次HTTP超时,默认5秒

生产Worker在连接数据库前执行配置门禁,拒绝本地提供器、HTTP或本地端点、占位/短密钥和本地策略名。Kubernetes基线从voice-platform-model-storage目录读取content-safety-api-key;生产覆盖层必须替换ConfigMap中的.example.invalid与replace-with-*占位值。

启用托管策略时,Worker还按EXTERNAL_PROBE_INTERVAL对策略端点执行无正文的DNS、TCP和受信TLS握手,结果写入content_safety_tls外部依赖状态和Prometheus指标。连续5分钟不可用触发PlatformExternalDependencyUnavailable,但不进入Pod readiness,避免网络抖动引发重启风暴;生产候选验收快照必须把该依赖列为必需项。

4. 验收

日常开发只运行适配器和配置的定向测试,覆盖正常允许、本地命中不外发、托管复核阻断、临时故障重试以及永久4xx。发布候选仍需在真实账号和目标策略上完成VERIFICATION_CODE、FINANCIAL_ACCOUNT、PROMPT_INJECTION、SENSITIVE_MEDICAL、NORMAL_BENIGN、MODEL_OUTPUT_SAFETY六类证据,并由cmd/agent-models-conformance形成不可豁免报告。