Main
Last updated
from composabl import (
# Core Components
Agent, Skill, Sensor, Scenario, Perceptor,
# Skill Types
SkillTeacher, SkillController, SkillSelector,
SkillCoordinatedSet, SkillCoordinatedPopulation,
# Goals
MaintainGoal, ApproachGoal, AvoidGoal,
MaximizeGoal, MinimizeGoal,
# Training
Trainer,
)import os
# Required: Set your license key
os.environ["AMESA_LICENSE"] = "your-license-key"
# Required: Accept the EULA
os.environ["AMESA_EULA_AGREED"] = "1"
# Optional: Set log level
os.environ["LOGLEVEL"] = "INFO" # DEBUG, INFO, WARNING, ERROR# Maintain a value
MaintainGoal(sensor_name, description, target, stop_distance)
# Approach a target
ApproachGoal(sensor_name, description, target)
# Avoid a value
AvoidGoal(sensor_name, description, target, stop_distance)
# Maximize a metric
MaximizeGoal(sensor_name, description)
# Minimize a metric
MinimizeGoal(sensor_name, description)config = {
"license": "key",
"target": {
# Choose one:
"local": {"address": "host:port"},
"docker": {"image": "name:tag"}
},
"env": {
"name": "environment-id",
"init": {} # Environment parameters
},
"resources": {
"sim_count": 4,
"num_workers": 2,
"num_gpus": 0
}
}# Agent - Main orchestrator
agent = Agent()
agent.add_sensor(sensor)
agent.add_sensors([sensor1, sensor2])
agent.add_skill(skill)
agent.add_skills([skill1, skill2])
agent.add_perceptor(perceptor)
agent.export(path)
agent.draw() # Visualize structure
# Skill - Behavior module
skill = Skill(name, implementation)
# Sensor - Data transformer
sensor = Sensor(name, description, extractor_fn)
# Scenario - Initial conditions
scenario = Scenario(variable_dict)
# Trainer - Training orchestrator
trainer = Trainer(config)
trainer.train(agent, train_cycles)
trainer.evaluate(agent, num_episodes)
trainer.package(agent)
trainer.close()# Old way
from composabl_core import Agent, Skill
from composabl_train import Trainer
# New way (recommended)
from composabl import Agent, Skill, Trainerimport logging
logging.basicConfig(level=logging.DEBUG)
# Or via environment
os.environ["LOGLEVEL"] = "DEBUG"