You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
swarms/examples/simulations/agent_map/v0/demo_simulation.py

331 lines
12 KiB

#!/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)}")