在实际 AI Agent 开发中,很多团队都经历过这样的场景:测试环境表现完美的 Agent,一到生产环境就频繁出错,甚至同一个任务在不同时间运行结果都不一致。这种"薛定谔测试"现象的根本原因,是传统软件测试方法在面对 AI Agent 的非确定性和多轮交互特性时已经全面失效。

本文将从生产级 Agent 性能评估的实际需求出发,系统拆解立体化评测体系,涵盖从任务成功率到轨迹评估的完整链路,并提供可落地的代码断言方案。无论你是正在开发客服 Agent、编程助手还是研究分析工具,这套方法论都能帮助你建立可靠的评估基准。

1. 为什么传统测试方法对 AI Agent 失效

1.1 AI Agent 的两个核心特性

传统软件测试基于确定性假设:相同的输入必然产生相同的输出。但 AI Agent 彻底打破了这一假设。

特性一:非确定性输出

# 传统确定性函数
def calculate_tax(income):
    return income * 0.1  # 永远返回相同结果

# AI Agent 的非确定性
def ai_agent_respond(prompt):
    return model.generate(prompt)  # 结果取决于:
    # - 模型版本和参数配置
    # - 温度参数(temperature)设置
    # - 上下文历史的影响
    # - 随机数种子

在实际项目中,同一个代码生成任务运行10次可能产生10种不同实现。有些能正常运行,有些存在边界问题,有些甚至包含安全漏洞。传统基于固定断言的测试方法无法处理这种多样性。

特性二:多轮交互的蝴蝶效应

Agent 任务通常是多步骤的,早期的小错误会在后续步骤中被放大:

轮1: 读取用户需求 → 正确
轮2: 分析依赖关系 → 正确(但漏掉一个次要依赖)
轮3: 生成代码框架 → 正确
...
轮8: 运行测试 → 失败(因为轮2漏掉的依赖)

这种错误传播模式使得简单的输入输出测试不够用,需要评估完整的执行轨迹。

1.2 评估系统的商业价值

建立系统化评估体系不是增加开销,而是提升开发效率的关键投资:

维度 无评估团队 有评估团队 差距倍数
模型迁移测试 2-3周手动测试 2-3天自动化验证 5-10倍
线上事故频率 用户发现后紧急修复 上线前拦截大部分问题 显著降低
质量沟通效率 "感觉变慢了" "P95延迟从1.2s升至1.8s" 可量化 vs 主观
技术债积累 不敢重构,代码僵化 自信重构,持续优化 长期健康度差异

评估体系像复利投资,前期投入在长期会带来指数级回报。

2. 构建生产级评估系统的核心组件

2.1 评估架构的五要素

完整的 Agent 评估系统包含五个核心组件:

Task(任务) :明确的"考题"而非模糊的需求

# 错误示例:模糊任务
task: "帮我写个排序算法"  # ❌ 太模糊

# 正确示例:明确任务
task:
  id: "bubble-sort-implementation"
  description: "实现冒泡排序算法"
  requirements:
    - 函数名必须为 `bubble_sort`
    - 输入为整数列表
    - 输出为升序排列的列表
    - 不能使用内置排序函数
  success_criteria:
    - 通过所有单元测试用例
    - 代码符合PEP8规范
    - 包含适当的注释
  files:
    - path: "/tmp/sort.py"
      must_exist: true

Trial(试验) :多次运行统计而非单次测试

由于 Agent 的非确定性,单次测试结果不可靠。需要通过多次试验计算成功率:

def evaluate_agent(task, num_trials=10):
    results = []
    for i in range(num_trials):
        # 每次试验前重置环境
        clean_environment()
        result = agent.run(task)
        results.append(result)
    
    success_count = sum(1 for r in results if r.passed)
    success_rate = success_count / num_trials
    return success_rate

# 统计学上可靠的评估
success_rate = evaluate_agent(task, num_trials=10)
print(f"任务成功率: {success_rate:.1%}")

Grader(评分器) :多维度评估而非二元判断

Transcript vs Outcome :过程记录与真实结果的区别

Harness(执行框架) :模型+工具的整体评估

2.2 单轮与多轮评估的关键差异

单轮评估适合测试知识检索和简单推理:

single_turn_task:
  input: "中国的首都是哪个城市?"
  expected_output: "北京"
  graders:
    - type: exact_match
      tolerance: "语义相似即可"

多轮评估测试规划、执行和纠错能力:

multi_turn_task:
  scenario: "用户技术支持"
  turns:
    - user: "我的订单还没收到"
      agent_actions:
        - "查询订单状态"
        - "提供物流信息"
    - user: "已经延迟3天了"
      agent_actions:
        - "检查延迟原因" 
        - "提出解决方案"
  success_criteria:
    - "订单状态被正确查询"
    - "提供了合理的解决方案"
    - "用户表示满意"

3. 三种评分器的实战应用

3.1 Code-based Grader:快速可靠的守门员

Code-based Grader 适合有明确客观标准的场景:

class CodeBasedGrader:
    def grade_code_task(self, agent_output, task):
        score = 0.0
        total_weight = 0.0
        
        # 1. 功能正确性检查(权重40%)
        if self.run_unit_tests(agent_output.code):
            score += 0.4
        total_weight += 0.4
        
        # 2. 代码规范检查(权重30%)
        style_score = self.check_code_style(agent_output.code)
        score += style_score * 0.3
        total_weight += 0.3
        
        # 3. 安全扫描(权重30%)
        if self.security_scan(agent_output.code):
            score += 0.3
        total_weight += 0.3
        
        return score / total_weight
    
    def run_unit_tests(self, code):
        """运行单元测试验证功能正确性"""
        test_cases = [
            {"input": [3, 1, 2], "expected": [1, 2, 3]},
            {"input": [], "expected": []},
            {"input": [5], "expected": [5]}
        ]
        
        for test_case in test_cases:
            result = execute_code(code, test_case["input"])
            if result != test_case["expected"]:
                return False
        return True
    
    def check_code_style(self, code):
        """检查代码风格和质量"""
        violations = []
        
        # 使用静态分析工具
        if not self.run_flake8(code):
            violations.append("代码风格问题")
        
        # 检查注释覆盖率
        comment_density = self.calculate_comment_density(code)
        if comment_density < 0.1:  # 低于10%
            violations.append("注释不足")
            
        return 1.0 - len(violations) * 0.1  # 每个问题扣10%

Code-based Grader 的优势是速度快、成本低、结果确定,但无法处理需要语义理解的场景。

3.2 Model-based Grader:灵活语义评估

对于主观质量评估,需要使用基于大模型的评分器:

class ModelBasedGrader:
    def __init__(self, model_client):
        self.model = model_client
    
    def grade_conversation_quality(self, transcript):
        """评估对话质量"""
        rubric = """
        请评估以下客服对话的质量(1-5分):
        
        维度1:问题解决能力(权重40%)
        - 是否准确识别用户问题
        - 是否提供有效解决方案
        - 解决方案是否完整
        
        维度2:沟通技巧(权重30%)
        - 语气是否专业且友好
        - 表达是否清晰易懂
        - 是否展现同理心
        
        维度3:效率(权重30%)
        - 是否避免重复提问
        - 是否在合理轮数内解决问题
        - 信息传递是否直接有效
        
        请输出JSON格式:
        {
            "problem_solving": 4,
            "communication": 3, 
            "efficiency": 4,
            "overall": 3.7,
            "reasoning": "具体分析..."
        }
        """
        
        prompt = f"{rubric}\n\n对话记录:\n{transcript}"
        response = self.model.generate(prompt)
        return self.parse_score(response)
    
    def grade_code_quality(self, code):
        """评估代码质量"""
        rubric = """
        评估代码质量(1-5分):
        
        可读性(25%):
        - 变量命名是否清晰
        - 函数结构是否合理
        - 注释是否恰当
        
        可维护性(25%):
        - 是否遵循DRY原则
        - 模块化程度如何
        - 错误处理是否完善
        
        性能(25%):
        - 算法复杂度是否合理
        - 有无明显性能问题
        
        安全性(25%):
        - 有无安全漏洞
        - 输入验证是否充分
        """
        
        prompt = f"{rubric}\n\n代码:\n{code}"
        response = self.model.generate(prompt)
        return self.parse_score(response)

Model-based Grader 的关键优化策略:

# 1. 逃生门机制:避免LLM不懂装懂
prompt = """
评估Agent回复的准确性。
如果信息不足无法判断,请返回"INSUFFICIENT_INFO"。

输入:{query}
Agent回复:{response}

请判断:PASS/FAIL/INSUFFICIENT_INFO
"""

# 2. 维度拆分:避免评分混淆
def grade_separate_dimensions(transcript):
    dimensions = {
        "accuracy": "评估信息准确性",
        "completeness": "评估信息完整性", 
        "professionalism": "评估专业程度"
    }
    
    scores = {}
    for dim, criteria in dimensions.items():
        prompt = f"仅评估{criteria}:1-5分\n\n{transcript}"
        scores[dim] = self.model.grade(prompt)
    
    return scores

# 3. 定期校准:防止评分漂移
def calibrate_grader():
    """每月与人类专家对比校准"""
    sample_tasks = load_calibration_samples(100)
    
    disagreements = []
    for task in sample_tasks:
        llm_score = self.grade(task)
        human_score = human_expert.grade(task)
        
        if abs(llm_score - human_score) > 1.0:
            disagreements.append({
                "task": task,
                "llm": llm_score, 
                "human": human_score
            })
    
    if len(disagreements) > 15:  # 超过15%分歧需要调整
        self.adjust_prompt_based_on_disagreements(disagreements)

3.3 Human Grader:黄金标准参考

人类评估虽然成本高,但是不可或缺的校准基准:

class HumanEvaluationPipeline:
    def run_calibration_study(self, num_samples=100):
        """运行校准研究"""
        samples = self.select_representative_samples(num_samples)
        
        human_scores = self.collect_human_ratings(samples)
        llm_scores = self.collect_llm_ratings(samples)
        
        # 计算一致性指标
        agreement_metrics = self.calculate_agreement(human_scores, llm_scores)
        
        if agreement_metrics["kappa"] < 0.6:
            self.retrain_llm_grader(human_scores, llm_scores)
        
        return agreement_metrics
    
    def collect_human_ratings(self, samples):
        """收集人类评分"""
        ratings = {}
        
        for sample in samples:
            # 使用多名评审员减少主观偏差
            judge_scores = []
            for judge in self.judges:
                score = judge.evaluate(sample)
                judge_scores.append(score)
            
            # 去除极端值后取平均
            filtered_scores = self.remove_outliers(judge_scores)
            ratings[sample.id] = sum(filtered_scores) / len(filtered_scores)
        
        return ratings

3.4 组合评分策略

复杂任务需要组合多种评分器:

composite_grader:
  graders:
    - type: code_based
      name: "功能正确性"
      weight: 0.4
      checks:
        - unit_tests_pass: true
        - integration_tests_pass: true
      required: true  # 必须通过
    
    - type: model_based  
      name: "代码质量"
      weight: 0.3
      rubric: "code_quality_rubric.md"
    
    - type: code_based
      name: "安全扫描"
      weight: 0.2
      tools:
        - bandit
        - semgrep
    
    - type: model_based
      name: "文档质量"
      weight: 0.1
      rubric: "documentation_quality.md"
  
  scoring_strategy: "weighted_sum"
  passing_threshold: 0.8
  required_grader: "功能正确性"  # 该评分器必须通过

4. 针对不同类型 Agent 的评估策略

4.1 编程 Agent 评估实战

编程 Agent 需要超越"代码能跑"的简单标准:

class ProgrammingAgentEvaluator:
    def evaluate_code_task(self, task, agent_output):
        """全面评估编程任务"""
        evaluation = {
            "functional_correctness": self.eval_functional(task, agent_output),
            "code_quality": self.eval_quality(agent_output.code),
            "security": self.eval_security(agent_output.code),
            "efficiency": self.eval_efficiency(agent_output.code),
            "maintainability": self.eval_maintainability(agent_output.code)
        }
        
        # 加权评分
        weights = {
            "functional_correctness": 0.35,
            "code_quality": 0.25, 
            "security": 0.20,
            "efficiency": 0.10,
            "maintainability": 0.10
        }
        
        total_score = sum(evaluation[dim] * weights[dim] 
                         for dim in evaluation)
        
        return {
            "score": total_score,
            "breakdown": evaluation,
            "passed": total_score >= 0.8
        }
    
    def eval_functional(self, task, agent_output):
        """功能正确性评估"""
        score = 0.0
        
        # 1. 基础单元测试
        if self.run_unit_tests(agent_output.code, task.test_cases):
            score += 0.6
        
        # 2. 边界情况测试
        if self.run_edge_case_tests(agent_output.code):
            score += 0.2
            
        # 3. 性能基准测试
        if self.performance_benchmark(agent_output.code) < task.performance_target:
            score += 0.2
            
        return score
    
    def eval_quality(self, code):
        """代码质量评估"""
        quality_metrics = {}
        
        # 静态分析指标
        quality_metrics["cyclomatic_complexity"] = self.calculate_complexity(code)
        quality_metrics["code_smells"] = self.detect_code_smells(code)
        quality_metrics["test_coverage"] = self.measure_test_coverage(code)
        
        # LLM 质量评估
        llm_quality_score = self.llm_grader.grade_code_quality(code)
        
        return self.combine_quality_metrics(quality_metrics, llm_quality_score)

4.2 对话 Agent 的用户模拟评估

对话 Agent 需要模拟真实用户交互:

class UserSimulator:
    def __init__(self, personality_profile):
        self.personality = personality_profile
        self.patience_level = 3  # 初始耐心值
        self.conversation_history = []
    
    def simulate_user(self, agent_response, turn_number):
        """模拟用户响应"""
        # 根据Agent回复更新用户状态
        frustration_increase = self.assess_frustration(agent_response)
        self.patience_level -= frustration_increase
        
        # 根据当前状态生成响应
        if self.patience_level <= 0:
            return "我要投诉!让你们经理来!", "escalated"
        
        if turn_number > 8:  # 对话过长
            return "太慢了,我不等了!", "timeout"
            
        # 正常业务逻辑
        response = self.generate_appropriate_response(agent_response)
        return response, "continuing"
    
    def assess_frustration(self, agent_response):
        """评估用户挫败感增加程度"""
        frustration_signals = {
            "重复提问": 0.8,
            "模糊回应": 0.6, 
            "态度生硬": 0.7,
            "长时间等待": 0.5
        }
        
        total_frustration = 0
        for signal, weight in frustration_signals.items():
            if self.detect_signal(agent_response, signal):
                total_frustration += weight
                
        return total_frustration

class DialogueEvaluator:
    def evaluate_conversation(self, conversation_log):
        """评估完整对话"""
        metrics = {}
        
        # 结果层:任务是否完成
        metrics["task_success"] = self.check_task_completion(conversation_log)
        
        # 效率层:对话效率
        metrics["efficiency"] = self.measure_efficiency(conversation_log)
        
        # 体验层:用户体验
        metrics["user_experience"] = self.assess_user_experience(conversation_log)
        
        # 综合评分
        overall_score = (
            metrics["task_success"] * 0.5 +
            metrics["efficiency"] * 0.2 + 
            metrics["user_experience"] * 0.3
        )
        
        return {
            "overall_score": overall_score,
            "detailed_metrics": metrics,
            "conversation_analysis": self.analyze_conversation_flow(conversation_log)
        }

4.3 研究 Agent 的防幻觉评估

研究 Agent 最大的风险是产生看似合理但实际错误的信息:

class ResearchAgentEvaluator:
    def evaluate_research_output(self, research_report, sources):
        """评估研究报告质量"""
        evaluation = {}
        
        # 1. 扎实度检查(防幻觉)
        evaluation["groundedness"] = self.check_groundedness(research_report, sources)
        
        # 2. 覆盖率检查(防遗漏)
        evaluation["coverage"] = self.check_coverage(research_report, self.required_facts)
        
        # 3. 信源质量检查
        evaluation["source_quality"] = self.assess_source_quality(sources)
        
        # 4. 逻辑连贯性检查
        evaluation["coherence"] = self.assess_coherence(research_report)
        
        return evaluation
    
    def check_groundedness(self, report, sources):
        """检查每个声明是否有可靠来源支持"""
        claims = self.extract_claims(report)
        supported_claims = 0
        
        for claim in claims:
            if self.find_supporting_source(claim, sources):
                supported_claims += 1
            else:
                print(f"⚠️ 未找到支持的声明: {claim}")
        
        return supported_claims / len(claims) if claims else 1.0
    
    def check_coverage(self, report, required_facts):
        """检查是否覆盖所有必要信息"""
        covered_facts = []
        
        for fact in required_facts:
            if self.is_fact_covered(fact, report):
                covered_facts.append(fact)
        
        coverage_rate = len(covered_facts) / len(required_facts)
        
        # 输出缺失的关键信息
        missing_facts = set(required_facts) - set(covered_facts)
        if missing_facts:
            print(f"❌ 缺失关键信息: {missing_facts}")
            
        return coverage_rate

5. 处理非确定性的统计方法

5.1 pass@k 与 pass^k 的实战应用

理解两种统计指标的区别至关重要:

class StatisticalEvaluator:
    def calculate_pass_at_k(self, success_probability, k):
        """计算至少一次成功的概率"""
        return 1 - (1 - success_probability) ** k
    
    def calculate_pass_power_k(self, success_probability, k):
        """计算每次都必须成功的概率"""
        return success_probability ** k
    
    def recommend_evaluation_strategy(self, use_case):
        """根据应用场景推荐评估策略"""
        strategies = {
            "code_completion": {
                "metric": "pass@5",
                "trials": 5,
                "reason": "用户会从多个建议中选择"
            },
            "customer_service": {
                "metric": "pass^100", 
                "trials": 100,
                "reason": "每个用户都应得到正确服务"
            },
            "creative_writing": {
                "metric": "pass@10",
                "trials": 10,
                "reason": "创意任务需要多样性"
            },
            "financial_advice": {
                "metric": "pass^1000",
                "trials": 1000,
                "reason": "金融建议必须零失误"
            }
        }
        
        return strategies.get(use_case, {"metric": "pass@10", "trials": 10})
    
    def run_statistical_evaluation(self, agent, task, strategy):
        """运行统计评估"""
        results = []
        for i in range(strategy["trials"]):
            result = agent.run(task)
            results.append(result.passed)
        
        success_probability = sum(results) / len(results)
        
        if strategy["metric"] == "pass@k":
            score = self.calculate_pass_at_k(success_probability, strategy["trials"])
        else:  # pass^k
            score = self.calculate_pass_power_k(success_probability, strategy["trials"])
        
        return {
            "metric": strategy["metric"],
            "score": score,
            "success_probability": success_probability,
            "trials": strategy["trials"]
        }

5.2 环境隔离与可重复性

确保评估结果的可比性需要严格的环境控制:

class IsolatedEvaluationEnvironment:
    def __init__(self):
        self.cleanup_actions = []
    
    def prepare_environment(self, task):
        """准备干净的测试环境"""
        # 清理文件系统
        self.clean_workspace()
        
        # 重置数据库
        self.reset_database()
        
        # 清理缓存
        self.clear_caches()
        
        # 设置固定的随机种子
        self.set_deterministic_seeds()
        
        # 监控资源使用
        self.start_resource_monitoring()
    
    def run_trial(self, agent, task):
        """运行单次试验"""
        try:
            self.prepare_environment(task)
            
            # 运行任务
            start_time = time.time()
            result = agent.run(task)
            end_time = time.time()
            
            # 收集指标
            metrics = {
                "execution_time": end_time - start_time,
                "memory_usage": self.get_memory_usage(),
                "cpu_usage": self.get_cpu_usage(),
                "success": result.passed,
                "error_message": result.error if hasattr(result, 'error') else None
            }
            
            return metrics
            
        finally:
            self.cleanup_environment()
    
    def run_evaluation_campaign(self, agent, task, num_trials=100):
        """运行完整评估活动"""
        results = []
        
        for trial in range(num_trials):
            print(f"运行试验 {trial + 1}/{num_trials}")
            trial_result = self.run_trial(agent, task)
            results.append(trial_result)
            
            # 实时统计
            current_success_rate = sum(r['success'] for r in results) / len(results)
            print(f"当前成功率: {current_success_rate:.1%}")
        
        return self.analyze_results(results)

6. 生产环境评估的最佳实践

6.1 评估任务设计原则

设计高质量的评估任务是成功的关键:

class TaskDesignGuidelines:
    def validate_task_design(self, task):
        """验证任务设计质量"""
        issues = []
        
        # 检查明确性
        if not self.is_task_unambiguous(task):
            issues.append("任务描述存在歧义")
        
        # 检查可验证性
        if not self.is_task_verifiable(task):
            issues.append("成功标准不可验证")
        
        # 检查合理性
        if not self.is_task_realistic(task):
            issues.append("任务不符合实际场景")
        
        # 检查平衡性
        if not self.is_task_balanced(task):
            issues.append("任务集存在偏差")
        
        return issues
    
    def create_balanced_task_set(self, domain, num_tasks=50):
        """创建平衡的任务集"""
        task_categories = {
            "easy": 0.2,    # 20%简单任务
            "medium": 0.5,   # 50%中等任务  
            "hard": 0.3      # 30%困难任务
        }
        
        positive_negative_ratio = {
            "positive": 0.5,  # 50%正例
            "negative": 0.5   # 50%反例
        }
        
        tasks = []
        for category, proportion in task_categories.items():
            num_category_tasks = int(num_tasks * proportion)
            category_tasks = self.generate_tasks_by_difficulty(
                domain, category, num_category_tasks
            )
            tasks.extend(category_tasks)
        
        return self.validate_balance(tasks)

6.2 持续评估与监控

评估应该是持续的过程,而非一次性活动:

class ContinuousEvaluationSystem:
    def __init__(self):
        self.evaluation_db = EvaluationDatabase()
        self.alert_system = AlertSystem()
    
    def on_agent_update(self, new_version, previous_version):
        """处理Agent版本更新"""
        # 运行回归测试
        regression_results = self.run_regression_suite(new_version)
        
        # 检查性能回归
        if self.detect_performance_regression(regression_results):
            self.alert_system.alert("性能回归检测", regression_results)
        
        # 检查质量回归  
        if self.detect_quality_regression(regression_results):
            self.alert_system.alert("质量回归检测", regression_results)
        
        # 更新基准线
        self.update_baselines(regression_results)
    
    def monitor_production_performance(self, agent_deployment):
        """监控生产环境性能"""
        production_metrics = self.collect_production_metrics()
        
        # 比较生产环境与测试环境表现
        discrepancy = self.compare_environments(
            production_metrics, 
            self.test_environment_metrics
        )
        
        if discrepancy > self.discrepancy_threshold:
            self.investigate_environment_differences()
    
    def adaptive_evaluation(self):
        """自适应评估:根据表现调整难度"""
        current_success_rate = self.get_current_success_rate()
        
        if current_success_rate > 0.85:
            # 表现太好,增加难度
            self.increase_task_difficulty()
            print("评估饱和检测:增加任务难度")
        elif current_success_rate < 0.5:
            # 表现太差,降低难度
            self.decrease_task_difficulty()
            print("评估困难检测:降低任务难度")

6.3 评估结果分析与改进

评估的最终目的是驱动改进:

class EvaluationAnalysis:
    def analyze_failure_patterns(self, failed_tasks):
        """分析失败模式"""
        patterns = {}
        
        for task in failed_tasks:
            error_type = self.categorize_error(task.error)
            patterns[error_type] = patterns.get(error_type, 0) + 1
            
            # 深入分析特定错误类型
            if error_type == "hallucination":
                self.analyze_hallucination_cases(task)
            elif error_type == "logic_error":
                self.analyze_logic_errors(task)
        
        return patterns
    
    def generate_improvement_recommendations(self, analysis_results):
        """生成改进建议"""
        recommendations = []
        
        if analysis_results.get("hallucination", 0) > 0.1:  # 超过10%
            recommendations.append({
                "priority": "high",
                "area": "知识可靠性",
                "action": "增强事实核查机制",
                "details": "添加多源验证步骤"
            })
        
        if analysis_results.get("timeout", 0) > 0.2:  # 超过20%
            recommendations.append({
                "priority": "medium", 
                "area": "性能优化",
                "action": "优化长文本处理",
                "details": "实现分段处理策略"
            })
        
        return recommendations
    
    def create_retraining_dataset(self, failed_tasks):
        """从失败案例创建训练数据"""
        training_examples = []
        
        for task in failed_tasks:
            # 分析根本原因
            root_cause = self.identify_root_cause(task)
            
            # 创建纠正示例
            correction = self.generate_correction(task, root_cause)
            
            training_examples.append({
                "input": task.input,
                "incorrect_output": task.agent_output,
                "correct_output": correction,
                "explanation": root_cause
            })
        
        return training_examples

建立完整的 Agent 评估体系需要持续投入,但回报是显著的质量提升和开发效率改善。关键是要从简单的评估开始,逐步完善,让数据驱动决策,而不是依赖主观感受。通过系统化的评估,你可以真正理解 Agent 的能力边界,做出可靠的技术决策。

更多推荐