核心要点

  • Agent 不可靠的根因LLM 输出不确定性、工具调用失败、上下文丢失、幻觉传播

  • 多层护栏设计:输入校验 → 执行沙箱 → 输出审核 → 人类审批(关键操作)

  • 重试与降级策略:幂等重试、指数退避、fallback 模型路由、断路器

  • 可观测性设计:结构化日志、trace 链路追踪、token 成本监控、异常告警

  • 状态持久化checkpoint 机制让 Agent 可从断点恢复,避免长任务全部重做

简要回答

生产级 AI Agent 的可靠性需要从可观测性、护栏(Guardrails)、重试与降级、状态持久化、人类审批五个维度系统构建。单一手段无法覆盖 LLM 不确定性带来的故障模式。核心架构是五层可靠性保障:输入护栏、执行沙箱、输出审核、人类审批、可观测性与恢复。关键策略包括区分幂等/非幂等操作的重试策略、全链路 trace 记录、checkpoint 机制让 Agent 可从断点恢复。

标准回答

一、Agent 不可靠的根因分析

AI Agent 在生产环境中的故障模式与传统软件有本质区别。传统软件的故障来自确定性 bug,而 Agent 的故障主要来自 LLM 输出的不确定性:模型可能幻觉出不存在的工具参数、跳过关键步骤、在相同输入下产生不同输出、或在上下文过长时丢失关键信息。

具体故障模式包括:工具调用失败(参数格式错误、API 超时、权限不足)、上下文丢失(长对话中关键指令被截断)、幻觉传播(错误中间结果被后续步骤放大)、循环执行(Agent 陷入重复操作的死循环)、成本失控(token 消耗超出预算)。

二、五层可靠性保障架构

第一层:输入护栏(Input Guardrails)。对用户输入和上游数据做校验和清洗——验证输入格式、过滤注入攻击、限制输入长度、检查是否包含敏感信息。使用结构化输出(JSON Schema)约束 LLM 的输入解析,避免自由文本解析带来的歧义。

第二层:执行沙箱(Execution Sandbox)。Agent 的每个工具调用在隔离环境中执行——代码执行使用容器沙箱(如 Docker、gVisor)、文件系统访问限制在白名单目录、网络请求通过代理层做 URL 白名单和速率限制。沙箱确保即使 Agent 产生恶意或错误操作,影响范围也被限制在可控边界内。

第三层:输出审核(Output Guardrails)。对 LLM 的输出做结构化校验——使用另一个 LLM 或规则引擎检查输出是否符合预期格式、是否包含敏感信息、是否与任务目标一致。对工具调用的参数做 JSON Schema 验证,对最终输出做内容安全审核。

第四层:人类审批(Human-in-the-Loop)。对高风险操作(如发送邮件、修改数据库、执行金融交易)设置人类审批节点。Agent 在执行前生成操作预览,等待人类确认后执行。审批超时自动降级为取消或排队。

第五层:可观测性与恢复。全链路 trace 记录 Agent 的每一步决策和执行——使用 OpenTelemetry 标准记录 LLM 调用(prompt、completion、token 数、延迟)、工具调用(参数、结果、耗时)、护栏触发(拒绝原因、降级策略)。设置异常告警(延迟突增、错误率上升、成本异常)。实现 checkpoint 机制,长任务每完成一个步骤就持久化状态,失败后可从最近的 checkpoint 恢复而非全部重做。

三、重试与降级策略

Agent 的重试策略需要区分幂等操作(查询、读取)和非幂等操作(写入、删除)。幂等操作可安全重试,非幂等操作需要幂等键(idempotency key)保证。降级策略包括:主模型超时或报错时自动切换到备用模型(如 Claude → GPT)、复杂任务降级为简单任务(减少工具调用步骤)、实时模式降级为异步模式(长任务转为后台处理 + 通知)。

四、成本控制

设置多层成本上限:单次任务 token 上限(防止循环消耗)、单用户日/月支出上限、团队级预算上限。达到上限时自动暂停并通知管理员。

常见误区

⚠️ 常见踩坑

误区一:只依赖 LLM 的 temperature 参数控制可靠性。 Temperature 只影响输出随机性,不能防止幻觉、工具调用失败或上下文丢失。可靠性需要系统性的工程架构,而非单一参数调优。

误区二:对所有操作一视同仁地重试。 非幂等操作(如发送邮件、扣款)盲目重试会导致重复执行。必须为每个操作设计幂等键,或区分可重试/不可重试操作类型。

误区三:忽略可观测性直到出问题。 Agent 的故障往往是间歇性的、难以复现的。没有全链路 trace,排查一个偶发问题可能需要数天。可观测性不是锦上添花,而是生产级 Agent 的基础设施。

追问

追问 1如何检测和防止 Agent 陷入无限循环?

设置三重防护:第一,步骤上限——单次任务最多执行 N 步(如 20 步),超过则暂停并报告。第二,状态去重——记录每步的状态哈希,检测到重复状态时触发循环告警并终止。第三,token 预算——单次任务 token 消耗超过阈值时自动暂停。循环检测的核心是比较 Agent 的当前状态与历史状态,如果连续 3 次产生相同的工具调用参数,大概率是循环。

追问 2多 Agent 协作场景下如何保障整体可靠性?

多 Agent 系统需要额外的协调层保障:编排 Agent(Orchestrator) 负责分配任务和监控子 Agent 状态,对超时或失败的子 Agent 做重分配或降级。消息队列解耦 Agent 间通信,确保消息不丢失。事务补偿:如果 Agent A 的操作成功后 Agent B 失败,需要有回滚或补偿机制。关键设计原则是每个 Agent 独立可靠(单 Agent 五层架构),编排层只做协调不做执行,失败时优先降级而非重试整个链路。

追问 3如何平衡 Agent 自主性和安全性?

核心原则是分级授权:低风险操作(查询、读取、内部计算)允许 Agent 自主执行;中风险操作(创建资源、发送通知)需要人类审批或确认;高风险操作(删除数据、金融交易、外部通信)必须人类审批 + 操作预览 + 回滚能力。实现方式是给每个工具定义风险等级,Agent 框架根据风险等级自动插入审批节点。自主性随信任积累逐步放开——新 Agent 默认最严格,运行稳定后逐步放宽限制。

🔗 相似问题

同一考点的不同问法,换着练更稳

没找到想看的面试题?把你想看的告诉我们 →

延伸学习

按主题分类的相关资源,便于系统复习