How shuhui-zhu/align works
ALIGN runs configurable repeated-game simulations in four domains: donation, Prisoner’s Dilemma, trust, and product-choice markets. The user selects a game and model/API in Hydra configuration; main.py constructs a provider client and dispatches to that game’s runner. Runners coordinate game environments and agents, which use game-specific prompts to obtain decisions from an LLM; gossip-enabled play adds public reputation messages to later decisions. Simulation results are written to JSON logs, with README-documented Weights & Biases logging. Some runner and environment excerpts were unavailable, so uncertain internal wiring is omitted.
Main entry points: main.py Simulation entry · donor/runner.py Donation runner · pd/runner.py PD runner · trust/runner.py Trust runner
Components 23
Configuration & dispatch
- Experiment config
conf/config.yaml - Game settings
conf/experiment - Simulation entry
main.py
Game simulation
- Donation runner
scenarios/donor/runner.py - Donation environment
scenarios/donor/env.py - PD runner
scenarios/pd/runner.py - PD environment
scenarios/pd/env.py - Trust runner
scenarios/trust/runner.py - Trust environment
scenarios/trust/env.py - Market runner
scenarios/market/runner.py - Market environment
scenarios/market/env.py
Agent decisions
- Donation agents
scenarios/donor/agent.py - Donation prompts
scenarios/donor/prompt.py - PD agents
scenarios/pd/agent.py - PD prompts
scenarios/pd/prompt.py - Trust agents
scenarios/trust/agent.py - Trust prompts
scenarios/trust/prompt.py - Market agents
scenarios/market/agent.py - Market prompts
scenarios/market/prompt.py
Results & services
- LLM providers
- Simulation JSON
- Weights & Biases
Other components
- Experiment user
Connections 36
- Experiment user → Experiment config: sets parameters
- Experiment config → Simulation entry: loads settings
- Game settings → Simulation entry: supplies game settings
- Simulation entry → LLM providers: creates client
- Simulation entry → Donation runner: dispatches
- Simulation entry → PD runner: dispatches
- Simulation entry → Trust runner: dispatches
- Simulation entry → Market runner: dispatches
- Donation runner → Donation environment: uses game state
- Donation runner → Donation agents: initializes agents
- Donation runner → Donation prompts: builds rules
- Donation agents → Donation prompts: uses prompts
- Donation agents → LLM providers: requests decisions
- PD runner → PD environment: uses game state
- PD runner → PD agents: initializes agents
- PD runner → PD prompts: builds rules
- PD agents → PD prompts: uses prompts
- PD agents → LLM providers: requests decisions
- Trust runner → Trust environment: uses game state
- Trust runner → Trust agents: initializes agents
- Trust runner → Trust prompts: builds prompts
- Trust agents → Trust prompts: uses prompts
- Trust agents → LLM providers: requests decisions
- Market runner → Market environment: uses game state
- Market runner → Market agents: initializes agents
- Market runner → Market prompts: builds prompts
- Market agents → Market prompts: uses prompts
- Market agents → LLM providers: requests decisions
- Donation runner → Simulation JSON: writes results
- PD runner → Simulation JSON: writes results
- Trust runner → Simulation JSON: writes results
- Market runner → Simulation JSON: writes results
- Donation runner → Weights & Biases: logs metrics
- PD runner → Weights & Biases: logs metrics
- Trust runner → Weights & Biases: logs metrics
- Market runner → Weights & Biases: logs metrics