Quick Start Guide
This guide will help you get started with the Degent Civilization quickly. We'll create a simple simulation with buildings and characters.
Prerequisites
Ensure you have: - Completed the installation process - Set up your OpenAI API key - Started the required services (Milvus and Redis)
Basic Usage
1. Configure Environment
First, set up your environment variables:
export DEBUG=1
export Milvus=1
2. Start the Simulation
from app.service.simulation import Simulation
# Initialize simulation with config files
simulation = Simulation(
state_config_file='config/states.yaml',
oai_config_file='OAI_CONFIG_LIST'
)
# Start the service
simulation.debug_service() # For testing without frontend
3. Working with Buildings
# Access building list
buildings = simulation.building_list
# Get a specific building
cafe = buildings.get_building_by_name("Coffee Shop")
# Get building by position
building_at_pos = buildings.get_building_by_pos(x=10, y=10)
4. Working with Characters
# Access character list
characters = simulation.character_list
# Get character state managers
state_managers = simulation.character_state_managers
# Access specific character's state manager
character_manager = state_managers["Alice"]
Example Scenarios
1. Character State Management
# Get character's current state
state_manager = simulation.character_state_managers["Alice"]
current_state = state_manager.current_state.state_name
# Update character state
simulation.update_state()
2. Message Handling
# Handle server messages
server_msgs = simulation.handle_server_msg()
# Filter messages for specific character
character_manager = simulation.character_state_managers["Alice"]
filtered_msg = simulation.filter_out_msg(server_msgs, character_manager)
Memory System Usage
# Access character's memory
character = simulation.character_list.get_character_by_name("Alice")
# Store a memory
character.memory.store({
"people": {
"Bob": {
"interaction": "Met at cafe",
"timestamp": "2024-03-15T10:30:00"
}
}
})
# Retrieve memories
memories = character.memory.get_people_memory("Bob")
State Management
# Update simulation state
simulation.update_state()
# Save current state
simulation.save_state()
Next Steps
- Explore more complex scenarios in our Examples
- Learn about the Character System
- Understand State Management
- Check out API Reference for detailed documentation
Common Operations
Building Management
# Get all buildings
all_buildings = simulation.building_list.buildings
# Find building by name
cafe = simulation.building_list.get_building_by_name("Coffee Shop")
# Check if position is inside building
is_inside = cafe.cordinate_in_building(x=5, y=5)
Character Management
# Get all characters
all_characters = simulation.character_list.characters
# Get character by name
character = simulation.character_list.get_character_by_name("Alice")
Simulation Control
# Start simulation
simulation.start_service(city_state_msg)
# Update simulation
simulation.update_state()
# Save simulation state
simulation.save_state()
Troubleshooting
If you encounter issues:
- Check environment variables:
echo $DEBUG
echo $Milvus
- Verify Redis connection:
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
print(r.ping())
- Check simulation status:
print(simulation.started)
print(simulation.total_update_count)
For more detailed information, refer to our Troubleshooting Guide.