Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

EasyEvolve

Give us an evaluator. We'll evolve the code.

EasyEvolve is a hosted API that improves Python code with LLM-driven evolutionary search. You write a function that scores a candidate program; the service generates, mutates and evaluates candidates in isolated sandboxes and returns the best one.

Invite-only beta. You need an invite token from the EasyEvolve team. The API, pricing and limits may change, and data may be reset during the beta.

Install

pip install --pre easyevolve

Python 3.11 or later.

Sign in with your invite token

easyevolve login

Paste the token when prompted. It is stored at ~/.config/easyevolve/credentials.json with owner-only permissions. You can also set EASYEVOLVE_TOKEN instead.

Write an evaluator

Expose evaluate(candidate_path: str) -> dict returning a finite score (higher is better). Use the Python standard library only.

# eval.py
"""Candidate contract: solve(values: list[int]) -> list[int], sorted ascending."""
import importlib.util


def evaluate(candidate_path: str) -> dict:
    spec = importlib.util.spec_from_file_location("candidate", candidate_path)
    candidate = importlib.util.module_from_spec(spec)
    spec.loader.exec_module(candidate)
    cases = [[], [1], [3, 1, 2], [5, -1, 5, 0], list(range(30, 0, -1))]
    passed = sum(candidate.solve(values.copy()) == sorted(values) for values in cases)
    return {"score": passed / len(cases)}

Run

from easyevolve import EasyEvolve

with EasyEvolve(evaluator="eval.py") as client:
    print(client.estimate(iterations=5, level="low", budget=0.5))
    result = client.run(iterations=5, level="low", budget=0.5)
    print(result.best_score, result.cost)
    print(result.best_code)

Or from the terminal:

easyevolve balance
easyevolve run eval.py --iterations 5 --level low --budget 0.5

budget (USD) is a hard cap: the run stops before it would exceed it, and unused budget returns to your balance. A client timeout does not stop the job; use client.resume(job_id) to reconnect or easyevolve cancel <job_id> to stop it.

Documentation: https://easyevolve.dev/docs

Metadata

Release files for easyevolve 0.1.0b2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for easyevolve 0.1.0b2
File Size Uploaded
easyevolve-0.1.0b2.tar.gz 5.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for easyevolve 0.1.0b2
File Interpreter ABI Platform
easyevolve-0.1.0b2-py3-none-any.whl Python 3 none any Details

Total release size: 13.1 kB

Release files / easyevolve-0.1.0b2.tar.gz

Download URL easyevolve-0.1.0b2.tar.gz
Size 5.9 kB
Tags Source
SHA-256 checksum
How to use checksums
2ee68d46f835f62be20034b3bc1143b07b8ed45084818abdee83e641712838db
BLAKE2b-256 checksum
How to use checksums
13ba8b386e0633be6b58717d781f4fe905985815a7baa894fa0065922c21f06d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / easyevolve-0.1.0b2-py3-none-any.whl

Download URL easyevolve-0.1.0b2-py3-none-any.whl
Size 7.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5e45aad45c495450dcf1127767aaf5f0745145d7c471f7bee4a169e90623f7cd
BLAKE2b-256 checksum
How to use checksums
1e0ccecafa8176d49ff88e75659aa95b7efeea2fe72b916983da0410b66e66f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

0.1.0b2 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page