Add files via upload
This commit is contained in:
parent
0978bb2f1d
commit
1284bb346b
238 changed files with 13931 additions and 3 deletions
40
easyjailbreak/seed/seed_random.py
Normal file
40
easyjailbreak/seed/seed_random.py
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
import random
|
||||
from typing import List
|
||||
from .seed_base import SeedBase
|
||||
|
||||
|
||||
class SeedRandom(SeedBase):
|
||||
r"""
|
||||
A class that can randomly generate and store attack seeds.
|
||||
"""
|
||||
def __init__(self, seeds: List[str] = None, posible_tokens: List[str] = None, seeds_num=1, seeds_max_length=100, early_stop_possibility=0.):
|
||||
r"""
|
||||
Initialize a SeedRandom instance with a seed list that can be empty.
|
||||
:param ~List[str] seeds: Strings that contain the context for jailbreak queries.
|
||||
:param ~int seeds_num: Indicates how many seeds users want.
|
||||
:param ~int seeds_max_length: Indicates the maximum length a seed can have.
|
||||
:param ~List[str] posible_tokens: Strings that will be randomly added to seed jailbreakprompt.
|
||||
:param ~float early_stop_possibility: Indicates the possibility of aborting generation,
|
||||
used to generate seeds with different lengths.
|
||||
"""
|
||||
super().__init__(seeds)
|
||||
self.seeds_num = seeds_num
|
||||
self.seeds_max_length = seeds_max_length
|
||||
self.posible_tokens = posible_tokens
|
||||
self.early_stop_possibility = early_stop_possibility
|
||||
|
||||
def new_seeds(self):
|
||||
r"""
|
||||
Use template to generate new seeds, replacing the old batch.
|
||||
:return: new_seeds
|
||||
"""
|
||||
seeds = []
|
||||
for _ in range(self.seeds_num):
|
||||
seed = ''
|
||||
for _ in range(self.seeds_max_length):
|
||||
seed += random.choice(self.posible_tokens)
|
||||
if random.uniform(0, 1) < self.early_stop_possibility:
|
||||
break
|
||||
seeds.append(seed)
|
||||
self.seeds = seeds
|
||||
return self.seeds
|
||||
Loading…
Add table
Add a link
Reference in a new issue