为什么 76% 的 AI Agent 部署会失败(以及如何测试你的部署)
Source: Dev.to
根据 LangChain 2026 年《代理工程状态报告》(1300 多名受访者),质量是生产代理部署的首要障碍。32% 的团队将其列为主要阻碍。然而,只有 52% 的团队拥有任何评估体系。
这就是测试缺口。代理是非确定性、多步骤的系统,使得传统的单元测试几乎失效。但这并不意味着我们根本无法对其进行测试。
什么可以确定性地进行测试?
在使用 LLM‑as‑judge(昂贵且非确定性)之前,使用普通断言就能验证大量内容,令人惊讶。
1. 工具调用正确性
代理是否调用了正确的工具?顺序是否正确?参数是否正确?
from agent_eval import Trace, assert_tool_called, assert_tool_not_called, assert_tool_call_order
trace = Trace.from_jsonl("weather_agent_run.jsonl")
assert_tool_called(trace, "get_weather", args={"city": "SF"})
assert_tool_not_called(trace, "delete_user") # 安全检查
assert_tool_call_order(trace, ["search", "read", "summarize"])
这可以捕获一大类回归:提示词的更改导致代理忘记使用工具,或以错误的顺序使用工具。
2. 循环检测
代理经常卡住——同一个工具,同样的参数,一遍又一遍。
assert_no_loop(trace, max_repeats=3) # 若同一工具连续调用 3 次或以上则失败
assert_max_steps(trace, 10) # 预算控制
3. 输出合理性
assert_final_answer_contains(trace, "San Francisco")
assert_final_answer_matches(trace, r"\d+°F") # 必须包含温度
assert_no_empty_response(trace)
assert_no_repetition(trace, threshold=0.85) # 不允许复制粘贴的答案
4. 回归检测
CI/CD 的杀手级功能:将基线 trace 与新 trace 进行比较。
from agent_eval import diff_traces
baseline = Trace.from_jsonl("baseline.jsonl")
current = Trace.from_jsonl("current.jsonl")
diff = diff_traces(baseline, current)
print(diff.summary())
# ❌ Tool removed: get_weather
# 🐢 Latency increased: 800ms → 5000ms (6.3x)
# 📝 Final answer changed (similarity: 42%)
assert not diff.is_regression # 若工具被移除或延迟 >2 倍则失败
在每次提示词/模型更改后于 CI 中运行此检查。可在回归进入生产环境前将其捕获。
三层测试金字塔
我把代理测试划分为三层:
第 1 层:确定性断言(快速、免费、可靠)
- 工具调用、控制流、输出模式、性能界限
- 零 API 调用,零成本,毫秒级执行
- 约 80% 的测试价值来源于此
第 2 层:统计指标(快速、免费、近似)
- 相似度评分、漂移检测、效率指标
- 仍然没有 API 调用,本地运行
第 3 层:LLM‑作为评审(慢、昂贵、强大)
- 幻觉检测、目标完成、推理质量
- 稀疏使用——针对无法确定性检查的内容
大多数团队直接跳到第 3 层。这就像只写集成测试而不写单元测试。请从底层开始。
The Tooling Gap
Current options:
- LangSmith / Braintrust / Arize — 企业 SaaS,优秀但笨重
- DeepEval — 开源但有 40+ 依赖(包括 PyTorch)
- agentevals — 每次评估都需要 OpenAI API
- promptfoo — Node.js,非 Python
I built agent‑eval to fill the gap: zero dependencies, local‑first, framework‑agnostic. Layer 1 and 2 assertions that run anywhere Python runs, with no API keys, no accounts, no uploads.
pip install agent-eval-lite
数据很明确:质量决定代理部署的成败。解决方案不是更强大的模型——而是更好的测试。先从确定性断言开始。你会惊讶于它们捕获了多少问题。