大模型安全护栏
更新时间 2026-04-29 10:26:30
最近更新时间: 2026-04-29 10:26:30
基础接入实践:输入输出双重防护
对于大多数大模型应用,推荐采用“输入检测 + 输出检测”的双层防护模式:
关键实现要点:
输入检测与大模型调用是串行的,必须等输入检测通过后再调用大模型。
输出检测可与大模型流式输出并行处理,通过分片机制(seqId + isEnd)实现低延迟检测。
建议为reqId带入业务流水号,方便日志追踪。
自定义词库配置实践
将业务场景中明确禁止出现的词语(如竞品名称、违禁词、内部敏感词)加入黑名单,实现精准快速拦截。
黑名单词库优先级高于 AI 风险检测,命中即拦截,响应更快。
白名单词库配置建议:
将业务中频繁出现但可能被误判的专有名词(如行业术语、产品名称、公司名称)加入白名单,避免误拦截影响用户体验。
白名单应定期审核,避免过度放行带来新的风险。
代答库配置实践
推荐为每个风险类型配置至少3 条不同表述的代答内容,由系统随机选取,使拦截回复更自然:
示例(针对”宣扬暴力”风险类型的代答):
“您好,您的问题涉及敏感内容,我暂时无法回答,感谢理解。”
“这个话题超出了我能讨论的范围,我们换个方向聊聊?”
“抱歉,您提到的内容我无法提供相关建议,如有其他问题欢迎继续提问。”
密钥安全管理实践
私钥(privateKey/SK)严禁明文写入代码,应通过环境变量或密钥管理平台(如 HashiCorp Vault)注入。
为不同的业务系统(如生产环境、测试环境)创建不同的应用,使用独立的密钥,避免相互干扰。
建议定期轮换公私钥对,并在轮换后及时更新所有调用方的配置。
异常处理实践
| 异常场景 | 建议处理方式 |
|---|---|
| 护栏服务超时(网络抖动) | 建议超时时间设为 3~5 秒;超时后根据业务风险等级决定放行或拦截,不应直接报错中断用户会话 |
| success=false(参数错误) | 记录完整请求日志,不将接口调用失败等同于内容风险,应放行并同时告警 |
| checkResult=fail | 不直接将原始大模型内容返回用户,优先使用配置的代答内容,若代答为空则使用兜底话术 |
| 在线测试额度耗尽 | 额度耗尽返回502,不影响正式 API 调用,可继续使用;如需更多测试次数,可使用正式 API 进行测试 |