""" 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()