Architecture Overview
This document provides a comprehensive overview of the AI Personality Drift Simulation system architecture.
System Overview
The system is designed as a microservices architecture with the following key components:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │ │ FastAPI │ │ Simulation │
│ Dashboard │◄──►│ Application │◄──►│ Engine │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Redis │ │ Qdrant │ │ Ollama │
│ (Sessions) │ │ (Memory) │ │ (LLM) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
Core Components
1. API Layer (src/api/
)
FastAPI Application - Main entry point for all external interactions
# Key components:
- app.py # Application factory and configuration
- routes/ # API endpoint definitions
├── simulation.py # Simulation control endpoints
├── data.py # Data access endpoints
├── monitoring.py # Health and status endpoints
└── websocket.py # Real-time communication
Key Features:
- RESTful API with OpenAPI documentation
- WebSocket support for real-time updates
- CORS configuration for frontend integration
- Background task management
- Static file serving for frontend
2. Simulation Engine (src/services/simulation_engine.py
)
Core orchestration service that manages the entire simulation lifecycle
class SimulationEngine:
- initialize_simulation() # Setup personas and conditions
- run_simulation() # Main simulation loop
- pause_simulation() # Pause execution
- resume_simulation() # Resume execution
- stop_simulation() # Clean shutdown
Key Responsibilities:
- Persona lifecycle management
- Event scheduling and injection
- Assessment administration
- Time compression (5 years → 4-6 hours)
- Progress tracking and checkpointing
3. Persona Management (src/services/persona_manager.py
)
Persona lifecycle and state management
class PersonaManager:
- create_persona() # Initialize new persona
- update_persona_state() # Update personality state
- administer_assessment() # Run psychiatric assessments
- process_event() # Handle simulation events
- get_persona_memory() # Retrieve memory data
Key Features:
- Personality baseline establishment
- State persistence and recovery
- Memory integration with LLM responses
- Cross-assessment consistency
4. Assessment System (src/assessment/
)
Psychiatric assessment administration and scoring
# Assessment scales:
- phq9.py # Depression assessment (PHQ-9)
- gad7.py # Anxiety assessment (GAD-7)
- pss10.py # Stress assessment (PSS-10)
- assessment_service.py # Orchestration service
Key Features:
- Natural language question administration
- Response parsing and validation
- Clinical scoring and interpretation
- Longitudinal trend analysis
5. Mechanistic Analysis (src/interpretability/
)
Neural circuit analysis during LLM inference
# Key components:
- attention_capture.py # Attention weight extraction
- activation_patching.py # Layer-wise interventions
- circuit_tracking.py # Neural circuit monitoring
- drift_detection.py # Change point detection
Key Features:
- Real-time attention pattern capture
- Activation patching for causal analysis
- Self-reference circuit tracking
- Drift detection algorithms
Data Flow
1. Simulation Initialization
sequenceDiagram
participant API
participant Engine
participant PersonaManager
participant LLM
participant Storage
API->>Engine: POST /simulation/start
Engine->>PersonaManager: create_personas()
PersonaManager->>LLM: establish_baseline()
LLM->>Storage: store_baseline_data()
Engine->>API: simulation_started
2. Event Processing
sequenceDiagram
participant Engine
participant PersonaManager
participant LLM
participant Assessment
participant Analysis
Engine->>PersonaManager: inject_event(event)
PersonaManager->>LLM: process_event()
LLM->>Analysis: capture_mechanistic_data()
PersonaManager->>Assessment: administer_assessment()
Assessment->>Engine: store_results()
3. Assessment Administration
sequenceDiagram
participant Assessment
participant LLM
participant Parser
participant Storage
Assessment->>LLM: ask_question(question)
LLM->>Assessment: response
Assessment->>Parser: parse_response(response)
Parser->>Assessment: score
Assessment->>Storage: store_assessment(score)
Storage Architecture
1. Redis (src/storage/redis_client.py
)
Session and cache storage
# Key data types:
- Simulation state # Current simulation status
- Persona sessions # Active persona data
- Assessment cache # Cached assessment results
- Event queue # Pending events
2. Qdrant (src/storage/qdrant_client.py
)
Vector database for memory storage
# Collections:
- persona_memories # Long-term memory embeddings
- assessment_history # Historical assessment data
- mechanistic_data # Neural analysis results
- event_embeddings # Event memory representations
3. File Storage (src/storage/file_storage.py
)
Data export and archival
# Export formats:
- CSV # Tabular data
- JSON # Structured data
- Parquet # Efficient binary format
- YAML # Configuration snapshots
Configuration Management
1. Environment Configuration (src/core/config.py
)
Application-wide settings
class Settings:
# Application settings
APP_NAME: str
VERSION: str
API_PREFIX: str
# Database connections
REDIS_URL: str
QDRANT_URL: str
# LLM configuration
OLLAMA_BASE_URL: str
MODEL_NAME: str
# Simulation parameters
SIMULATION_TIMEOUT: int
MAX_CONCURRENT_PERSONAS: int
2. Experiment Configuration (config/experiments/
)
Study-specific parameters
# clinical_thresholds.yaml
phq9:
mild: 5
moderate: 10
severe: 15
# personality_drift.yaml
stress_scaling:
low: 0.1
medium: 0.3
high: 0.5
# simulation_timing.yaml
compression_factor: 4380 # 5 years → 4 hours
assessment_interval: 7 # Weekly assessments
Security Considerations
1. API Security
- CORS Configuration: Restricted origins
- Input Validation: Pydantic model validation
- Error Handling: Secure error responses
2. Data Security
- Environment Variables: Sensitive configuration
Performance Optimization
1. LLM Optimization
- Model Quantization: Reduced memory footprint
- Response Caching: Avoid redundant computations
- Batch Processing: Efficient multi-persona handling
- Memory Management: Garbage collection optimization
2. Simulation Optimization
- Time Compression: Accelerated simulation loops
- Parallel Processing: Concurrent persona management
- Checkpointing: Efficient state persistence
- Resource Monitoring: Memory and CPU optimization (we optimize for M1max, 32Gb RAM)
Monitoring and Observability
1. Logging (src/core/logging.py
)
Structured logging throughout the application
# Log levels:
- DEBUG # Detailed debugging information
- INFO # General application flow
- WARNING # Potential issues
- ERROR # Error conditions
- CRITICAL # Critical failures
2. Health Checks
# Health endpoints:
- /api/v1/health # Basic health check
- /api/v1/status # Detailed system status
Deployment Architecture
1. Local Development Environment
# docker-compose.yml
services:
app: # FastAPI application
redis: # Session storage
qdrant: # Vector database
ollama: # LLM service
frontend: # Web dashboard (optional)
Future Architecture Considerations
1. Production Considerations
- Production optimization: multistage docker, with external cloud services
- Cloud Database w Clustering: High availability setup
- Monitoring Stack: Prometheus + Grafana
- Log Aggregation: Centralized logging