AlphaEvolve Writing

You can find the full explanation here
You can find a sample story submitted to a writing competition 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-writingInstall with uv (recommended)
uv syncOr install with pip
pip install -e .Configure your API keys (see Configuration section below)
Run Evolution
# Run 5 evolution iterations
python evolve.py 5Fresh start with 3 iterations
python evolve.py 3 --freshUse general writing mode
python evolve.py 5 --generalShow 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
⚙️ 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"
]
}
Author Styles - Emulate different writing approaches:author_styles = [
"Write with the psychological insight of Virginia Woolf",
"Adopt the sparse, powerful prose of Ernest Hemingway",
"Use the magical realism style of Gabriel García Márquez",
"Employ the detailed world-building of Tolkien"
]
#### General Writing Customization (src/generators/generate_response_general.py)Academic Focus Areas - Target specific writing domains:
academic_focuses = [
"Rigorous analytical argument development",
"Clear thesis statement and supporting evidence",
"Proper academic citation and source integration",
"Logical flow and coherent structure"
]
Writing Approaches - Define analytical strategies:writing_approaches = [
"Comparative analysis with multiple perspectives",
"Problem-solution framework with evidence",
"Cause-and-effect reasoning with examples",
"Critical evaluation with balanced arguments"
]
Customizing Judge Criteria (src/generators/judge_response.py)
You can modify the judging criteria and evaluation prompts to focus on specific aspects of writing quality:
# Edit the judge_responses function to customize evaluation criteria
evaluation_criteria = [
"Technical writing proficiency",
"Creative originality and innovation",
"Emotional impact and reader engagement",
"Structural coherence and flow",
"Character development and authenticity"
]
Tips for Advanced Configuration
- Backup Original Files: Always keep copies of the original generator files before making changes
- Test Incrementally: Make small changes and test with a few iterations before running full evolution cycles
- Monitor Results: Use the web interface to validate that your customizations improve story quality
- Mix and Match: Combine different mission sets and author styles for unique generation strategies
- Version Control: Track your customizations with git to revert if needed
🌐 Web Interface
Validate your evolution results with the built-in web interface:
cd web_interface
pip install -r requirements.txt
python app.py
Open http://localhost:5000 to access:- Story Comparison: Side-by-side reading and preference selection
- ELO Rankings: View current standings and statistics
- Evolution Tracking: Validate that later generations improve
- Data Export: Download results for analysis
--- Tranlated By Open Ai Tx | Last indexed: 2025-07-18 ---