AI Agent评估体系

1. Agent评估 vs 传统LLM评估

传统LLM评估是输入-输出对的评估:

输入 → LLM → 输出 → 评分

但AI Agent评估必须覆盖多步骤会话

用户意图 → Agent决策 → 工具调用 → 状态更新 → 再次决策 → ... → 最终结果

1.1 复合错误率问题

这是Agent评估最核心的数学问题:

一个20步工作流,每一步可靠性95%,整体成功率仅为 36%

这意味着:

  • 每一步的小失误会复合放大
  • 评估必须覆盖过程质量,而非仅结果质量
  • 需要识别错误发生在哪一步

1.2 评估维度

维度评估内容方法
Agent级工具选择、推理质量人工标注 + LLM-as-judge
流程级任务完成率、步骤数端到端测试
系统级延迟、成本、可用性基础设施监控

2. 评估方法

2.1 生产数据驱动评估

核心思想:用真实生产数据评估,而非合成测试用例

# 评估流程
1. 捕获真实用户会话trace
2. 人工标注关键决策点
3. 识别失败模式
4. 构建评估用例库
5. 持续迭代

优势

  • 覆盖真实分布(合成数据无法覆盖长尾)
  • 自我更新(用户行为变化,评估也跟着变)
  • 节省标注成本

2.2 人工标注

# 标注维度
ANNOTATION_DIMENSIONS = {
    "goal_achievement": "任务是否完成",
    "tool_selection": "工具选择是否正确",
    "reasoning_quality": "推理过程是否合理",
    "safety": "是否有安全隐患",
    "efficiency": "步骤是否过于冗长"
}

质量标准:标注者需经过培训,一致性检验(Kappa > 0.7)

2.3 LLM-as-Judge

使用强模型评估弱模型输出:

# 示例prompt
EVAL_PROMPT = """
你是一个AI助手评估员。请评估以下Agent响应的质量。
 
用户问题:{user_query}
Agent响应:{agent_response}
评估维度:{dimension}
 
评分标准:
- 5分:完全符合要求
- 4分:基本符合,有小瑕疵
- 3分:部分符合,有明显问题
- 2分:基本不符合
- 1分:完全不符合
 
请给出评分和简要理由。
"""

注意:LLM-as-Judge本身有偏差,需结合人工标注验证。

2.4 自定义评估规则

# 规则示例
RULES = [
    # 安全规则
    Rule("no_pii_exposure", "不应暴露个人隐私信息"),
    Rule("no_dangerous_content", "不应生成有害内容"),
    
    # 功能规则
    Rule("tool_called_correctly", "工具调用参数正确"),
    Rule("max_steps_not_exceeded", "不超过最大步数限制"),
    Rule("no_infinite_loop", "不陷入重复模式"),
    
    # 质量规则
    Rule("response_coherent", "响应逻辑连贯"),
    Rule("addresses_user_intent", "回应用户意图")
]

3. 评估流水线

3.1 六步评估循环

Instrument → Identify → Build Eval Cases → CI Gate → Weekly Annotation → Automate
  1. Instrument:捕获完整trace
  2. Identify:人工审查50个会话,识别top 3失败类别
  3. Build Eval Cases:将失败案例转为评估用例(20个足够起步)
  4. CI Gate:将评估嵌入部署流程,阻塞关键回归
  5. Weekly Annotation:每周人工标注新数据
  6. Automate:逐步自动化评估流程

3.2 评估用例格式

# 评估用例结构
EVAL_CASE = {
    "id": "case_001",
    "category": "tool_selection_error",
    "input": {
        "user_message": "查询北京市天气",
        "context": {"location": "北京"}
    },
    "expected": {
        "tool": "weather_api",
        "params": {"city": "北京"}
    },
    "ground_truth": {
        "success": True,
        "response": "北京今天晴,温度15-25度"
    }
}

3.3 回归检测与告警

# 回归检测配置
REGRESSION_CONFIG = {
    "metrics": ["task_completion_rate", "avg_steps", "cost_per_task"],
    "thresholds": {
        "task_completion_rate": {"min": 0.85, "alert": 0.80},
        "cost_per_task": {"max": 0.50, "alert": 0.40}
    },
    "window": "7d",  # 7天滚动窗口
    "comparison": "previous_week"  # 与上周对比
}

4. 评估平台选择

4.1 平台对比

平台评估能力成本适用场景
LangSmith内置评估套件按trace计费LangChain项目
RAGASRAG专项评估开源免费RAG系统
自建完全可控运维成本高大型企业

4.2 选择标准

关键问题:这个平台是为Agent设计的,还是从LLM监控改装的?

架构差异导致:

  • 专为Agent设计的平台:天然覆盖多步骤、工具调用、状态追踪
  • 改装平台:需要额外配置才能捕获这些信息

5. 常见失败模式

5.1 工具描述不匹配

问题:工具描述与实际功能不一致,导致Agent调用错误工具

解决

# 严格的工具描述验证
TOOL_SCHEMA = {
    "name": "weather_api",
    "description": "查询指定城市的天气信息,返回温度、湿度、风速",
    "parameters": {
        "type": "object",
        "properties": {
            "city": {
                "type": "string",
                "description": "城市名称,必须是官方标准名称"
            }
        },
        "required": ["city"]
    }
}

5.2 循环检测

问题:Agent陷入重复模式,浪费Token

解决

def detect_loop(trace, max_identical_actions=3):
    """检测重复动作模式"""
    action_sequence = [span.action for span in trace.spans]
    for i in range(len(action_sequence) - max_identical_actions + 1):
        if len(set(action_sequence[i:i+max_identical_actions])) == 1:
            return True
    return False

6. 实施建议

6.1 起步路径

第1周:Instrument - 捕获完整trace
第2周:Identify - 人工审查50个会话
第3周:Build - 构建20个评估用例
第4周:CI Gate - 嵌入部署流程
持续:Weekly Annotation - 每周扩充评估集

6.2 评估集规模

阶段评估集大小说明
起步20个覆盖主要失败模式
成熟100个覆盖常见场景
生产500+持续扩充

相关内容

参考资料