← TinyGPT · docs · devlog · roadmap · speedup
source: docs/prds/gepa-prompt-evolution.md · view on GitHub ↗

GEPA prompt evolution — automated system-prompt iteration

Date: 2026-06-09 Status: PARKED — activate after v11 ships Trigger: when a v12 planner is needed AND v11 ship-gate eval suite is stable


What

Apply GEPA (Genetic-Pareto Prompt Evolution, ICLR 2026 Oral) to automate the system-prompt + action-description iteration loop. Stop hand-tuning prompts; let evolutionary search find the Pareto-front.

Reference application: NousResearch/hermes-agent-self-evolution — a Hermes-specific wrapper. The wrapper is illustrative; we’d use GEPA directly, not the wrapper.

Why now (motivation)

10 versions of Pace planner system prompts (v3 → v10) were all hand-tuned. Each iteration cost a person-day of analysis + writing. GEPA’s claim: $2-10 per optimization run with trace-driven mutations against a fixed eval suite. That replaces 4-6 of our cycles with one API-driven loop.

Prerequisite — already done as of 2026-06-09:

Without those, GEPA = noise. With them, GEPA = the right tool.

How

read current pace-system-prompt-v10-actions.txt


GEPA: propose N=8 mutations targeting observed failure patterns
       │  (uses execution traces from v9/v10 runs against the eval suite)

serve each candidate prompt against fm-fixtures-v2, BFCL-12, OOS, AMBIG, DESTRUCT


compute Pareto front: (accuracy, prompt_length, TTFW)


human PR review on top 2 candidates


ship if all 6 ship-gate thresholds clear AND prompt ≤ existing length × 1.2

GEPA reads why each candidate fails (not just that it fails) — failures inform the next mutation cycle. This is reflective prompt evolution, not blind random search.

What it optimizes for Pace

TargetWhy GEPA helps
pace-system-prompt-v10-actions.txtDirect hand-tuning replacement
grammars/v10-actions/registry.json action descriptionsThese shape tool selection — GEPA can tighten descriptions for ambiguity reduction
Future v11/v12 system promptsFirst-time prompts get a Pareto-front exploration instead of “engineer’s first guess”

License notes

ComponentLicenseUse
GEPA (gepa-ai/gepa)MIT✅ Direct dependency
DSPy (stanfordnlp/dspy)MIT✅ Optional, GEPA-adjacent
Hermes-Agent-Self-Evolution wrapperMIT⚠️ Reference only, don’t import
Darwinian Evolver (imbue-ai/darwinian_evolver)AGPL v3❌ DO NOT integrate; license-incompatible with commercial Pace

Cost / runtime

GEPA’s API-driven loop calls an LLM (we’d use local Qwen3-14B + thinking, no $$$). Self-hosted: ~3-5 hours wall per optimization run on Qwen3-14B local teacher with no API spend. The published “$2-10/run” assumes paid API.

ROI

Estimate
Integration effort~12-16h
P(meaningful accuracy gain)~60%
Quality of gain5-10pp on prompt-sensitive dimensions, with NO new training
ROI~0.2-0.3 (below most queued tasks)
MultiplierCompounds with v11 training. After v11 trains, run GEPA on v11’s prompt for a cheap second derivative gain.

Activation gate

Two conditions must hold:

  1. v11 has shipped OR v11 has failed and we’re planning v12
  2. The v11 ship-gate eval suite remains the canonical fitness function (do not invent a new one for GEPA)

If both → activate. If either fails → wait.

What NOT to do with GEPA