Skip to content

68. 当前 AI Agent 有哪些主流的评价指标? ​

难度 P1 高频 · 岗位 应用 · 频率 ★★★★☆ · 预计阅读 8 min 公司 OpenAI · Anthropic 相关题 Q60 设计模式 · Q71 用户满意度

本题阅读地图 ​

  1. 面试场景还原 — 1 min
  2. TL;DR 速记 — 30 sec
  3. 图解 — 30 sec
  4. 详细解析 — 5 min
  5. 常见踩坑与反例 — 1 min
  6. 面试官可能继续追问 — 1 min

面试场景还原 ​

👔面试官:你们团队开发的 AI 客服 Agent 上线三个月了,老板说「用户满意度下降了 15%」,让你负责排查和优化。你会从哪里入手?

🙋‍♂️我:先看日志,分析哪些场景用户不满意,然后针对性优化。

👔面试官:对,但用户满意度是黑盒指标——下降了 15%,到底是什么原因?是 Agent 没理解用户意图?还是工具调用错了?还是回答质量差?你能设计一套评估体系,帮助快速定位问题吗?

🙋‍♂️我:呃……可以监控工具调用成功率?还有用户对话的反馈?

👔面试官:很好。完整的 Agent 评估要从四个维度设计:任务成功率看结果,工具调用准确率看执行,推理质量看过程,用户满意度看体验。而且过程指标和结果指标要结合起来用。你能具体讲讲怎么设计吗?


TL;DR 速记 ​

  • 评估原则:过程 + 结果双维度,用过程指标诊断问题,用结果指标评估价值
  • 维度一 任务成功率:目标达成率、轨迹精确度、完成效率
  • 维度二 工具调用准确率:工具选择准确率、参数准确率、结果理解准确率
  • 维度三 推理质量:逻辑一致性、任务分解质量、错误恢复能力
  • 维度四 用户满意度:显式反馈(点赞)、隐式反馈(重试/放弃)、转人工率
  • 关键机制:分层评估(链路层、模型层、用户层)、A/B 测试、持续监控
  • 工程实践:指标体系 Dashboard、告警机制、根因分析流程

图解 ​

图 1:Agent 评估体系四层架构 ​

图 2:问题诊断流程 ​


详细解析 ​

为什么需要多维度评估? ​

单维度评估的局限:

只看指标问题后果
只看用户满意度黑盒,无法定位问题知道有问题但不知道怎么改
只看任务成功率忽略了用户体验任务完成了但用户不满意
只看工具准确率忽略了整体目标每个工具都用对了但最终目标没达成
只看推理质量主观难量化评估成本高,难以规模化

多维度评估的价值:

用户满意度下降 15%
    ↓
查过程指标
    ├── 工具调用准确率:从 95% → 87% ↓
    │   └── 根因:近期新增工具,描述不清
    │   └── 解决:优化工具描述,加示例
    ├── 推理质量:逻辑一致性从 92% → 78% ↓
    │   └── 根因:换了轻量化模型
    │   └── 解决:关键步骤切回大模型
    └── 任务成功率:从 88% → 85% ↓
        └── 根因:新场景覆盖不足
        └── 解决:补充训练数据

维度一:任务成功率 ​

定义:端到端任务完成情况,是最核心的结果指标。

三级指标:

层级指标定义计算方式
L1 目标达成Task Success Rate用户核心需求是否满足成功会话 / 总会话
L2 轨迹精确Trajectory Accuracy执行路径是否符合预期正确步骤 / 总步骤
L3 完成效率Completion Efficiency完成任务的资源消耗步数、时间、成本

目标达成率细分:

python
class TaskSuccessEvaluator:
    """任务成功评估器"""

    def evaluate(self, session: Session) -> TaskSuccessResult:
        # 1. 目标达成判断( hardest )
        goal_achieved = self.check_goal_achievement(
            user_intent=session.user_intent,
            final_response=session.final_response,
            actions=session.actions
        )

        # 2. 轨迹精确度
        trajectory_score = self.compare_trajectory(
            actual=session.executed_steps,
            expected=session.optimal_path
        )

        # 3. 效率指标
        efficiency = {
            "steps": len(session.executed_steps),
            "tokens_consumed": session.total_tokens,
            "duration_ms": session.end_time - session.start_time,
            "cost_usd": session.total_cost
        }

        return TaskSuccessResult(
            goal_achieved=goal_achieved,
            trajectory_score=trajectory_score,
            efficiency=efficiency
        )

    def check_goal_achievement(self, user_intent: str,
                               final_response: str, actions: list) -> bool:
        """判断目标是否达成"""
        # 方法 1:人工标注(ground truth)
        # 方法 2:LLM 自动评估
        prompt = f"""
        用户原始需求:{user_intent}
        Agent 执行动作:{actions}
        最终回复:{final_response}

        请判断用户的核心需求是否被满足。
        只回答 YES 或 NO。
        """
        result = llm.generate(prompt)
        return "YES" in result

维度二:工具调用准确率 ​

定义:Agent 选择和使用工具的正确性,是 Agent 失败的最常见原因。

三级指标:

层级指标定义典型值
工具选择Tool Selection Accuracy是否选对了工具目标 > 95%
参数填写Parameter Accuracy参数是否正确目标 > 98%
结果理解Result Comprehension是否正确理解工具返回目标 > 90%

评估方法:

python
class ToolUseEvaluator:
    """工具使用评估器"""

    def evaluate_tool_selection(self, session: Session) -> float:
        """评估工具选择准确率"""
        correct = 0
        total = 0

        for step in session.steps:
            if step.type == "tool_call":
                total += 1
                # 对比实际选择和期望选择
                if step.selected_tool == step.expected_tool:
                    correct += 1
                else:
                    # 记录错误分类
                    self.log_error(
                        error_type="wrong_tool",
                        expected=step.expected_tool,
                        actual=step.selected_tool,
                        context=step.context
                    )

        return correct / total if total > 0 else 1.0

    def evaluate_parameter_accuracy(self, session: Session) -> float:
        """评估参数准确率"""
        correct = 0
        total = 0

        for step in session.steps:
            if step.type == "tool_call":
                total += 1
                # 参数验证
                if self.validate_params(step.tool_name, step.parameters):
                    correct += 1
                else:
                    self.log_error(
                        error_type="wrong_params",
                        tool=step.tool_name,
                        params=step.parameters
                    )

        return correct / total if total > 0 else 1.0

常见工具调用错误:

错误类型占比根因解决策略
工具选择错误40%工具描述不清、场景模糊优化描述、增加示例
参数格式错误30%Schema 复杂、类型错误加强校验、类型检查
必填参数缺失20%必填项标识不清明确标注必填项
参数值错误10%参数值不在枚举范围值域检查、容错设计

维度三:推理质量 ​

定义:Agent 中间思考过程的合理性,反映 Agent 的「思维能力」。

评估维度:

维度指标评估方法
逻辑一致性Consistency ScoreLLM 判断思考过程是否前后矛盾
任务分解质量Decomposition Quality子任务是否合理、完整、无冗余
错误恢复能力Recovery Ability遇到错误能否正确调整策略
探索效率Exploration Efficiency是否快速收敛到正确路径

推理质量评估示例:

python
class ReasoningEvaluator:
    """推理质量评估器"""

    async def evaluate_consistency(self, session: Session) -> float:
        """评估逻辑一致性"""
        thoughts = [step.thought for step in session.steps if step.thought]

        # 使用 LLM 判断一致性
        prompt = f"""
        请评估以下推理过程的逻辑一致性。

        推理步骤:
        {thoughts}

        检查:
        1. 是否有前后矛盾的陈述?
        2. 推理过程是否符合逻辑?
        3. 结论是否基于前面的推理?

        评分 0-100,只返回数字。
        """
        score = int(llm.generate(prompt))
        return score / 100

    def evaluate_decomposition(self, plan: Plan, execution: Execution) -> float:
        """评估任务分解质量"""
        metrics = {
            "completeness": self.check_completeness(plan, execution),
            "redundancy": self.check_redundancy(execution),
            "granularity": self.check_granularity(plan)
        }

        # 综合评分
        return sum(metrics.values()) / len(metrics)

维度四:用户满意度 ​

定义:最终用户对 Agent 服务的满意程度,是终极业务指标。

显式反馈:

指标定义采集方式
点赞率用户主动点赞比例会话结束后的 👍/👎
评分用户给出的 1-5 星评分问卷调查
NPS净推荐值「你会推荐吗?」0-10 分

隐式反馈:

指标定义业务含义
重试率用户重复询问比例Agent 没回答好
会话放弃率用户中途离开比例体验差或没解决问题
转人工率用户要求转人工比例Agent 解决不了
平均会话轮数每会话的对话轮数效率指标,过高说明啰嗦

满意度综合计算:

python
class UserSatisfactionEvaluator:
    """用户满意度评估器"""

    def calculate_satisfaction(self, session: Session) -> SatisfactionScore:
        # 显式反馈(权重 40%)
        explicit = 0
        if session.user_rating:
            explicit = session.user_rating / 5 * 0.4

        # 隐式反馈(权重 60%)
        implicit = 0

        # 未重试 +20%
        if not session.has_retry:
            implicit += 0.2

        # 未转人工 +20%
        if not session.transferred_to_human:
            implicit += 0.2

        # 会话完成(未放弃)+20%
        if session.completed:
            implicit += 0.2

        return SatisfactionScore(
            overall=explicit + implicit,
            explicit=explicit,
            implicit=implicit,
            components={
                "rating": session.user_rating,
                "has_retry": session.has_retry,
                "transferred": session.transferred_to_human,
                "completed": session.completed
            }
        )

评估体系设计实践 ​

分层评估 Dashboard:

┌─────────────────────────────────────────────────────────────┐
│                    Agent 评估 Dashboard                      │
├─────────────────────────────────────────────────────────────┤
│  用户层                                                       │
│  ├── 满意度: 87% ████████░░ (目标: 90%) [告警]               │
│  ├── 转人工率: 8%  ████████░░ (目标: <10%) [正常]             │
│  └── 重试率: 12%   ██████████░░ (目标: <15%) [正常]          │
├─────────────────────────────────────────────────────────────┤
│  任务层                                                       │
│  ├── 目标达成率: 85% ████████░░ (目标: 90%) [告警]           │
│  ├── 轨迹精确度: 92% █████████░░ (目标: 90%) [正常]          │
│  └── 平均步数: 4.2   ██████░░░░ (目标: <5) [正常]            │
├─────────────────────────────────────────────────────────────┤
│  工具层                                                       │
│  ├── 工具选择准确率: 94% █████████░░ (目标: 95%) [接近告警]   │
│  ├── 参数准确率: 97%   ███████████░ (目标: 98%) [正常]       │
│  └── 结果理解准确率: 89% ████████░░ (目标: 90%) [接近告警]   │
├─────────────────────────────────────────────────────────────┤
│  推理层                                                       │
│  ├── 逻辑一致性: 88%  ████████░░ (目标: 90%) [接近告警]      │
│  └── 错误恢复率: 75%  ███████░░░ (目标: 80%) [告警]          │
└─────────────────────────────────────────────────────────────┘

根因分析流程:

python
class RootCauseAnalyzer:
    """根因分析器"""

    async def analyze(self, metric_drop: MetricDrop) -> List[RootCause]:
        """分析指标下降的根因"""
        causes = []

        # 1. 检查是否有新版本上线
        if self.has_new_deployment(metric_drop.time_range):
            causes.append(RootCause(
                type="deployment",
                description="新版本上线可能导致指标波动",
                confidence=0.7
            ))

        # 2. 检查工具调用错误
        tool_errors = self.analyze_tool_errors(metric_drop.sessions)
        if tool_errors.significant_increase:
            causes.append(RootCause(
                type="tool_error",
                description=f"{tool_errors.top_error_type} 错误增加",
                confidence=0.8,
                recommendation="检查工具描述和参数校验"
            ))

        # 3. 检查模型变化
        if self.has_model_change(metric_drop.sessions):
            causes.append(RootCause(
                type="model_change",
                description="模型切换可能导致推理质量变化",
                confidence=0.6
            ))

        return causes

A/B 测试框架:

python
class ABTestEvaluator:
    """A/B 测试评估器"""

    def compare_variants(self, variant_a: List[Session],
                        variant_b: List[Session]) -> ABTestResult:
        """对比两个变体的表现"""

        metrics = ["satisfaction", "success_rate", "tool_accuracy", "cost"]

        results = {}
        for metric in metrics:
            score_a = self.calculate_metric(variant_a, metric)
            score_b = self.calculate_metric(variant_b, metric)

            # 统计显著性检验
            p_value = self.significance_test(score_a, score_b)

            results[metric] = {
                "variant_a": score_a,
                "variant_b": score_b,
                "improvement": (score_b - score_a) / score_a,
                "p_value": p_value,
                "significant": p_value < 0.05
            }

        return ABTestResult(results=results)

常见踩坑与反例 ​

踩坑 1:只关注最终满意度 ​

错误做法: 只监控用户满意度,忽视过程指标。

后果: 知道有问题但无法定位,优化无从下手。

踩坑 2:指标定义模糊 ​

错误做法: 「任务成功」没有明确定义,不同人理解不同。

正确做法: 指标要有明确的计算逻辑和判定标准。

踩坑 3:评估成本过高 ​

错误做法: 每个指标都需要人工标注,无法规模化。

正确做法: 采用自动化评估 + 抽样人工校验相结合的方式。

踩坑 4:忽视长尾场景 ​

错误做法: 只看整体指标,忽视长尾场景的失败。

正确做法: 按场景、用户类型分层分析,关注长尾。

踩坑 5:指标之间冲突 ​

错误做法: 只优化单一指标,导致其他指标下降。

正确做法: 采用多目标优化,平衡成本、效果、体验。


面试官可能继续追问 ​

  • 追问 1:怎么评估任务是否成功?(目标达成判断) 答题要点:人工标注(ground truth)、LLM 自动评估(用更强的模型判断)、规则匹配(检查关键信息是否包含)、用户确认(会话结束询问是否解决)。

  • 追问 2:工具调用错误怎么分类和归因? 答题要点:分类:工具选择错误、参数格式错误、必填参数缺失、参数值错误;归因:检查工具描述是否清晰、Schema 是否合理、参数校验是否完善。

  • 追问 3:怎么设计 Agent 的 A/B 测试? 答题要点:明确假设(如「新 Prompt 提升 5% 满意度」)、随机分流、确定样本量(统计功效)、多维度评估(不能只看单一指标)、统计显著性检验。

  • 追问 4:怎么平衡评估成本和评估质量? 答题要点:自动化评估覆盖 80% 场景(LLM 判断、规则匹配)、人工抽样标注覆盖 20% 关键场景、优先级排序(核心指标优先)、持续迭代(根据反馈优化评估方法)。


面试总结 ​

Agent 评估体系是工程化的核心能力。面试时强调三点:

  1. 四维评估架构:任务成功率(结果)+ 工具调用准确率(执行)+ 推理质量(过程)+ 用户满意度(体验),层层递进
  2. 过程+结果双维度:用过程指标(工具、推理)诊断问题,用结果指标(任务、满意度)评估价值,缺一不可
  3. 工程实践:指标体系 Dashboard、根因分析流程、A/B 测试框架、持续监控告警

记住:没有评估就无法优化。面试时展示你能设计完整的评估体系,并用评估数据驱动优化决策的能力。

章节首页 · ← Q67 · Q69 →

最后更新2026-05-05
难度P1
频率high
阅读8 min
主题agent / evaluation / metrics
觉得有帮助?把这个链接转给正在求职的朋友 · 用 Ctrl + K 全站搜索其它题