Add files via upload
This commit is contained in:
parent
0978bb2f1d
commit
1284bb346b
238 changed files with 13931 additions and 3 deletions
47
easyjailbreak/metrics/Metric/metric_ASR.py
Normal file
47
easyjailbreak/metrics/Metric/metric_ASR.py
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
"""
|
||||
Metrics on AttackSuccessRate
|
||||
================================
|
||||
This module contains the implementation of the AttackSuccessRate metric,
|
||||
which is designed to evaluate the effectiveness of jailbreak attacks in a dataset.
|
||||
It calculates the number of successful and failed attacks, and computes the overall
|
||||
attack success rate.
|
||||
"""
|
||||
from easyjailbreak.metrics.Metric.metric import Metric
|
||||
from easyjailbreak.datasets import JailbreakDataset
|
||||
|
||||
__all__ = ['AttackSuccessRate']
|
||||
|
||||
class AttackSuccessRate(Metric):
|
||||
"""
|
||||
A metric to evaluate the success rate of jailbreak attacks.
|
||||
It calculates the number of successful and failed attacks within a dataset,
|
||||
and determines the overall attack success rate.
|
||||
"""
|
||||
def __init__(self):
|
||||
self.failed_attacks = 0
|
||||
self.successful_attacks = 0
|
||||
self.all_metrics = {}
|
||||
|
||||
def calculate(self, dataset: JailbreakDataset):
|
||||
"""
|
||||
Calculate the attack success rate from the given dataset.
|
||||
|
||||
:param ~JailbreakDataset dataset: The dataset containing jailbreak attack results.
|
||||
|
||||
:return dict: A dictionary containing the number of successful attacks, failed attacks,
|
||||
and the attack success rate.
|
||||
"""
|
||||
if len(dataset) == 0:
|
||||
raise ValueError("The dataset is empty.")
|
||||
|
||||
for Instance in dataset:
|
||||
if Instance.eval_results[-1] == 1:
|
||||
self.successful_attacks += 1
|
||||
else:
|
||||
self.failed_attacks += 1
|
||||
|
||||
self.all_metrics["successful_attacks"] = self.successful_attacks
|
||||
self.all_metrics["failed_attacks"] = self.failed_attacks
|
||||
self.all_metrics["attack_success_rate"] = round(self.successful_attacks * 100.0 / len(dataset), 2)
|
||||
|
||||
return self.all_metrics
|
||||
Loading…
Add table
Add a link
Reference in a new issue