为什么 76% 的 AI Agent 部署会失败(以及如何测试你的部署)

发布: (2026年2月23日 GMT+8 12:59)
5 分钟阅读
原文: Dev.to

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

数据很明确:质量决定代理部署的成败。解决方案不是更强大的模型——而是更好的测试。先从确定性断言开始。你会惊讶于它们捕获了多少问题。

参考文献

0 浏览
Back to Blog

相关文章

阅读更多 »

代币经济

在2161年,时间就是金钱——字面意义上。当你出生时,手臂上的时钟会从一年倒计时。当它耗尽时,你会死亡。富人积累……