Invite-only beta

EasyEvolve

The simplest LLM-driven evolution API. Write a function that scores a program, and get back a better one.

main.py
from easyevolve import EasyEvolve

def main():
    evolve = EasyEvolve(
        evaluator="evaluator.py",
    )

    best_program = evolve.run(iterations=10, level="high")
main.py
from easyevolve import EasyEvolve

def main():
    evolve = EasyEvolve(
        evaluator="evaluator.py",
    )

    best_program = evolve.run(
        iterations=10,
        level="high",
    )

You define “better”. The search does the rest.

  1. Write an evaluator. One function that runs a candidate program and returns a score. Higher is better.
  2. Run the search. An LLM proposes variations, each one is executed in a sandbox and scored, and the fittest survive to the next generation.
  3. Take the best program. You get its code, its score and the full history of the run.
evaluator.py
def evaluate(candidate_path: str) -> dict:
    program = load(candidate_path)
    passed = sum(program.solve(x) == sorted(x) for x in cases)
    return {"score": passed / len(cases)}

Costs you can see before you start

Every run is capped, itemised and billed at cost plus 10%. Three settings decide what you spend.

evolve.estimate()

Estimate first

Get a conservative upper bound in USD for a given iteration count and level, before anything runs.

iterations10
level"high"
upper bound$1.20
Illustrative figure. Real rates come from your API instance.
budget=2.0

Set a hard limit

The search stops before an operation would cross your budget, and you keep the best program found so far.

budget $2.00spend →best score
level="high"

Choose a model level

Trade cost for capability. The evaluator still decides what counts as better.

  • "low"Fast, economical iterations for well-defined tasks.
  • "middle"A balance of cost and candidate quality.
  • "high"A more capable model for harder problems.
How runs are charged →

Start with an evaluator.