logo

评估与测试 (Evaluation)

AI Agent 最大的问题是不可预测性。昨天能跑通的代码,今天可能就报错。 为了将 Agent 推向生产环境,我们必须建立一套评估体系(Evals)。

[PROMPT_LAB_BANNER]


1. 为什么 Unit Test 不够用了?

传统的单元测试是确定性的:assert add(1, 1) == 2。 但在 Agent 中,ask("你好") 每次返回的文本都不一样。我们无法用字符串匹配来测试。

我们需要从 Syntax Match (语法匹配) 转向 Semantic Match (语义匹配)


2. LLM-as-a-Judge (用魔法打败魔法)

既然只有 LLM 能理解 LLM 的输出,那就用一个更强的 LLM 来充当裁判。

示例:评估客服回答的准确性

输入

  • Question: "如何重置密码?"
  • Ground Truth (标准答案): "点击登录页的'忘记密码'链接。"
  • Agent Answer: "亲,您可以在登录页面找到忘记密码的按钮哦。"

裁判 Prompt:

"请对比 Agent Answer 和 Ground Truth。虽然措辞不同,但核心语义是否一致?如果是,输出 1,否则输出 0。"


3. RAGAS:RAG 系统的评分标准

RAGAS (Retrieval Augmented Generation Assessment) 是目前最流行的 RAG 评估框架。它定义了几个核心指标:

  1. Faithfulness (忠实度): 回答是否完全基于检索到的 Context?(检测幻觉)
  2. Answer Relevance (回答相关性): 回答是否解决了用户的问题?
  3. Context Precision (上下文精确度): 检索到的文档中有多少是有用的?

使用 RAGAS (Python)

from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy
from datasets import Dataset

data = {
    'question': ['How to reset password?'],
    'answer': ['Go to login page and click forgot password.'],
    'contexts': [['Reset password guide: 1. Go to login...']],
    'ground_truth': ['Click forgot password on login screen.']
}

dataset = Dataset.from_dict(data)

results = evaluate(
    dataset = dataset,
    metrics = [faithfulness, answer_relevancy]
)

print(results)
# {'faithfulness': 0.99, 'answer_relevancy': 0.95}

4. 建立回归测试集 (Golden Dataset)

不要指望每次都人工看日志。你需要维护一个包含 50-100 个典型问题的黄金数据集

每次修改 Agent 的 Prompt 或逻辑后,自动跑一遍这个数据集,观察 RAGAS 分数的变化。

  • 分数涨了 -> 可以发布。
  • 分数跌了 -> 回滚。

小结

  • 没有 Evals 就没有生产力。盲目优化 Prompt 只是在“炼丹”。
  • LLM-as-a-Judge 是目前评估非结构化输出的最佳实践。
  • RAGAS 提供了量化的指标,让你能像优化代码性能一样优化 Agent 智能。
AI Agent 开发实战手册
AI Engineer

AI Agent 开发实战手册

从 0 到 1 掌握 AI Agent 开发:涵盖自主计划、工具调用、MCP 协议与多智能体编排实战。

AI Agent 开发实战手册评估与测试

评估与测试 (Evaluation)

AI Agent 最大的问题是不可预测性。昨天能跑通的代码,今天可能就报错。 为了将 Agent 推向生产环境,我们必须建立一套评估体系(Evals)。

Prompt Lab

把这章的知识,直接变成实战能力

进入交互式实验室,用真实任务练 Prompt,10 分钟快速上手。

进入 Prompt Lab →

#1. 为什么 Unit Test 不够用了?

传统的单元测试是确定性的:assert add(1, 1) == 2。 但在 Agent 中,ask("你好") 每次返回的文本都不一样。我们无法用字符串匹配来测试。

我们需要从 Syntax Match (语法匹配) 转向 Semantic Match (语义匹配)


#2. LLM-as-a-Judge (用魔法打败魔法)

既然只有 LLM 能理解 LLM 的输出,那就用一个更强的 LLM 来充当裁判。

#示例:评估客服回答的准确性

输入

  • Question: "如何重置密码?"
  • Ground Truth (标准答案): "点击登录页的'忘记密码'链接。"
  • Agent Answer: "亲,您可以在登录页面找到忘记密码的按钮哦。"

裁判 Prompt:

"请对比 Agent Answer 和 Ground Truth。虽然措辞不同,但核心语义是否一致?如果是,输出 1,否则输出 0。"


#3. RAGAS:RAG 系统的评分标准

RAGAS (Retrieval Augmented Generation Assessment) 是目前最流行的 RAG 评估框架。它定义了几个核心指标:

  1. Faithfulness (忠实度): 回答是否完全基于检索到的 Context?(检测幻觉)
  2. Answer Relevance (回答相关性): 回答是否解决了用户的问题?
  3. Context Precision (上下文精确度): 检索到的文档中有多少是有用的?

#使用 RAGAS (Python)

python
from ragas import evaluate from ragas.metrics import faithfulness, answer_relevancy from datasets import Dataset data = { 'question': ['How to reset password?'], 'answer': ['Go to login page and click forgot password.'], 'contexts': [['Reset password guide: 1. Go to login...']], 'ground_truth': ['Click forgot password on login screen.'] } dataset = Dataset.from_dict(data) results = evaluate( dataset = dataset, metrics = [faithfulness, answer_relevancy] ) print(results) # {'faithfulness': 0.99, 'answer_relevancy': 0.95}

#4. 建立回归测试集 (Golden Dataset)

不要指望每次都人工看日志。你需要维护一个包含 50-100 个典型问题的黄金数据集

每次修改 Agent 的 Prompt 或逻辑后,自动跑一遍这个数据集,观察 RAGAS 分数的变化。

  • 分数涨了 -> 可以发布。
  • 分数跌了 -> 回滚。

#小结

  • 没有 Evals 就没有生产力。盲目优化 Prompt 只是在“炼丹”。
  • LLM-as-a-Judge 是目前评估非结构化输出的最佳实践。
  • RAGAS 提供了量化的指标,让你能像优化代码性能一样优化 Agent 智能。

常见问题

开发 AI Agent 需要掌握哪些编程语言?
首选 Python 或 TypeScript。Python 是 AI 生态的基石,而 TypeScript 在开发 MCP Server 和网页端交互时效率极高。借助 Cursor 等 AI 原生编辑器,编程门槛已大幅降低。
MCP 协议目前支持哪些模型?
MCP 是开放协议,目前对 Claude 3.5 系列支持最完美。通过 MCP Proxy,GPT-4o 和 Gemini 也可以间接访问 MCP Server 数据源。
AI Agent 会导致程序员失业吗?
不会,但会改变程序员的工作内容。未来的开发者将从“写代码”转向“管理 Agent 团队”,重点在于系统架构设计、复杂逻辑校验和 Agent 的提示词优化。