pdf版下载链:https://pan.quark.cn/s/9cc742e9c2a8
10 AI 应用安全与评估:风险防护、质量评测与回归测试
更新: 2026-10-12
时效说明:安全框架、基准与工具状态截至 2026-10。任何百分比都必须带测试集、攻击预算、模型快照和评判方法;本文删除了无来源的“幻觉率从 40% 降到 2%”等数字。
📋 目录
- 内容、隐私、滥用与 Agent 安全
- 离线评测、在线监控与回归
- RAG、幻觉、Prompt Injection
- 2026 安全基准与 Agent Harness
一、AI 安全与合规
Q1: 如何防止 AI 应用生成有害内容?
不能只靠一段 system prompt。可靠方案是分层控制:
- 输入侧:用户/租户身份、风险分类、速率与 token 预算、恶意文件检测。
- 编排侧:最小权限工具、参数 schema、allowlist、审批和预算。
- 模型侧:使用提供商安全能力、明确政策和安全响应方式。
- 输出侧:内容分类、PII/secret 扫描、结构化校验、引用校验。
- 行为侧:审计 tool calls、状态变化、数据导出和异常序列。
- 响应侧:阻断、降权、人工升级、撤销凭证和事件复盘。
基线可用 OWASP Top 10 for LLM Applications 2025;它覆盖 Prompt Injection、敏感信息泄露、供应链、数据/模型投毒、不当输出处理、过度代理权、system prompt 泄露、向量/embedding 弱点和无界消耗等。
Q2: 如何处理用户隐私数据?
- 数据最小化:能不收集就不收集;能本地处理就不上传。
- 分类与目的限制:PII、PHI、财务、secret、客户数据分别定义用途和保留期。
- 传输/存储加密,密钥托管和轮换。
- 检索与工具调用执行行级/文档级 ACL,不能只靠 prompt 提醒。
- 日志默认脱敏;trace 中的 prompt、tool output、截图也属于数据面。
- 明确供应商数据使用、region、保留与删除能力。
- DSAR/删除请求要覆盖向量库、缓存、评测集和备份策略。
- 训练/微调前完成授权、许可证和去标识化审查。
脱敏不是一次正则替换:姓名、地址、自由文本和图像中的 PII 需要组合检测,并评估误报、漏报和可逆性。
Q3: 如何防止刷量、攻击和无界消耗?
同时限制:
- requests/minute、tokens/minute、并发数。
- 单请求输入、输出、图片/文件大小。
- Agent 最大步数、墙钟时间、工具次数和累计费用。
- 搜索结果数、递归深度、重试次数和 fan-out。
- 沙箱 CPU、内存、磁盘、网络和进程数。
系统设计:
认证 → 配额/风险评分 → admission control → 有界队列
→ 执行预算 → 熔断/取消 → 审计与账单
重试必须有指数退避、jitter 和幂等键。客户端断开要传播取消,避免后台继续烧 token。
二、评估与测试
Q4: 如何评估 AI 应用质量?
先从业务失败模式反推指标:
- 任务成功:答案正确、工单解决、SQL 执行正确、代码测试通过。
- Grounding:陈述是否由来源支持,引用是否指向正确片段。
- 检索:Recall@k、nDCG@k、MRR、过滤正确性。
- 安全:攻击成功率、越权率、敏感数据泄露率、误拒率。
- 工具:选择、参数、执行、状态变化和最终响应是否正确。
- 体验:TTFT、端到端延迟、澄清率、人工接管率。
- 成本:每成功任务成本,而非单纯每 token 价格。
评测分层:
- 确定性单元测试:schema、权限、引用 ID、SQL/代码执行。
- 任务级 golden set:人工 rubric 或可验证答案。
- 对抗/安全集:注入、越狱、数据外泄、工具滥用。
- 回放与 shadow:真实流量脱敏回放。
- 在线实验:只在离线闸门通过后做 A/B 或 canary。
Q5: 如何做 AI 应用回归测试?
每个测试样本保存:
{
"input": "...",
"context_snapshot": "...",
"expected_invariants": ["no_secret", "valid_schema"],
"rubric": {
"correctness": "...", "safety": "..."},
"segment": ["long_context", "high_risk"],
"provenance": "...",
"version": "..."
}
CI 对比的不只是平均分:
- 分桶退化:语言、租户、长度、风险、工具和文档类型。
- 统计不确定性:bootstrap CI、配对检验。
- hard fail:越权、真实副作用、secret 泄露、无效结构。
- 软门槛:质量、延迟、成本相对 baseline 的容忍带。
冻结模型 snapshot、prompt、retriever、index、judge 和 sampling 配置,才能定位回归来源。
Q6: RAGAS 的“四个指标”是什么?如何正确使用?
早期教程常背四项:
- Faithfulness:回答陈述是否受 retrieved contexts 支持。
- Answer/Response Relevancy:回答是否针对用户问题。
- Context Precision:相关 chunk 是否排在前面。
- Context Recall:参考答案所需信息是否被检索到。
但截至 2026-10,Ragas 已不是只包含固定四指标。其 v0.4 metric collections 还包括 answer correctness/accuracy、context relevance、noise sensitivity 等;接口也从旧全局 metric 迁移到 collections API。参考 v0.3→v0.4 migration。
注意:
- Faithfulness 不等于事实正确;上下文本身错误时,回答可“忠实但错误”。
- Answer relevancy 不判断事实性。
- Context recall 需要 reference/reference contexts,不能凭空估。
- LLM-based 指标要校准 judge 偏差、顺序偏差和模型同源偏差。
- 关键检索指标优先使用文档 ID 和人工 relevance label 的确定性版本。
三、成本与工作流安全
Q7: 如何降低 Token 成本?
按“每成功任务成本”优化:
- 先路由:规则/缓存/小模型处理简单请求。
- 减上下文:检索、去重、摘要、结构化状态,避免无限消息历史。
- 利用 provider prompt caching,但监控可缓存 token 和实际折扣。
- 限制输出并用结构化结果,避免冗长自然语言中间态。
- Batch/异步处理非实时任务。
- 失败快速终止;工具和检索先做便宜验证。
压缩 prompt 可能丢安全约束、引用或 negation,必须按任务成功率评测,不能只看 token 减少率。
Q8: 如何设计智能模型路由?
路由特征:
- 风险级别、模态、上下文长度、工具需求。
- 任务难度与可验证性。
- latency/cost budget、region、供应商健康度。
可靠架构:
policy hard constraints
→ capability filter
→ quality/cost scorer
→ selected model
→ confidence/verification
→ bounded fallback
高风险请求不要因降级绕过安全策略。fallback 也要设置总预算,防止故障时形成放大流量。
Q9: LangGraph 和 LangChain 在安全上有什么区别?
截至 2026-10,LangChain v1 的 create_agent 建在 LangGraph 上;LangGraph v1 是更低层的 durable、stateful orchestration runtime。
安全差异不在品牌,而在控制粒度:
- 高层 agent 快速,但必须显式配置 middleware、tool policy 和 structured output。
- 低层 graph 可把审批、验证、补偿和终止做成确定性节点。
- durable state 要加密、设 TTL、做租户隔离,恢复时验证权限是否仍有效。
Q10: 如何用 LangGraph 实现安全的多轮 Agent?
状态机至少包含:
classify → plan → policy_check
→ [read-only tool | approval | deny]
→ validate_result → respond
关键不变量:
- 模型只能“请求”工具,不能直接执行。
- 工具注册表由服务端定义;名称、schema、身份和 scope 都要校验。
- 写操作预览、审批、幂等、执行后验证。
- 每轮限制步数/费用;循环检测。
- checkpoint 不保存明文 secret。
四、攻击、幻觉与评估指标
Q11: 什么是越狱攻击?如何防御?
越狱试图让模型绕过内容或行为策略;Prompt Injection 则让外部指令改变系统原定目标。二者可重叠,但不是同义词。
防御:
- 输入/输出分类和风险分级。
- 模型安全能力 + 明确政策。
- 工具最小权限与副作用审批。
- 对抗训练集与持续红队。
- 多语言、编码、图像、长上下文和多轮变体测试。
- 监控攻击成功率与正常请求误拒率。
单独检测“ignore previous instructions”等关键词不够;攻击可以语义改写、分片、藏在网页/图片/工具输出中。
Q12: 幻觉为什么产生?如何缓解?
常见来源:
- 参数知识缺失、过期或冲突。
- 检索未召回、上下文噪声或来源错误。
- 问题歧义、错误前提、强迫作答。
- 解码随机性与长链累积错误。
- 工具失败却未把失败状态传给模型。
缓解要按来源:
- 可更新事实 → RAG/搜索/数据库工具 + 引用。
- 可验证任务 → 执行器、计算器、单元测试或规则校验。
- 不确定 → 允许澄清、拒答或标注不确定性。
- RAG → 分离检索 recall、ranking、faithfulness 和事实正确性评测。
- 高风险 → 人工审批和独立验证。
Temperature 降低只能减少采样随机性,不能让错误知识变真;要求“逐步思考”也不保证正确。
Q13: Prompt Injection 如何工作?如何防御?
MITRE ATLAS 将 LLM Prompt Injection 标为 AML.T0051,并区分直接、间接和触发式注入。间接注入可来自网页、邮件、PDF、图像 OCR、RAG 文档和工具输出。
核心边界:
trusted instructions
untrusted user/content/tool data
privileged tools and secrets
防御原则:
- 把检索内容当数据,不把它提升为 system/developer 指令。
- 在模型外执行 authorization;prompt 不是权限边界。
- 工具参数 schema + allowlist + 最小权限。
- 高风险写操作必须 human-in-the-loop。
- egress 控制,防止把数据发往任意 URL。
- canary secret/诱饵检测、完整 trace 与事件响应。
- 输出进 SQL/shell/HTML 时做上下文相关转义和参数化。
没有“完全防注入的 prompt”。目标是让注入即使成功影响模型文本,也无法越权产生副作用。
Q14: LLM 评估指标怎么选?LLM-as-Judge 有什么陷阱?
自动指标:
- Exact Match / executable tests:适合有唯一或可执行答案。
- BLEU/ROUGE:只测表面重叠,不能代表语义和事实。
- embedding / BERTScore:语义接近,不等于逻辑或事实正确。
- task metrics:SQL execution accuracy、pass@k、tool success、citation precision。
- pairwise preference:更适合主观质量,但需要位置交换和 tie。
LLM-as-Judge 的风险:
- 位置、长度、风格和自家模型偏好。
- judge 看到 reference/来源的方式影响分数。
- 非确定性与版本漂移。
- 被候选答案 prompt-inject。
校准方法:
- 用人工双标/仲裁集计算 judge 与人的一致性。
- A/B 随机交换顺序。
- rubric 分项打分,要求引用证据。
- 盲化模型身份;固定 judge snapshot。
- 对低一致性、高风险样本人工复审。
五、RAG 与 Agent Harness
Q15: RAGAS、TruLens、DeepEval、UpTrain 怎么选?
不要按“最流行”选:
- Ragas:RAG 指标与 metric building blocks 丰富。
- TruLens:feedback functions、trace/record 和应用评估集成。
- DeepEval:pytest 风格测试与 CI 体验。
- UpTrain:数据完整性与评估工作流。
2026 选型重点:
- 当前维护状态与版本迁移成本。
- 是否支持自定义 judge、离线模型和数据驻留。
- trace schema 能否覆盖 retriever、reranker、tool/agent。
- 是否能输出逐样本证据,而不是只有总分。
- 指标是否可由内部黄金集复核。
框架只是执行器;metric 定义、数据和门槛归团队负责。
Q16: 如何建立 RAG/Agent 评估 Pipeline?为什么“对齐已解决”是错的?
流水线:
versioned dataset
→ deterministic checks
→ retrieval/tool trajectory metrics
→ answer/judge metrics
→ safety adversarial suite
→ paired baseline comparison
→ release gate
→ canary/shadow/online monitoring
“模型已对齐”不能从 system card、拒答演示或自我陈述推出。对齐是特定威胁模型、场景和分布下的经验性质,会受:
- 多轮、长上下文和间接注入影响。
- 工具权限和环境反馈影响。
- 模型、prompt、retriever 和软件版本变化影响。
- 能力提升与攻击自动化同时影响。
因此用 capability × access × impact 建模,并持续测实际行为。
Q17: N-Day-Bench 衡量什么?能否代表真实安全能力?
N-Day-Bench 官方方法 截至 2026-10 描述为月度自适应 benchmark:
- 从新近 GitHub security advisories 选案例。
- checkout 漏洞修复前 commit。
- Finder 在只读 sandbox 中最多使用有限 tool steps。
- Curator 建立 answer key,blinded Judge 按 rubric 评分。
- 发布 trace,降低静态测试泄漏后只测记忆的风险。
正确解读:
- 它测 repository-grounded 的已披露漏洞发现,不等同于未知 0-day 能力。
- judge 仍有模型偏差;案例筛选、step budget、工具和提示会影响结果。
- 月度分数不能与不同 harness、不同案例的榜单直接横比。
- 不应复述某次 leaderboard 分数为模型永久能力。
企业还应测自有语言/框架、SAST 基线、误报率、修复正确性、补丁回归与授权边界。
Q18: Behavioral Dispositions 为什么比模型自我报告更可靠?
Google Research 2026 行为倾向评估 把心理量表陈述转换成现实情景判断题(SJT),比较模型建议与人类偏好分布。
核心启示:
- “我重视隐私/诚实”是自我报告,不等于在冲突场景中的实际选择。
- 人类没有共识时,单一“正确价值答案”会抹掉偏好分布。
- 应多次采样,按情景、trait 和人类共识强度分析。
- 这是行为对齐的一个切面,不是普遍道德标准或安全认证。
Q19: 为什么 Agent Gateway 是安全边界?OpenClaw / NemoClaw 应关注什么?
Agent gateway 同时承载会话、工具、凭证和远程控制,一旦公开暴露或 scope 过大,影响远高于普通 chat endpoint。
截至 2026-10:
- OpenClaw gateway 非 loopback 绑定默认要求 token/password 或 trusted proxy 身份;不能把 no-auth 暴露公网。
- NemoClaw gateway controls 强调 loopback、TLS/mTLS/JWT 和受控远程访问。
- NemoClaw network policy 提供 deny-by-default egress 与受控审批。
生产检查:
- gateway 默认 loopback;远程经 mTLS/身份代理/隧道。
- 每设备身份、scope 与 session 隔离。
- secrets 由宿主代理注入,agent 不读取明文。
- sandbox 文件、进程、网络和时限策略。
- tool call 审批、审计、撤销和速率限制。
- SSRF、DNS rebinding、Host header、WebSocket origin 与供应链测试。
六、2026 评估基准地图
截至 2026-10,可组合使用:
- HELM:可复现的能力、安全、多指标评估框架。
- LiveBench:定期刷新、可客观判分,降低污染风险。
- SWE-bench-Live:代码 Agent 的真实仓库任务与公开轨迹协议。
- MMMU/MMMU-Pro:多学科多模态理解;必须核对 prompt、图片处理和版本。
- OWASP LLM Top 10 2025:风险清单,不是单一分数榜。
- NIST AI 600-1 GenAI Profile:用 GOVERN/MAP/MEASURE/MANAGE 组织风险管理。
- MITRE ATLAS:AI 对抗战术技术与案例知识库。
公开 benchmark 只能做外部参照。发布门槛最终应由私有、版本化、贴近真实分布的测试集决定。
📝 速记卡片
- Prompt 不是权限边界,Agent 工具必须最小权限和模型外授权。
- RAG 忠实度、事实正确性、检索召回是不同指标。
- Judge 必须用人工集校准,固定版本并防位置/长度/注入偏差。
- 安全评测同时报告攻击成功率和正常流量误拒率。
- 公开榜单看协议与 trace,不把一次分数当永久能力。
- 对齐看实际行为与副作用,不看模型自我表态。