Skip to main content
Optimize prompts for production software. Any language. Any framework. Simply wrap your existing code in a local API, expose a rollouts endpoint, and let GEPA create, score, and evolve dozens of prompt candidates—then download the results for production.
GEPA (Genetic-Pareto) is a reflective prompt optimizer that outperforms reinforcement learning methods like GRPO by 10-20% while using up to 35x fewer rollouts. Read the paper →

How it works

  1. Wrap your code in a simple local API with two endpoints: /task_info and /rollout
  2. Expose it via SynthTunnel or Cloudflare to authenticated web traffic
  3. Configure GEPA to optimize your prompts against your evaluation criteria
  4. Download results and deploy the optimized prompts to production
from synth_ai.sdk import PromptLearningClient

client = PromptLearningClient(api_key="sk_live_...")
job = await client.create_job_from_toml("gepa.toml")
await client.start_job(job["id"])

# Stream progress as GEPA evolves prompt candidates
async for event in client.stream_events(job["id"]):
    print(event)

# Download the optimized prompts
results = await client.get_results(job["id"])

Impact

GEPA reflects on system-level trajectories—reasoning, tool calls, outputs—to diagnose problems and propose prompt updates. It combines complementary lessons from its own attempts to find prompts that work for your specific task. Real results:
  • Outperforms GRPO by 10-20% on average
  • Uses up to 35x fewer rollouts than RL methods
  • Works with any LLM provider (OpenAI, Anthropic, etc.)

Get started

Why Synth?

  • Language agnostic: Your task app can be Python, TypeScript, Go, Rust—anything that serves HTTP
  • Framework agnostic: Works with LangChain, DSPy, raw API calls, or your custom stack
  • Production-ready: Tunnel your local code or deploy to Synth’s managed hosting
  • Cost-aware: Set budget limits and optimize for reward vs latency vs cost tradeoffs
  • Verifier support: Use rubrics, RLM verifiers, or custom scoring functions