File size: 7,389 Bytes
514b626
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
# 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

1. **Sarah Chen** (34) - Urban Planner
   - Progressive, sustainability-focused
   - High environmental concern, data-driven
   - Bikes to work, rents downtown

2. **Marcus Thompson** (52) - Restaurant Owner
   - Moderate, economically pragmatic
   - 28 years in community, Main Street Business Association president
   - Concerned about parking and customer access

3. **Dr. Elena Rodriguez** (43) - Transportation Engineer
   - Technical, evidence-based
   - PhD from UC Berkeley, Chief Transportation Engineer
   - Prioritizes safety metrics and engineering standards

4. **James O'Brien** (68) - Retired Teacher
   - Conservative, tradition-oriented
   - Lifelong resident, active in neighborhood association
   - Resistant to change, concerned about neighborhood character

5. **Priya Patel** (28) - Housing Advocate
   - Very progressive, justice-focused
   - Nonprofit organizer, tenant rights activist
   - Prioritizes equity and anti-displacement

6. **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
```bash
# 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
```python
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

1. **LLM Dependency**: Requires Anthropic API access (costs per query)
2. **No Persistence**: Query history not saved (could add database)
3. **Static Personas**: Personas don't learn or change (by design for Phase 1)
4. **English Only**: Currently English language only
5. **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](GETTING_STARTED.md) for setup instructions
- Review [README.md](../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!