Skip to content

Commit 3187e67

Browse files
committed
feat: template inspiration code content and feature
1 parent 58fc6cb commit 3187e67

File tree

2 files changed

+19
-10
lines changed

2 files changed

+19
-10
lines changed

openevolve/prompt/sampler.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -510,42 +510,42 @@ def _extract_unique_features(self, program: Dict[str, Any]) -> str:
510510
and self.config.include_changes_under_chars
511511
and len(changes) < self.config.include_changes_under_chars
512512
):
513-
features.append(f"Modification: {changes}")
513+
features.append(self.template_manager.get_fragment("inspiration_changes_prefix").format(changes=changes))
514514

515515
# Analyze metrics for standout characteristics
516516
metrics = program.get("metrics", {})
517517
for metric_name, value in metrics.items():
518518
if isinstance(value, (int, float)):
519519
if value >= 0.9:
520-
features.append(f"Excellent {metric_name} ({value:.3f})")
520+
features.append(f"{self.template_manager.get_fragment('inspiration_metrics_excellent').format(metric_name=metric_name, value=value)}")
521521
elif value <= 0.3:
522-
features.append(f"Alternative {metric_name} approach")
522+
features.append(f"{self.template_manager.get_fragment('inspiration_metrics_alternative').format(metric_name=metric_name)}")
523523

524524
# Code-based features (simple heuristics)
525525
code = program.get("code", "")
526526
if code:
527527
code_lower = code.lower()
528528
if "class" in code_lower and "def __init__" in code_lower:
529-
features.append("Object-oriented approach")
529+
features.append(self.template_manager.get_fragment("inspiration_code_with_class"))
530530
if "numpy" in code_lower or "np." in code_lower:
531-
features.append("NumPy-based implementation")
531+
features.append(self.template_manager.get_fragment("inspiration_code_with_numpy"))
532532
if "for" in code_lower and "while" in code_lower:
533-
features.append("Mixed iteration strategies")
533+
features.append(self.template_manager.get_fragment("inspiration_code_with_mixed_iteration"))
534534
if (
535535
self.config.concise_implementation_max_lines
536536
and len(code.split("\n")) <= self.config.concise_implementation_max_lines
537537
):
538-
features.append("Concise implementation")
538+
features.append(self.template_manager.get_fragment("inspiration_code_with_concise_line"))
539539
elif (
540540
self.config.comprehensive_implementation_min_lines
541541
and len(code.split("\n")) >= self.config.comprehensive_implementation_min_lines
542542
):
543-
features.append("Comprehensive implementation")
543+
features.append(self.template_manager.get_fragment("inspiration_code_with_comprehensive_line"))
544544

545545
# Default if no specific features found
546546
if not features:
547547
program_type = self._determine_program_type(program)
548-
features.append(f"{program_type} approach to the problem")
548+
features.append(self.template_manager.get_fragment("inspiration_no_features_postfix").format(program_type=program_type))
549549

550550
# Use num_top_programs as limit for features (similar to how we limit programs)
551551
feature_limit = self.config.num_top_programs

openevolve/prompts/defaults/fragments.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,14 @@
2929
"inspiration_type_score_high_performer": "High-Performer",
3030
"inspiration_type_score_alternative": "Alternative",
3131
"inspiration_type_score_experimental": "Experimental",
32-
"inspiration_type_score_exploratory": "Exploratory"
32+
"inspiration_type_score_exploratory": "Exploratory",
33+
"inspiration_changes_prefix": "Modification:",
34+
"inspiration_metrics_excellent": "Excellent {metric_name} ({value:.3f})",
35+
"inspiration_metrics_alternative": "Alternative {metric_name} approach",
36+
"inspiration_code_with_class": "Object-oriented approach",
37+
"inspiration_code_with_numpy": "NumPy-based implementation",
38+
"inspiration_code_with_mixed_iteration": "Mixed iteration strategies",
39+
"inspiration_code_with_concise_line": "Concise implementation",
40+
"inspiration_code_with_comprehensive_line": "Comprehensive implementation",
41+
"inspiration_no_features_postfix": "approach to the problem"
3342
}

0 commit comments

Comments
 (0)