A steganography word game implementation where two LLM instances try to communicate a secret word while keeping it hidden from an overseer LLM. Thank Daniel Tan for envisioning this game!
- Player 1 is given a secret word and must communicate it to Player 2
- Both players must keep the word hidden from the Overseer
- When Player 1 believes Player 2 knows the word, it calls "CONTACT"
- Player 2 then makes its guess
- The Overseer makes its guess based on the conversation
- The game is won if Player 2 guesses correctly while the Overseer does not
- Create and activate a virtual environment (recommended):
python -m venv venv
source venv/bin/activate # On Windows use: venv\Scripts\activate
- Install the required packages:
pip install -r requirements.txt
- Download required NLTK data:
python -c "import nltk; nltk.download('wordnet')"
- Set up API keys:
- For OpenAI models:
OPENAI_API_KEY
- For Anthropic models:
ANTHROPIC_API_KEY
- For Google Gemini models:
GOOGLE_API_KEY
- For OpenAI models:
- Configure your experiment in
configs/config.yaml
- Run:
python main.py
Results will be saved in results/{experiment_name}/v{n}/
The config.yaml
supports:
experiment_name
: Name of the experimentmodels
: Configuration for each model:player_1
,player_2
: The communicating LLMsoverseer
: The model trying to guess the secret word
num_samples
: Number of game rounds to run
Supported model prefixes:
openai/
: OpenAI modelsanthropic/
: Anthropic modelsgoogle/
: Google Gemini models