Spaces:
Sleeping
A newer version of the Streamlit SDK is available:
1.55.0
Phase 1 Implementation Summary
Overview
Phase 1 of the AI Personas system is now complete! This phase provides a foundation for querying synthetic personas representing diverse urban planning stakeholders and receiving contextually-aware responses.
What's Implemented
Core Functionality
β Persona System
- 6 diverse synthetic personas representing key urban stakeholders
- Comprehensive data models with demographics, psychographics, and behavioral profiles
- Persona database with search and filtering capabilities
- Easy-to-extend JSON-based persona definitions
β Environmental Context System
- Multi-dimensional context modeling (built environment, social, economic, temporal)
- Sample downtown district context included
- Context database for managing multiple locations
- Extensible for adding new contexts
β LLM Integration
- Anthropic Claude API integration
- Smart prompt construction from persona + context
- Support for conversation history
- Configurable temperature and token limits
β Query-Response Pipeline
- End-to-end system for querying personas
- Single and multi-persona query support
- Structured response objects with metadata
- System health checking
β User Interfaces
- Interactive CLI for exploration
- Example scripts demonstrating usage
- Python API for programmatic access
β Documentation
- Comprehensive README
- Getting Started guide
- Example code
- Test suite
The 6 Personas
Sarah Chen (34) - Urban Planner
- Progressive, sustainability-focused
- High environmental concern, data-driven
- Bikes to work, rents downtown
Marcus Thompson (52) - Restaurant Owner
- Moderate, economically pragmatic
- 28 years in community, Main Street Business Association president
- Concerned about parking and customer access
Dr. Elena Rodriguez (43) - Transportation Engineer
- Technical, evidence-based
- PhD from UC Berkeley, Chief Transportation Engineer
- Prioritizes safety metrics and engineering standards
James O'Brien (68) - Retired Teacher
- Conservative, tradition-oriented
- Lifelong resident, active in neighborhood association
- Resistant to change, concerned about neighborhood character
Priya Patel (28) - Housing Advocate
- Very progressive, justice-focused
- Nonprofit organizer, tenant rights activist
- Prioritizes equity and anti-displacement
David Kim (46) - Real Estate Developer
- Market-driven, growth-oriented
- MBA from Wharton, owns development firm
- Focuses on ROI and reducing regulations
Key Features
Authentic Responses
Each persona responds based on:
- Their values, priorities, and political orientation
- Professional expertise and life experience
- Communication style and typical concerns
- Current environmental context
Contextual Awareness
Responses consider:
- Built environment characteristics
- Social and demographic context
- Economic conditions
- Recent events and upcoming decisions
Multiple Perspectives
Easily query all personas with the same question to see:
- How different stakeholders frame issues
- What concerns each group prioritizes
- Where consensus or conflict exists
- How values shape interpretations
Usage Examples
Quick Start
# Test the system
python tests/test_basic_functionality.py
# Run a simple query
python examples/phase1_simple_query.py
# See multiple perspectives
python examples/phase1_multiple_perspectives.py
# Interactive exploration
python -m src.cli
Python API
from src.pipeline.query_engine import QueryEngine
engine = QueryEngine()
# Single persona query
response = engine.query(
persona_id="sarah_chen",
question="Should we add bike lanes on Main Street?",
context_id="downtown_district"
)
print(response.response)
# Multiple personas
responses = engine.query_multiple(
persona_ids=["sarah_chen", "marcus_thompson"],
question="What's your view on the parking reduction?",
context_id="downtown_district"
)
Technical Architecture
AI_Personas/
βββ src/
β βββ personas/ # Persona data models and database
β βββ context/ # Environmental context system
β βββ llm/ # Anthropic Claude integration
β βββ pipeline/ # Query-response orchestration
β βββ cli.py # Interactive interface
βββ data/
β βββ personas/ # 6 persona JSON files
β βββ contexts/ # Environmental context data
βββ examples/ # Usage examples
βββ tests/ # Test suite
βββ docs/ # Documentation
What's Next
Phase 2: Population Response Distributions (Planned)
- Generate persona variants with statistical distributions
- Query populations of 100+ persona instances
- Analyze response distributions (mean, variance, clusters)
- Visualize opinion distributions
- Support different sampling methods (gaussian, uniform, bootstrap)
Phase 3: Multi-Persona Influence & Equilibrium (Planned)
- Model social network graphs between personas
- Implement opinion dynamics models:
- DeGroot (weighted averaging)
- Bounded Confidence (Hegselmann-Krause)
- Voter models
- Run iterative influence simulations
- Detect opinion equilibria and convergence
- Visualize influence propagation
Extensibility
The system is designed for easy extension:
Add Personas: Drop new JSON files in data/personas/
Add Contexts: Add environmental contexts in data/contexts/
Custom LLMs: Swap AnthropicClient for Be.FM or other models
New Features: Modular architecture supports adding capabilities
Requirements
- Python 3.11+
- Anthropic API key
- Dependencies in
requirements.txt
Testing
All core functionality tested:
- β Persona loading and management
- β Context loading and management
- β Search and filtering
- β Summary generation
- β Data validation
Performance
- Single query: ~2-5 seconds (depends on LLM)
- Multi-persona query: Linear scaling
- Persona loading: Instant (<100ms for 6 personas)
- Context loading: Instant
Known Limitations
- LLM Dependency: Requires Anthropic API access (costs per query)
- No Persistence: Query history not saved (could add database)
- Static Personas: Personas don't learn or change (by design for Phase 1)
- English Only: Currently English language only
- Single Context: Only one sample context included
Future Enhancements (Beyond Phase 3)
- Web interface for broader accessibility
- Query history and analytics
- Persona evolution over time
- Multi-language support
- Integration with GIS data
- Real-time context updates
- Collaborative features for planning teams
Success Metrics
Phase 1 successfully delivers:
- β Working end-to-end system
- β 6 diverse, realistic personas
- β Contextually-aware responses
- β Multiple query interfaces
- β Extensible architecture
- β Comprehensive documentation
Getting Help
- See GETTING_STARTED.md for setup instructions
- Review README.md for project overview
- Check example scripts in
examples/directory - Run tests with
python tests/test_basic_functionality.py
Phase 1 Status: β COMPLETE
Ready for Phase 2 development and real-world testing!