真实面经题目 · 原创解析
生产级 Agent 如何设计敏感词过滤、停止生成和死循环防护?
这题考生产级 Agent 的运行时安全控制,回答重点是敏感内容过滤、停止生成、工具切换约束、死循环防护、观测告警和人工接管。
真实面经题目 · 原创解析
这题考生产级 Agent 的运行时安全控制,回答重点是敏感内容过滤、停止生成、工具切换约束、死循环防护、观测告警和人工接管。
我会把这题拆成运行时控制面。第一层是输入和输出安全,对用户输入、工具参数、模型中间计划和最终输出做敏感词、策略分类和权限检查。第二层是停止生成,前端停止、服务端取消、模型流关闭、工具任务中止和状态标记要形成一致协议,不能只断开 SSE。第三层是工具切换约束,工具有 allowlist、schema 校验、权限范围、调用前置条件和互斥规则,避免模型在多个工具之间乱跳。第四层是死循环防护,设置最大迭代次数、超时、无进展检测、重复调用检测、成本预算和人工接管。第五层是可观测性,记录每轮模型决策、工具调用、拦截原因、取消原因和资源消耗,用指标和告警发现异常。核心原则是把 Agent 当成可取消、可审计、可降级的状态机,而不是让模型自由运行到结束。
敏感内容检查不能只放在最终答案。用户输入、模型计划、工具参数、检索内容、工具返回和输出都可能携带风险。生产系统应按风险等级决定拒绝、脱敏、澄清、人工审核或继续执行。
停止按钮触发后,客户端、网关、Agent 调度器、模型流、正在运行的工具和持久化状态都要收到一致的取消信号。只断开前端连接会造成后端继续消耗 token、工具继续执行或任务状态变成不确定。
每个工具要定义调用条件、参数 schema、权限、幂等性、超时和错误语义。Agent 在多工具之间切换时,应有计划、状态和上一步结果作为依据,而不是模型凭名字猜工具。高风险工具还需要确认或审批。
仅设置最大轮数不够,还要检测重复计划、重复工具参数、状态无变化、同类错误反复出现和成本异常增长。无进展时应触发总结、澄清、降级或人工接管,而不是继续让模型自我修复。
生产级 Agent 应显式维护 running、cancelling、cancelled、blocked、failed、succeeded 等状态。每次模型调用和工具调用都要从合法状态进入,并在失败、取消、超时后落到明确状态,便于重试和审计。
关键指标包括拦截率、取消成功率、平均迭代轮数、循环中止次数、工具错误率、重复调用率、token 成本、任务超时和人工接管率。没有 trace 和指标,安全策略只能靠事故后复盘。
前端断开只代表用户不再接收结果,后端模型流和工具任务可能还在运行。必须把取消信号传到调度器、模型调用和工具执行层。
看是否反复生成相同计划、调用相同工具参数、遇到同类错误、状态没有变化,或 token 和耗时持续增长但任务没有进展。
应多点防护:输入入口做初筛,工具调用前做参数检查,输出前做最终检查,高风险动作前做审批或人工确认。
不应该。要区分临时错误、参数错误、权限错误和不可恢复错误,并设置重试次数、退避、降级和人工接管条件。