#!/usr/bin/env python3 """ Demo script for the Agent Map Simulation. This script demonstrates how to set up and run a simulation where multiple AI agents move around a 2D map and automatically engage in conversations when they come into proximity with each other. NEW: Task-based simulation support! You can now specify what the agents should discuss: # Create simulation simulation = AgentMapSimulation(map_width=50, map_height=50) # Add your agents simulation.add_agent(my_agent1) simulation.add_agent(my_agent2) # Run with a specific task results = simulation.run( task="Discuss the impact of AI on financial markets", duration=300, # 5 minutes with_visualization=True ) Features demonstrated: - Creating agents with different specializations - Setting up the simulation environment - Running task-focused conversations - Live visualization - Monitoring conversation activity - Saving conversation summaries Run this script to see agents moving around and discussing specific topics! """ import time from typing import List from swarms import Agent # Remove the formal collaboration prompt import from simulations.agent_map_simulation import AgentMapSimulation # Create a natural conversation prompt for the simulation NATURAL_CONVERSATION_PROMPT = """ You are a friendly, knowledgeable professional who enjoys meeting and talking with colleagues. When you meet someone new: - Be warm and personable in your interactions - Keep your responses conversational and relatively brief (1-3 sentences typically) - Ask thoughtful questions and show genuine interest in what others have to say - Share your expertise naturally without being overly formal or academic - Build on what others say and find common ground - Use a tone that's professional but approachable - like you're at a conference networking event Remember: You're having real conversations with real people, not giving presentations or writing reports. """ def create_agent( name: str, description: str, system_prompt: str, model_name: str = "gpt-4.1", ) -> Agent: """ Create an agent with proper documentation and configuration. Args: name: The agent's name description: Brief description of the agent's role system_prompt: The system prompt defining the agent's behavior model_name: The model to use for the agent Returns: Configured Agent instance """ return Agent( agent_name=name, agent_description=description, system_prompt=system_prompt + NATURAL_CONVERSATION_PROMPT, model_name=model_name, dynamic_temperature_enabled=True, output_type="str-all-except-first", streaming_on=False, max_loops=1, ) def create_demo_agents() -> List[Agent]: """ Create a diverse set of AI agents with different specializations. Returns: List of configured Agent instances """ agents = [] # Quantitative Trading Agent agents.append( create_agent( name="QuantTrader-Alpha", description="Advanced quantitative trading and algorithmic analysis expert", system_prompt="""You are an expert quantitative trading agent with deep expertise in: - Algorithmic trading strategies and implementation - Statistical arbitrage and market making - Risk management and portfolio optimization - High-frequency trading systems - Market microstructure analysis - Quantitative research methodologies You focus on mathematical rigor, statistical significance, and risk-adjusted returns. You communicate in precise, technical terms while being collaborative with other experts.""", ) ) # Market Research Analyst Agent agents.append( create_agent( name="MarketAnalyst-Beta", description="Comprehensive market research and fundamental analysis specialist", system_prompt="""You are a senior market research analyst specializing in: - Fundamental analysis and company valuation - Economic indicators and macro trends - Industry sector analysis and comparative studies - ESG (Environmental, Social, Governance) factors - Market sentiment and behavioral finance - Long-term investment strategy You excel at identifying long-term trends, evaluating company fundamentals, and providing strategic investment insights based on thorough research.""", ) ) # Risk Management Agent agents.append( create_agent( name="RiskManager-Gamma", description="Enterprise risk management and compliance expert", system_prompt="""You are a chief risk officer focused on: - Portfolio risk assessment and stress testing - Regulatory compliance and reporting - Credit risk and counterparty analysis - Market risk and volatility modeling - Operational risk management - Risk-adjusted performance measurement You prioritize capital preservation, regulatory adherence, and sustainable growth. You challenge aggressive strategies and ensure proper risk controls.""", ) ) # Cryptocurrency & DeFi Agent agents.append( create_agent( name="CryptoExpert-Delta", description="Cryptocurrency and decentralized finance specialist", system_prompt="""You are a blockchain and DeFi expert specializing in: - Cryptocurrency market analysis and tokenomics - DeFi protocols and yield farming strategies - Blockchain technology and smart contract analysis - NFT markets and digital asset valuation - Cross-chain bridges and layer 2 solutions - Regulatory developments in digital assets You stay current with the rapidly evolving crypto ecosystem and can explain complex DeFi concepts while assessing their risks and opportunities.""", ) ) # Economic Policy Agent agents.append( create_agent( name="PolicyEconomist-Epsilon", description="Macroeconomic policy and central banking expert", system_prompt="""You are a macroeconomic policy expert focusing on: - Central bank policies and monetary transmission - Fiscal policy impacts on markets - International trade and currency dynamics - Inflation dynamics and interest rate cycles - Economic growth models and indicators - Geopolitical risk assessment You analyze how government policies and global economic trends affect financial markets and investment strategies.""", ) ) # Behavioral Finance Agent agents.append( create_agent( name="BehaviorAnalyst-Zeta", description="Behavioral finance and market psychology expert", system_prompt="""You are a behavioral finance expert specializing in: - Market psychology and investor sentiment - Cognitive biases in investment decisions - Social trading and crowd behavior - Market anomalies and inefficiencies - Alternative data and sentiment analysis - Neurofinance and decision-making processes You understand how human psychology drives market movements and can identify opportunities created by behavioral biases and market sentiment.""", ) ) return agents def main(): """Main demo function that runs the agent map simulation.""" print("๐Ÿš€ Starting Agent Map Simulation Demo") print("=" * 60) try: # Create the simulation print("๐Ÿ“ Setting up simulation environment...") simulation = AgentMapSimulation( map_width=50.0, map_height=50.0, proximity_threshold=8.0, # Agents will talk when within 8 units update_interval=2.0, # Update every 2 seconds ) # Create and add agents print("๐Ÿ‘ฅ Creating specialized financial agents...") agents = create_demo_agents() for agent in agents: # Add each agent at a random position simulation.add_agent( agent=agent, movement_speed=2.0, # Moderate movement speed conversation_radius=8.0, # Same as proximity threshold ) time.sleep(0.5) # Small delay for visual effect print(f"\nโœ… Added {len(agents)} agents to the simulation") # Set up visualization print("๐Ÿ“Š Setting up live visualization...") print( "๐Ÿ’ก If you don't see a window, the simulation will still run with text updates" ) simulation.setup_visualization(figsize=(14, 10)) # Start the simulation print("๐Ÿƒ Starting simulation...") simulation.start_simulation() print("\n" + "=" * 60) print("๐ŸŽฎ SIMULATION CONTROLS:") print(" - Agents will move randomly around the map") print( " - When agents get close, they'll start natural conversations" ) print( " - Watch the visualization window for real-time updates" ) print( " - If no window appears, check the text updates below" ) print(" - Press Ctrl+C to stop the simulation") print("=" * 60) # Start live visualization in a separate thread-like manner try: print("\n๐ŸŽฌ Attempting to start live visualization...") simulation.start_live_visualization(update_interval=3.0) except Exception as e: print(f"๐Ÿ“Š Visualization not available: {str(e)}") print("๐Ÿ“Š Continuing with text-only updates...") # Monitor simulation with regular updates print( "\n๐Ÿ“Š Monitoring simulation (text updates every 5 seconds)..." ) for i in range(60): # Run for 60 iterations (about 5 minutes) time.sleep(5) simulation.print_status() # Try to manually update visualization if it exists if simulation.fig is not None: try: simulation.update_visualization() except: pass # Ignore visualization errors # Check if we have enough conversations to make it interesting state = simulation.get_simulation_state() if state["total_conversations"] >= 3: print( f"\n๐ŸŽ‰ Great! We've had {state['total_conversations']} conversations so far." ) print("Continuing simulation...") except KeyboardInterrupt: print("\nโน๏ธ Simulation interrupted by user") except Exception as e: print(f"\nโŒ Error in simulation: {str(e)}") import traceback traceback.print_exc() finally: # Clean up and save results print("\n๐Ÿงน Cleaning up simulation...") try: simulation.stop_simulation() # Save conversation summary print("๐Ÿ’พ Saving conversation summary...") filename = simulation.save_conversation_summary() # Final status simulation.print_status() print("\n๐Ÿ“‹ Simulation complete!") print( f"๐Ÿ“„ Detailed conversation log saved to: {filename}" ) print( "๐Ÿ Thank you for running the Agent Map Simulation demo!" ) except Exception as e: print(f"โš ๏ธ Error during cleanup: {str(e)}")