Spaces:
Sleeping
Sleeping
| """ | |
| Phase 1 Example: Multiple Persona Perspectives | |
| This example demonstrates querying multiple personas about the same | |
| urban planning issue to see diverse stakeholder perspectives. | |
| """ | |
| import sys | |
| from pathlib import Path | |
| # Add parent directory to path | |
| sys.path.insert(0, str(Path(__file__).parent.parent)) | |
| from src.pipeline.query_engine import QueryEngine | |
| from rich.console import Console | |
| from rich.panel import Panel | |
| from rich.markdown import Markdown | |
| console = Console() | |
| def main(): | |
| console.print("\n[bold cyan]Phase 1 Example: Multiple Stakeholder Perspectives[/bold cyan]\n") | |
| # Initialize the query engine | |
| console.print("Initializing system...", style="dim") | |
| engine = QueryEngine() | |
| # Test system | |
| if not engine.test_system(): | |
| console.print("[red]System test failed. Please check your configuration.[/red]") | |
| return | |
| console.print() | |
| # Define a planning scenario | |
| question = "What's your opinion on the proposed bike lane on Main Street?" | |
| scenario = """ | |
| The city is proposing to convert one car lane on Main Street into a | |
| protected bike lane. This would reduce car lanes from 4 to 3, add | |
| bike infrastructure, and potentially remove some on-street parking. | |
| """ | |
| console.print(Panel( | |
| f"[bold]Question:[/bold] {question}\n\n" | |
| f"[bold]Scenario:[/bold]{scenario}", | |
| title="Planning Issue", | |
| border_style="cyan" | |
| )) | |
| # Query multiple personas | |
| personas_to_query = [ | |
| "sarah_chen", # Progressive urban planner | |
| "marcus_thompson", # Business owner | |
| "elena_rodriguez", # Transportation engineer | |
| "james_obrien", # Long-time resident | |
| "priya_patel", # Housing advocate | |
| "david_kim", # Developer | |
| ] | |
| console.print(f"\n[bold]Querying {len(personas_to_query)} stakeholders...[/bold]\n") | |
| responses = engine.query_multiple( | |
| persona_ids=personas_to_query, | |
| question=question, | |
| context_id="downtown_district", | |
| scenario_description=scenario.strip(), | |
| ) | |
| # Display all responses | |
| for i, response in enumerate(responses, 1): | |
| console.print(f"\n[bold cyan]{i}. {response.persona_name}[/bold cyan] [dim]({response.persona_role})[/dim]") | |
| console.print("-" * 70) | |
| console.print(response.response) | |
| console.print() | |
| # Summary | |
| console.print("\n" + "=" * 70) | |
| console.print(f"\n[bold green]✓ Received {len(responses)} diverse perspectives[/bold green]") | |
| console.print("\n[dim]This demonstrates how different stakeholders view the same ") | |
| console.print("urban planning issue through their unique lenses of values, ") | |
| console.print("experience, and priorities.[/dim]\n") | |
| if __name__ == "__main__": | |
| main() | |