Skip to content

Commit fe3430f

Browse files
committed
Update prompt sampling and config for artifacts
Added artifact rendering options to default_config.yaml, including size and security filter settings. Refactored process_parallel.py to use config values for program selection limits. Updated prompt/sampler.py to display full program code instead of truncated snippets and to use config-based limits for key features.
1 parent f3b004c commit fe3430f

File tree

3 files changed

+17
-18
lines changed

3 files changed

+17
-18
lines changed

configs/default_config.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ prompt:
6363
- "I suggest the following improvements:"
6464
- "We can enhance this code by:"
6565

66+
# Artifact rendering
67+
include_artifacts: true # Include execution outputs/errors in prompt
68+
max_artifact_bytes: 20480 # Maximum artifact size in bytes (20KB default)
69+
artifact_security_filter: true # Apply security filtering to artifacts
70+
6671
# Note: meta-prompting features are not yet implemented
6772

6873
# Database configuration

openevolve/process_parallel.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,9 @@ def _run_iteration_worker(
145145
reverse=True
146146
)
147147

148-
island_top_programs = island_programs[:5]
149-
island_previous_programs = island_programs[:3]
148+
# Use config values for limits instead of hardcoding
149+
island_top_programs = island_programs[:_worker_config.prompt.num_top_programs + _worker_config.prompt.num_diverse_programs]
150+
island_previous_programs = island_programs[:_worker_config.prompt.num_top_programs]
150151

151152
# Build prompt
152153
prompt = _worker_prompt_sampler.build_prompt(

openevolve/prompt/sampler.py

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -309,11 +309,8 @@ def _format_evolution_history(
309309
selected_top = top_programs[: min(self.config.num_top_programs, len(top_programs))]
310310

311311
for i, program in enumerate(selected_top):
312-
# Extract a snippet (first 10 lines) for display
312+
# Use the full program code
313313
program_code = program.get("code", "")
314-
program_snippet = "\n".join(program_code.split("\n")[:10])
315-
if len(program_code.split("\n")) > 10:
316-
program_snippet += "\n# ... (truncated for brevity)"
317314

318315
# Calculate a composite score using safe numeric average
319316
score = safe_numeric_average(program.get("metrics", {}))
@@ -338,7 +335,7 @@ def _format_evolution_history(
338335
program_number=i + 1,
339336
score=f"{score:.4f}",
340337
language=language,
341-
program_snippet=program_snippet,
338+
program_snippet=program_code,
342339
key_features=key_features_str,
343340
)
344341
+ "\n\n"
@@ -362,11 +359,8 @@ def _format_evolution_history(
362359
diverse_programs_str += "\n\n## Diverse Programs\n\n"
363360

364361
for i, program in enumerate(diverse_programs):
365-
# Extract a snippet (first 5 lines for diversity)
362+
# Use the full program code
366363
program_code = program.get("code", "")
367-
program_snippet = "\n".join(program_code.split("\n")[:5])
368-
if len(program_code.split("\n")) > 5:
369-
program_snippet += "\n# ... (truncated)"
370364

371365
# Calculate a composite score using safe numeric average
372366
score = safe_numeric_average(program.get("metrics", {}))
@@ -388,7 +382,7 @@ def _format_evolution_history(
388382
program_number=f"D{i + 1}",
389383
score=f"{score:.4f}",
390384
language=language,
391-
program_snippet=program_snippet,
385+
program_snippet=program_code,
392386
key_features=key_features_str,
393387
)
394388
+ "\n\n"
@@ -430,11 +424,8 @@ def _format_inspirations_section(
430424
inspiration_programs_str = ""
431425

432426
for i, program in enumerate(inspirations):
433-
# Extract a snippet (first 8 lines) for display
427+
# Use the full program code
434428
program_code = program.get("code", "")
435-
program_snippet = "\n".join(program_code.split("\n")[:8])
436-
if len(program_code.split("\n")) > 8:
437-
program_snippet += "\n# ... (truncated for brevity)"
438429

439430
# Calculate a composite score using safe numeric average
440431
score = safe_numeric_average(program.get("metrics", {}))
@@ -451,7 +442,7 @@ def _format_inspirations_section(
451442
score=f"{score:.4f}",
452443
program_type=program_type,
453444
language=language,
454-
program_snippet=program_snippet,
445+
program_snippet=program_code,
455446
unique_features=unique_features,
456447
)
457448
+ "\n\n"
@@ -540,7 +531,9 @@ def _extract_unique_features(self, program: Dict[str, Any]) -> str:
540531
program_type = self._determine_program_type(program)
541532
features.append(f"{program_type} approach to the problem")
542533

543-
return ", ".join(features[:3]) # Limit to top 3 features
534+
# Use num_top_programs as limit for features (similar to how we limit programs)
535+
feature_limit = self.config.num_top_programs
536+
return ", ".join(features[:feature_limit])
544537

545538
def _apply_template_variations(self, template: str) -> str:
546539
"""Apply stochastic variations to the template"""

0 commit comments

Comments
 (0)