MCPcopy Create free account
hub / github.com/FuzzAnything/PromptFuzz / mutate_prompt

Function mutate_prompt

src/mutation.rs:121–163  ·  view source on GitHub ↗
(prompt: &mut Prompt, schedule: &Schedule, deopt: &mut Deopt)

Source from the content-addressed store, hash-verified

119}
120
121pub fn mutate_prompt(prompt: &mut Prompt, schedule: &Schedule, deopt: &mut Deopt) {
122 let mutators = vec![
123 MutationOperator::Add,
124 MutationOperator::Replace,
125 MutationOperator::CrossOver,
126 ];
127 let mutator = random_select(&mutators);
128 let seed = deopt.select_seed_from_queue().clone();
129 let prompt_comb = seed.convert_to_prompt();
130 log::info!("Select seed: {}, comb: {:?}", seed.id, prompt_comb);
131
132 if prompt_comb.is_empty() {
133 let combination = schedule.assemble_high_energy_combiantion();
134 prompt.set_combination(combination);
135 return;
136 }
137
138 let combination = match mutator {
139 MutationOperator::Add => {
140 log::info!("[Mutation Insert]: select seed {}", seed.id);
141 prompt_insertion(prompt_comb, schedule)
142 }
143 MutationOperator::Replace => {
144 log::info!("[Mutation Replace]: select seed {}", seed.id);
145 prompt_replacement(prompt_comb, schedule)
146 }
147 MutationOperator::CrossOver => {
148 let seed2 = deopt.select_seed_exclude(&seed);
149 let prompt_comb2 = seed2.convert_to_prompt();
150 log::info!(
151 "[Mutation CrossOver] select seed1: {}, seed2: {}",
152 seed.id,
153 seed2.id
154 );
155 prompt_crossover(prompt_comb, prompt_comb2)
156 }
157 };
158 let combination = combination
159 .iter()
160 .map(|api| get_func_gadget(api).unwrap())
161 .collect();
162 prompt.set_combination(combination);
163}
164
165#[test]
166fn test_seed_to_prompt() -> eyre::Result<()> {

Callers 1

update_promptMethod · 0.85

Calls 11

random_selectFunction · 0.85
prompt_insertionFunction · 0.85
prompt_replacementFunction · 0.85
prompt_crossoverFunction · 0.85
get_func_gadgetFunction · 0.85
convert_to_promptMethod · 0.80
set_combinationMethod · 0.80
select_seed_excludeMethod · 0.80
is_emptyMethod · 0.45

Tested by

no test coverage detected