8.3 系统性挑战:幻觉、可靠性、成本、延迟与安全 演示里的 Agent 看似无所不能,生产里的 Agent 却总在翻车。从「能演示」到「能生产」之间,横亘着五道系统性挑战:幻觉、可靠性、成本、延迟、安全。这一节不粉饰太平,把它们一个一个摊开,并给出对应的工程对策。 8.3.1 演示与生产的鸿沟 Agent 工程最容易被低估的事实:演示成功 ≠ 生产可靠。 维度 | 演示 | 生产 输入 | 精挑细选 | 长尾无穷 容错 | 错了重跑 | 错了就是事故 成本 | 不在乎 | 必须可控 监控 | 没有 | 必须 长尾 | 不演示 | 必须应对 ⚠️ Agent 工程的真相:演示是精心编排的最佳案例,生产是用户的无穷创造力。一个能在演示里惊艳的 Agent,可能在生产里 30% 的请求上都失败。
演示里的 Agent 看似无所不能,生产里的 Agent 却总在翻车。从「能演示」到「能生产」之间,横亘着五道系统性挑战:幻觉、可靠性、成本、延迟、安全。这一节不粉饰太平,把它们一个一个摊开,并给出对应的工程对策。
Agent 工程最容易被低估的事实:演示成功 ≠ 生产可靠。
| 维度 | 演示 | 生产 |
|---|---|---|
| 输入 | 精挑细选 | 长尾无穷 |
| 容错 | 错了重跑 | 错了就是事故 |
| 成本 | 不在乎 | 必须可控 |
| 监控 | 没有 | 必须 |
| 长尾 | 不演示 | 必须应对 |
⚠️ Agent 工程的真相:演示是精心编排的最佳案例,生产是用户的无穷创造力。一个能在演示里惊艳的 Agent,可能在生产里 30% 的请求上都失败。把演示当能力上限,是 Agent 工程最大的认知误区。
<svg viewBox="0 0 720 360" xmlns="http://www.w3.org/2000/svg"> <circle cx="360" cy="180" r="120" fill="#fef9c3" stroke="#ca8a04" stroke-width="2" opacity="0.5"/> <text x="360" y="185" font-size="14" fill="#713f12" text-anchor="middle" font-weight="bold">Agent 落地</text> <!-- 五大挑战环绕 --> <g transform="translate(160,80)"> <rect x="-50" y="-20" width="100" height="40" fill="#fce7f3" stroke="#db2777" rx="6"/> <text x="0" y="5" font-size="13" fill="#831843" text-anchor="middle" font-weight="bold">幻觉</text> </g> <g transform="translate(560,80)"> <rect x="-50" y="-20" width="100" height="40" fill="#dbeafe" stroke="#2563eb" rx="6"/> <text x="0" y="5" font-size="13" fill="#1e3a8a" text-anchor="middle" font-weight="bold">可靠性</text> </g> <g transform="translate(560,280)"> <rect x="-50" y="-20" width="100" height="40" fill="#dcfce7" stroke="#16a34a" rx="6"/> <text x="0" y="5" font-size="13" fill="#14532d" text-anchor="middle" font-weight="bold">成本</text> </g> <g transform="translate(160,280)"> <rect x="-50" y="-20" width="100" height="40" fill="#f5e1ff" stroke="#9333ea" rx="6"/> <text x="0" y="5" font-size="13" fill="#581c87" text-anchor="middle" font-weight="bold">延迟</text> </g> <g transform="translate(360,40)"> <rect x="-50" y="-20" width="100" height="40" fill="#fef9c3" stroke="#ca8a04" rx="6"/> <text x="0" y="5" font-size="13" fill="#713f12" text-anchor="middle" font-weight="bold">安全</text> </g> <text x="360" y="345" font-size="13" fill="#475569" text-anchor="middle" font-weight="bold">五大系统性挑战</text> </svg>
这五个挑战相互关联——幻觉影响可靠性,可靠性影响成本与延迟,安全贯穿一切。下面对每个挑战展开。
第 1.1 节已讲过幻觉——LLM 一本正经地编造。在 Agent 场景,幻觉有特殊危害:
| 幻觉类型 | 一般问答 | Agent 场景 |
|---|---|---|
| 事实幻觉 | 答错问题 | 调错 API |
| 引用幻觉 | 给假 URL | 调不存在的工具 |
| 计算幻觉 | 算错数 | 写错代码 |
| 指令幻觉 | 误导用户 | 执行错误操作 |
| 对策 | 做法 |
|---|---|
| RAG 锚定 | 让 LLM 基于检索事实生成(第 5.3 节) |
| Self-Check | 让 LLM 自我复核 |
| 多 Agent 验证 | 让另一 Agent 审查(第 7.4 节) |
| 工具回喂 | 错误立即反馈纠正(第 6.1 节) |
| 范围限定 | Profile 限定「不知就说不知」 |
Agent 是多步串行系统——任何一步出错,整个任务失败。这导致可靠性按乘法衰减:
单步可靠性 90% × 10 步 = 总可靠性 35% 单步可靠性 99% × 10 步 = 总可靠性 90% 单步可靠性 99% × 20 步 = 总可靠性 82%
| 步数 | 单步 90% | 单步 99% | 单步 99.9% |
|---|---|---|---|
| 5 步 | 59% | 95% | 99.5% |
| 10 步 | 35% | 90% | 99% |
| 20 步 | 12% | 82% | 98% |
| 50 步 | 0.5% | 61% | 95% |
| 对策 | 做法 |
|---|---|
| 减少步数 | 任务分解、并行化 |
| 错误恢复 | 重试、回溯、降级(第 4.4 节) |
| 冗余 | 关键步骤多 Agent 投票 |
| 检查点 | 中间状态可保存可恢复 |
| 早停 | 偏离严重立即中止 |
💡 可靠性是乘法效应:单步可靠性 99% 听起来很高,但 50 步下来只剩 61%。提升单步可靠性比增加步数更有效——这就是为什么第 6 章的工具调用稳定性、第 5 章的记忆质量如此重要。
Agent 成本是单次 LLM 调用的 N 倍:
单次调用: $0.01 Agent (10 步): $0.10 Agent (50 步): $0.50 多 Agent (5 个 × 20 步): $1.00
| 构成 | 占比 |
|---|---|
| 主 LLM 调用 | 主要 |
| 小 LLM 辅助(路由、评估) | 次要 |
| Embedding | 小 |
| 工具调用(付费 API) | 视任务 |
| 存储(向量库) | 小 |
| 对策 | 做法 |
|---|---|
| 模型分层 | 简单任务用小模型,复杂用大模型 |
| 上下文压缩 | 第 5.1 节四策略 |
| 缓存 | 重复查询缓存结果 |
| 预算控制 | 第 6.2 节多重预算 |
| 并行化 | 减少总步数 |
| 避免过度 Agent | 简单任务不上 Agent |
⚠️ 成本失控的常见源头:上下文不压缩(每轮全拼历史)、死循环(无硬停止)、过度多 Agent。生产 Agent 上线前必须做成本审计:单任务平均成本、P99 成本、超预算比例。
第 4.4 节已讨论过 ReAct 的延迟问题。生产场景下延迟更敏感:
| 场景 | 可接受延迟 |
|---|---|
| 实时对话 | < 5 秒 |
| 交互助手 | < 30 秒 |
| 后台任务 | < 5 分钟 |
| 离线批处理 | 不限 |
| 来源 | 量级 |
|---|---|
| LLM 推理 | 1-10 秒 |
| 工具调用 | 0.1-数秒 |
| 网络往返 | 毫秒-秒 |
| 多步累加 | N × 单步 |
| 对策 | 做法 |
|---|---|
| 并行化 | 无依赖步骤并行 |
| 流式输出 | 边生成边显示 |
| 预计算 | 高频查询预缓存 |
| 小模型加速 | 简单步骤用小模型 |
| 超时降级 | 超时返回兜底答案 |
Agent 是「多次调用同一 LLM」的场景,推理层面有专门优化:
💡 Agent 推理优化详见《云原生 AI 技术原理》第 7 章:那里详细讨论了多轮 Agent 的 KV Cache 复用、PD 分离架构、连续批处理对 Agent 推理的意义。这是 Agent 工程化的「下层加速」——本教程聚焦 Agent 设计,工程加速指向云原生教程。
第 6.4 节已详细讨论了安全设计。这里只重申它在系统性挑战中的位置:
| 安全维度 | 在系统层的体现 |
|---|---|
| 越权 | Agent 调用了不该调的工具 |
| 数据泄露 | Agent 把内部数据发到外部 |
| 误操作 | Agent 改/删了不该动的数据 |
| 被注入 | Prompt 注入诱导 Agent 干坏事 |
| 不可逆 | 执行了无法回滚的操作 |
能力最小化、沙箱隔离、人类在环、操作可逆、Prompt 注入防御、审计日志——纵深防御六层。
五大挑战不是孤立的,它们相互牵连:
| 关联 | 体现 |
|---|---|
| 幻觉 → 可靠性 | 幻觉让任务失败 |
| 可靠性 → 成本 | 需冗余/重试,成本翻倍 |
| 可靠性 → 延迟 | 需多步验证,延迟上升 |
| 成本 ↔ 可靠性 | 加钱提可靠性,或省可靠性降钱 |
| 安全 → 可靠性 | 安全限制让 Agent 能力下降 |
💡 五大挑战是一组权衡:提可靠性通常加成本与延迟;降成本通常牺牲可靠性或安全。没有银弹,只有匹配场景的平衡点。生产 Agent 的设计本质是「在这些权衡里找最优解」。
把五大挑战对应的工程对策汇总成一份清单:
| 挑战 | 必备对策 |
|---|---|
| 幻觉 | RAG 锚定 + Self-Check + 多 Agent 验证 + 工具回喂 |
| 可靠性 | 减步数 + 错误恢复 + 检查点 + 早停 |
| 成本 | 模型分层 + 上下文压缩 + 缓存 + 预算控制 |
| 延迟 | 并行 + 流式 + 预计算 + 小模型加速 |
| 安全 | 能力最小化 + 沙箱 + 人类在环 + 注入防御 |
| 级别 | 特征 |
|---|---|
| L1 演示 | 精选 case 能跑 |
| L2 原型 | 80% 常见场景可用 |
| L3 内测 | 应对长尾,仍有失败 |
| L4 生产 | 可靠 + 监控 + 兜底 |
| L5 规模化 | 多场景多用户稳定 |
⚠️ 诚实面对成熟度:很多自称「生产级」的 Agent,其实只到 L2-L3。真正到 L4 的 Agent,必须有完整的监控、降级、预算控制、人工兜底。把 L2 当 L4 上线,迟早翻车。
| 反模式 | 体现 |
|---|---|
| 演示即生产 | 不经过 L3/L4 直接上线 |
| 只优化单步 | 忽视乘法可靠性 |
| 无视长尾 | 只测 happy path |
| 无监控 | 出问题不知道 |
| 无降级 | 失败直接崩溃 |
| 过度自动化 | 关键场景不保留人类在环 |