Overview
GEPA (Genetic Evolution of Prompt Architectures) uses evolutionary algorithms to optimize prompts through population-based search, mutation, and Pareto optimization.High-Level Architecture
- GEPA Optimizer - Coordinates the evolutionary loop
- Population Manager - Maintains prompt variants
- Pareto Archive - Tracks non-dominated solutions
- Mutation Engine - Generates prompt variations
- Evaluation Engine - Scores prompts via Task App
- Interceptor - Transforms prompts in-flight (no Task App changes)
Detailed Flow Diagram
Phase Breakdown
Phase 0: Pattern Validation
Phase 1: Population Initialization
Phase 2: Evaluation Loop
Phase 3: Selection & Evolution
Data Flow Diagram
Key Data Structures
Population:- Collection of prompt transformations (not full prompts)
- Each transformation modifies the baseline pattern
- Stored as transformation keys, not prompt text
- Multi-objective optimization space
- Objectives: accuracy, prompt_length, tool_call_rate
- Maintains non-dominated solutions (Pareto front)
- Per-seed scores (accuracy)
- Execution traces (for reflective feedback)
- Tool call patterns
Interceptor Pattern (Critical)
- Task Apps remain unchanged during optimization
- Prompts stay secure in backend
- Pattern-based transformations enable systematic exploration
- No prompt leakage or versioning issues
Generation Lifecycle
Timeline Example (Generation 0 → Generation 1)
Mutation Types
1. LLM-Guided Mutation
- Uses mutation model (e.g.,
gpt-5-mini) - Analyzes execution traces
- Proposes intelligent modifications
2. Regex-Based Mutation
- Pattern substitutions
- Systematic transformations
- Deterministic changes
3. Crossover
- Combines two parent prompts
- Module-aware for multi-stage
- Uniform crossover per module
Pareto Optimization
Multi-Objective Space:- X-axis: Prompt Length (tokens)
- Y-axis: Accuracy (%)
- Z-axis: Tool Call Rate (optional)
- Set of non-dominated solutions
- Each solution is optimal for some trade-off
- Archive maintains diverse solutions
Seed Splitting Strategy
- Pareto seeds: Multi-objective scoring
- Feedback seeds: Execution trace analysis for mutation guidance
Component Interactions
Key Interactions
-
Optimizer ↔ Population Manager
- Creates initial population
- Manages generations
- Tracks transformations
-
Optimizer ↔ Mutation Engine
- Requests mutations
- Provides parent transformations
- Receives candidate variants
-
Optimizer ↔ Evaluation Engine
- Submits candidates for evaluation
- Receives scores and traces
- Manages rollout budget
-
Evaluation Engine ↔ Task App
- Sends rollout requests (baseline prompts only)
- Receives trajectories
- Computes rewards
-
Optimizer ↔ Interceptor
- Registers transformations
- Interceptor substitutes at inference time
- No direct prompt transmission
Performance Characteristics
Throughput Analysis
Bottlenecks:- LLM mutation calls (~3-5s each, parallelized)
- Rollout evaluation (minibatch gating)
- Archive updates (sequential, ~100ms)
- Pipeline mutation generation
- Parallel evaluation with minibatch control
- Archive snapshot for pipelining
Typical Performance
- Initial Population: 20-30 variants
- Generations: 10-15
- Rollouts per Generation: ~50-100
- Total Rollouts: ~1000-1500
- Time per Generation: ~2-5 minutes
- Total Optimization Time: ~20-75 minutes
Configuration Parameters
Configuration reference is currently maintained in research docs. Key Parameters:initial_size- Initial population sizenum_generations- Number of evolutionary generationschildren_per_generation- Offspring per generationpareto_set_size- Size of Pareto archivefeedback_fraction- Fraction of seeds for feedbackmutation.rate- Probability of mutation vs crossover
Next Steps
- GEPA Quickstart - Get started in 5 minutes
- LocalAPI Overview - Understanding LocalAPI