AlphaEvolveWriting
No description available
Install / Use
/learn @tobysimonds/AlphaEvolveWritingREADME
AlphaEvolve Writing

You can find the full explanation here
You can find a sample story submitted to a writting comp here
A modern, evolutionary writing system that uses AI models to generate, evaluate, and evolve creative stories or general writing pieces through iterative competitions. Built with clean, modular Python architecture following modern design principles.
✨ Features
- 🧬 Evolutionary Algorithm: Stories evolve through AI-powered tournaments
- 🎯 Dual Writing Modes: Creative storytelling and general writing optimization
- 🏆 ELO Tournament System: Sophisticated ranking through pairwise comparisons
- 🌐 Web Interface: Human validation and story comparison tools
- 🔧 Configurable: Extensive customization through JSON configuration
🚀 Quick Start
Installation
# Clone the repository
git clone https://github.com/your-org/alphaevolve-writing
cd alphaevolve-writing
# Install with uv (recommended)
uv sync
# Or install with pip
pip install -e .
# Configure your API keys (see Configuration section below)
Run Evolution
# Run 5 evolution iterations
python evolve.py 5
# Fresh start with 3 iterations
python evolve.py 3 --fresh
# Use general writing mode
python evolve.py 5 --general
# Show help
python evolve.py --help
🏗️ Architecture
The system follows modern Python design principles with clean separation of concerns:
├── src/
│ ├── core/ # Pipeline orchestration
│ │ └── pipeline.py # Main EvolutionPipeline class
│ ├── generators/ # Story generation logic
│ │ ├── story_generator.py # Initial & next batch generators
│ │ ├── generate_response.py # Creative writing generation
│ │ ├── generate_response_general.py # General writing generation
│ │ └── judge_response.py # AI judging system
│ ├── rankers/ # ELO ranking system
│ │ ├── elo_rank.py # Core ELO algorithm
│ │ └── tournament_runner.py # Tournament management
│ └── utils/ # Utility functions
│ └── inference.py # Multi-provider LLM interface
├── evolve.py # Clean CLI entry point
├── pyproject.toml # Modern Python packaging
├── config.json # Configuration
└── web_interface/ # Web UI for validation
Key Components
EvolutionPipeline: Main orchestrator that manages the complete evolution cycleInitialStoryGenerator: Creates the first generation of stories from promptsNextBatchGenerator: Evolves top performers into improved variantsTournamentRunner: Manages ELO tournaments for story rankingEloRankingSystem: Implements sophisticated ranking algorithm
📖 How It Works
The system follows a three-stage evolution cycle:
1. Generate Initial Batch
- Creates multiple stories from your prompt
- Uses configurable AI models (GPT, Claude, Llama, etc.)
- Assigns initial ELO ratings
2. Run ELO Tournament
- Stories compete in pairwise comparisons
- AI judges evaluate based on your rubric
- ELO ratings updated based on wins/losses
3. Generate Next Batch
- Top-performing stories selected
- Variants generated with improvements
- Process repeats for multiple generations
This iterative process evolves increasingly better writing over time.
⚙️ Configuration
Basic Setup
Edit these key files:
prompt.txt- Your writing prompt/themerubric.txt- Judging criteria for evaluationconfig.json- System configuration
API Keys Setup
The system supports multiple AI providers configured through config.json. The configuration maps models to providers and specifies which environment variables contain the API keys:
{
"llm_providers": {
"openai": {
"type": "openai",
"base_url": "https://api.openai.com/v1",
"api_key_env": "OPENAI_API_KEY"
},
"anthropic": {
"type": "anthropic",
"api_key_env": "ANTHROPIC_API_KEY"
},
"deepinfra": {
"type": "openai_compatible",
"base_url": "https://api.deepinfra.com/v1/openai",
"api_key_env": "DEEPINFRA_API_KEY"
},
"deepseek": {
"type": "openai_compatible",
"base_url": "https://api.deepseek.com/v1",
"api_key_env": "DEEPSEEK_API_KEY"
},
"gemini": {
"type": "openai_compatible",
"api_key_env": "GEMINI_API_KEY",
"base_url": "https://generativelanguage.googleapis.com/v1beta/openai/"
}
},
"model_provider_mapping": {
"gpt-4": "openai",
"gpt-3.5-turbo": "openai",
"claude-3-sonnet-20240229": "anthropic",
"meta-llama/Meta-Llama-3-70B-Instruct": "deepinfra",
"deepseek-chat": "deepseek",
"gemini-2.5-flash": "gemini"
}
}
Then set your API keys as environment variables:
export OPENAI_API_KEY="your-openai-key" # For GPT models
export ANTHROPIC_API_KEY="your-anthropic-key" # For Claude models
export DEEPINFRA_API_KEY="your-deepinfra-key" # For Llama models
export DEEPSEEK_API_KEY="your-deepseek-key" # For DeepSeek models
export GEMINI_API_KEY="your-gemini-key" # For Gemini models
You only need to set keys for the providers you plan to use. The system automatically routes model requests to the correct provider based on the configuration.
Configuration Options
The config.json file controls all system behavior:
{
"batch_generation": {
"num_stories": 10,
"model": "gpt-4",
"initial_elo": 1500
},
"elo_ranking": {
"tournament_rounds": 50,
"judge_model": "claude-3-sonnet-20240229",
"k_factor": 32
},
"next_batch_generation": {
"top_stories_to_select": 3,
"variants_per_story": 2,
"include_original_stories": true
},
"evolution_pipeline": {
"max_iterations": 5,
"auto_continue_from_existing": true
}
}
🎭 Writing Modes
Creative Writing Mode (Default)
- Focuses on storytelling, character development, and narrative techniques
- Uses mission-based generation strategies
- Optimizes for creativity and engagement
General Writing Mode (--general)
- Focuses on academic papers, essays, reports, and professional writing
- Uses analytical and structured approaches
- Optimizes for clarity and persuasiveness
🔧 Advanced Configuration
Customizing Generation Strategies
For advanced users, you can customize the generation prompts, author styles, and mission sets by editing the files in the src/generators/ directory:
Creative Writing Customization (src/generators/generate_response.py)
Mission Sets - Define creative approaches and goals:
mission_sets = {
"emotional_depth": [
"Focus on the psychological depth of characters",
"Explore complex emotional landscapes",
"Create moments of genuine human connection"
],
"narrative_craft": [
"Experiment with unique narrative structures",
"Use vivid, sensory descriptions",
"Create compelling story arcs"
],
"dialogue_mastery": [
"Write authentic, character-specific dialogue",
"Use subtext and implied meaning",
"Balance dialogue with action and description"
