AI Agent 上线前,你一定要做的评测与安全把关
Agent 最危险的不是当机,是安静地做错——回了一段看起来很合理、其实全错的答案,没人发现。这篇讲 Agent 为什么会无声失败,怎么用 Promptfoo 测、用 AgentOps debug 多步骤、用 Langfuse 在线上监控,最后附一份上线前检查清单。
一家做客服 Agent 的新创,上线第三周客诉量不减反增。他们很困惑——测试时明明都对。后来调出纪录才发现:有一类问题,Agent 每次都自信满满地引用了一份「公司退费政策第七条」,而那份政策根本没有第七条。它不是不会,是把不存在的东西讲得太像真的,而上线前那批测试案例刚好没涵盖这一类。
这就是 Agent 最危险的失败方式——它不会跳红字、不会 throw exception。它安静地、有礼貌地、条理分明地做错,然后你的使用者信了。
为什么 Agent 会「无声失败」
传统软体出错,通常会炸给你看:喷 error、回 500、stack trace 指到第几行。Agent 不一样。它的输出是「生成」出来的,语言永远通顺,所以错误被包装得跟正确答案长得一模一样。
更麻烦的是多步骤。一个 Agent 跑一轮可能呼叫五、六次工具,中间任何一步偏掉——查错资料、传错参数、漏掉一个条件——后面几步会基于这个错误继续推下去,最后给你一个「自洽但错误」的结果。你看最终答案,完全看不出哪里歪了。
所以 Agent 的品质保证,不能靠人工抽查,也不能靠「我跑了几次觉得还行」。你需要一套能量化、能回放、能在线上持续监看的机制。这正是〈想自己做一个 AI Agent,该准备哪些工具〉里提到的评测、安全、可观测性这三层,在上线阶段真正派上用场的地方。
重点:上线前要把关的四件事
- 离线评测:用一套固定题库,量化每次改动后品质有没有退步。
- 红队测试:主动找它的弱点——什么输入会让它越界、唬烂、泄漏。
- 多步骤 debug:出错时能回放整条执行轨迹,定位是哪一步偏掉。
- 线上监控与护栏:上线后持续看品质与成本,并在危险动作前设拦截。
这四件,缺一件你上线都是在赌。
怎么测:Promptfoo
离线评测的核心精神,是把「我觉得变好了」换成「数字告诉我变好了」。Promptfoo 让你建立一组测试案例——输入、预期行为、判断标准——然后每次改 prompt、换模型、调参数,就跑一遍整套,看分数变化。
判断标准可以是字串比对、正规表达式,也可以用另一个模型当裁判(LLM-as-judge)去评「这个回答有没有正确引用来源」。开头那家新创如果有一条「回答中提到的政策条号,必须真实存在」的断言,那个第七条根本上不了线。
红队测试也在这层做。Promptfoo 能跑一批对抗性输入,试图让 Agent 泄漏 system prompt、绕过限制、执行不该执行的动作。你不去攻击它,使用者(或恶意者)就会替你攻击。宁可自己先打一轮。
怎么 debug:AgentOps
评测告诉你「答案错了」,但不会告诉你「错在第几步」。多步骤 debug 要靠 AgentOps。
它把 Agent 一整轮的执行串成一条可回放的时间线:第一步呼叫了什么工具、传了什么参数、拿回什么、花了多少 token、第二步根据什么决定下一步……整条摊开来看。退费政策那个例子,在 AgentOps 里会清楚看到——某一步检索回来的文件片段就已经是错的,后面全是基于错误资料的合理推论。没有这条轨迹,你只会对着最终答案干瞪眼。
怎么监控:Langfuse
上线不是终点,是另一个起点。生产环境的输入千奇百怪,使用者会问出你测试时想都想不到的问题。Langfuse 负责把线上每一次对话、每一笔 token 成本、每一条延迟长期记下来,让你追踪品质有没有随时间漂移、哪类问题答得最差、成本有没有失控。
它跟 AgentOps 的分工大致是:AgentOps 偏开发期的单次深度 debug,Langfuse 偏线上长期的群体监控。实务上很多团队两者都用。重点是——你要有一个地方,能随时回答「我的 Agent 这周表现如何」。答不出来,就是在裸奔。
护栏(Guardrails):最后一道拦截
评测、debug、监控都是「事后或事前知道」,护栏是「当下拦住」。在 Agent 执行危险动作前——付款、删资料、对外发送、执行系统指令——加一层规则检查或人工确认。
护栏该拦什么:输出含个资或机密时遮蔽、金额超过门槛时转人工、侦测到 prompt injection 时中止。这层跟工具链里的执行沙箱(例如 Blaxel)是搭配的——沙箱限制它「能跑什么」,护栏限制它「能做什么」。
三种团队的把关重点
台湾个人开发者:至少把 Promptfoo 接起来。哪怕只有二十个测试案例,也好过每次改完凭感觉。红队测试挑几个最危险的攻击面跑就好,别追求完整。
新创团队:AgentOps 加 Langfuse 要趁早。你的产品还在快速迭代,没有可观测性,每次出事都是团队一起在 log 海捞,捞的时间够你多做两个功能了。护栏优先保护「会花钱」和「不可逆」的动作。
企业:红队测试与护栏是合规底线。资安、法务会问的「资料会不会外泄」「能不能稽核每一步决策」,答案就藏在 Promptfoo 的对抗测试纪录和 AgentOps 的执行轨迹里。把这些纪录留存,等于把稽核证据先备好。
上线前检查清单
直接照做:
- 有一套至少涵盖常见与边界情况的测试题库,跑在 Promptfoo 上
- 每次改 prompt 或换模型,都跑过完整评测,分数没退步才上
- 做过至少一轮红队测试,试过 prompt injection、越界、唬烂
- 对「事实宣称」类回答,有断言检查来源真实存在
- 多步骤流程接了 AgentOps,出错能回放定位到哪一步
- 线上接了 Langfuse,能看品质漂移与成本
- 危险动作(付款、删除、对外发送)前有护栏或人工确认
- 设了 token 与成本上限,避免背景 Agent 烧钱
- 危险的程式码执行跑在沙箱里
- 有一个人,在出事时知道第一个该看哪里
TheAI学院 总结与评语
Agent 上线最大的风险,从来不是技术不够强,是「你不知道它什么时候做错了」。评测让你事前知道,可观测性让你事后查得到,护栏让你当下拦得住——这三件事的价值,平常感觉不到,出事那天会救你一命。
「一个你看不见内部、量不出品质的 Agent,跑得再顺都是定时炸弹;能被检查的平庸,远胜看不见的聪明。」
给台湾读者的具体建议:上线前,逼自己回答一个问题——「如果它明天在客户面前做错一件事,我多久能查出是哪一步、为什么?」答不出「十分钟内」,就先别上线,回去把 Promptfoo、AgentOps、Langfuse 这三层补好。完整的工具链怎么搭,可以回头看〈2026 开发者工具链全图解〉。
常见问题
为什么 AI Agent 的错误比传统软体难发现?
因为 Agent 的输出是生成的,语言永远通顺,错误答案会被包装得跟正确答案一样有条理,不会像传统软体那样喷 error 或 stack trace。多步骤流程中,某一步偏掉后面会基于错误继续推论,最终给出『自洽但错误』的结果,光看答案看不出问题。
Promptfoo 主要解决什么问题?
它把 Agent 的品质从『我觉得变好了』变成可量化的数字。你建立一组固定测试案例与判断标准,每次改 prompt、换模型就跑一遍看分数有没有退步,同时可做红队测试,主动找出会被绕过或让 Agent 唬烂的漏洞。
AgentOps 和 Langfuse 有什么差别,需要都用吗?
AgentOps 偏开发期的单次深度 debug,把一轮执行串成可回放的轨迹,方便定位是哪一步出错;Langfuse 偏线上长期的群体监控,记录每次对话、成本、延迟,追踪品质漂移。两者侧重不同,实务上很多团队会搭配使用。
护栏(guardrails)和评测有什么不同?
评测是事前知道品质如何,监控是事后查得到问题,护栏则是『当下拦截』——在 Agent 执行付款、删除、对外发送等危险动作前,加上规则检查或人工确认,例如金额超过门槛转人工、侦测到 prompt injection 就中止。