from abc import ABC, abstractmethod from dataclasses import dataclass from ..attacks.base_attack import AttackResult from typing import List @dataclass class EvaluationMetrics: """ 一个标准化的数据结构,用于封装评估结果。 可以根据需要轻松添加更多指标(如成本、隐蔽性等)。 """ attack_success_rate: float insucess_rate: float=None average_attack_score: float = None average_cost: float = None class BaseEvaluator(ABC): """ 所有评估器的抽象基类。 定义了评估流程的统一接口。 """ def __init__(self, **kwargs): """允许在配置文件中传入任意评估器特定的参数。""" pass @abstractmethod def evaluate(self, results: List[AttackResult]) -> EvaluationMetrics: """ 接收一个实验中所有的攻击结果列表,并计算最终的聚合评估指标。 """ pass