Main
Composabl Main API Documentation
Overview
The Composabl Main API is the primary interface for the Composabl SDK. It provides a unified wrapper that combines functionality from composabl-core
, composabl-train
, and composabl-cli
into a single, convenient package.
Installation
pip install composabl
This single installation provides access to all Composabl SDK components.
Package Structure
The main package re-exports all public APIs from:
composabl_core: Core components and building blocks
composabl_train: Training infrastructure
composabl_cli: Command-line interface (available via
composabl
command)
Basic Usage
Importing
All functionality is available through the main composabl
import:
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,
)
Environment Setup
Before using Composabl, configure your environment:
import os
# Required: Set your license key
os.environ["COMPOSABL_LICENSE"] = "your-license-key"
# Required: Accept the EULA
os.environ["COMPOSABL_EULA_AGREED"] = "1"
# Optional: Set log level
os.environ["LOGLEVEL"] = "INFO" # DEBUG, INFO, WARNING, ERROR
Goal Types
# 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)
Configuration Options
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
}
}
Core Classes
# 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()
Migration Guide
If migrating from separate imports:
# Old way
from composabl_core import Agent, Skill
from composabl_train import Trainer
# New way (recommended)
from composabl import Agent, Skill, Trainer
Debug Mode
Enable detailed logging:
import logging
logging.basicConfig(level=logging.DEBUG)
# Or via environment
os.environ["LOGLEVEL"] = "DEBUG"
Last updated