该智能体手动通过了我抛出的每一项测试。随后,一位用户要求它“预订更便宜的航班”,它欣然在错误的航班 ID 上调用了 book 函数,而整整三天无人察觉,因为我持续运行的演示程序从未要求过预订更便宜的航班。
这就是陷阱所在。当你亲自运行智能体进行测试时,演示过程本身就是测试——你输入预设的理想路径提示词,观察其正常运行,然后发布产品。但你的用户不会按照你预设的理想路径输入指令,而且你的模型提供商会在下个星期二静默地发布一个新的模型检查点。AI 智能体评估框架的作用是告诉你,你的智能体是否真正有效,并且——更重要的是——上周对提示词的微调是否在不知不觉中破坏了你未曾关注的航班预订流程。
本教程将构建这样一个框架。到最后,你将拥有一个小型、可运行的 Python 代码库,它能够对智能体执行真实任务的情况进行评分,检查其是否使用正确的参数调用了正确的工具,利用大语言模型(LLM)评判模糊的主观内容,并且当某次变更导致智能体性能下降时,使你的持续集成(CI)构建失败。没有产品推销,没有框架绑定——这种模式适用于 LangChain、LangGraph、原始 MCP 协议,或你自己搭建的任何架构。
你将构建什么:一个最小化的 AI 智能体评估框架
我们将测试一个带有三个工具的小型旅行支持智能体——search(搜索)、get_weather(获取天气)和 book(预订)——因为工具调用是可以被核查的,而自由形式的聊天则不然。在此过程中,我们将构建四个评分器。我称它们为四大评分器,它们清晰地对应着你真正担心的问题:
| 评分器 | 回答的问题 | 工作原理 |
|---|---|---|
| 真实性(Truth) | 智能体是否使用正确的参数调用了正确的工具? | 确定性代码检查 |
| 路径(Path) | 它是否采取了合理的路径,还是陷入循环和混乱? | 轨迹/步骤效率检查 |
| 裁判(Judge) | 在没有唯一标准答案字符串的情况下,它是否真正完成了目标? | 基于评分细则的大语言模型裁判 |
| 门禁(Gate) | 这次变更是否使智能体比上周表现更差? | 综合得分 + 持续集成回归门禁 |
“真实性”和“路径”评分器成本低廉、速度快且具有确定性。“裁判”评分器灵活但需要校准。“门禁”评分器则将这一切转化为安全网,而非仅仅是一个科学实验项目。
前置条件
- Python 3.10 及以上版本,并熟悉
pip install命令。 -
pytest(通过pip install pytest安装)。对于大语言模型裁判步骤,需要任意提供商的软件发展工具包(SDK)——我们将以openai为例,但该调用只是一个可替换的函数,因此 Anthropic、本地模型或任何具有聊天端点的服务均可使用。 - 一个可以从 Python 调用的智能体,它能返回调用了哪些工具以及最终答案。如果你的框架尚未暴露这些信息,请自行捕获——大多数框架通过回调或追踪/跨度导出功能提供这些数据。
- 无需 prior 评估经验。这正是我在发布智能体并意识到“在我机器上能运行”并非一种测试策略时,所希望早已存在的东西。
为何人工测试具有欺骗性
有三件事使得智能体在通过肉眼观察进行测试时具有独特的危险性。
演示即测试。 你是通过运行提示词并修复出错部分来构建智能体的。因此,你所运行的提示词在构造上就是它已经能够处理的那些。你相当于在为自己编写了标准答案的考试打分。
非确定性。 相同的提示词,相同的模型,却产生不同的输出。温度参数、重新排序的检索结果、提供商侧的模型更新……
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。