PlatoClient
The PlatoClient
is your main entry point for interacting with the Plato platform. It handles authentication, environment creation, task management, and simulator operations.
Initialization
from plato import Plato
# Initialize with environment variables
client = Plato()
# Or specify API key directly
client = Plato(api_key="your_api_key")
# Custom configuration
client = Plato(
api_key="your_api_key",
base_url="https://api.plato.so", # Optional: API endpoint
)
Environment Management
Create Environment
Create a new Plato environment for testing and automation:
# Basic environment creation
env = await client.make_environment(env_id="doordash")
# Advanced environment creation with custom settings
env = await client.make_environment(
env_id="doordash",
open_page_on_start=True,
viewport_width=1920,
viewport_height=1080,
interface_type="browser",
record_network_requests=True,
record_actions=True,
env_config={"custom_setting": "value"},
keepalive=True,
alias="my-test-environment"
)
# Use as context manager for automatic cleanup
async with client.make_environment("doordash") as env:
# Your automation code here
pass
Parameters:
env_id
(str): Environment identifier (e.g., “doordash”, “espocrm”)
open_page_on_start
(bool): Whether to open the page immediately
viewport_width/height
(int): Browser viewport dimensions
interface_type
(str): Interface type (“browser” or “noop”)
record_network_requests
(bool): Enable network request recording
record_actions
(bool): Enable action recording
env_config
(dict): Custom environment configuration
keepalive
(bool): Prevent job termination due to heartbeat failures
alias
(str): Optional alias for the job group
Close Client
Properly close the client and clean up resources:
# Close the client session
await client.close()
Simulator Management
List Simulators
Get all available simulators:
simulators = await client.list_simulators()
for simulator in simulators:
print(f"Name: {simulator['name']}")
print(f"Description: {simulator['description']}")
print(f"Enabled: {simulator['enabled']}")
Returns a list of enabled simulators with their metadata.
Task Management
Load Tasks by Simulator Name
Load all tasks from a specific simulator:
# Load tasks from a simulator
tasks = await client.load_tasks("doordash")
for task in tasks:
print(f"Task: {task.name}")
print(f"ID: {task.public_id}")
print(f"Prompt: {task.prompt}")
print(f"Start URL: {task.start_url}")
print(f"Average Time: {task.average_time}s")
print(f"Average Steps: {task.average_steps}")
List Tasks by Simulator ID
Get tasks using the simulator’s internal ID:
# Get tasks by simulator ID
tasks = await client.list_simulator_tasks_by_id("simulator_id_123")
for task in tasks:
print(f"Name: {task['name']}")
print(f"Public ID: {task['publicId']}")
print(f"Prompt: {task['prompt']}")
Complete Example
Here’s a complete example showing typical usage:
import asyncio
from plato import Plato
async def main():
# Initialize client
client = Plato(api_key="your-api-key")
# List available simulators
simulators = await client.list_simulators()
print(f"Available simulators: {[s['name'] for s in simulators]}")
# Load tasks for a specific simulator
tasks = await client.load_tasks("doordash")
print(f"Found {len(tasks)} tasks")
# Create environment
env = await client.make_environment("doordash")
# Start interaction
await env.reset()
cdp_url = await env.get_cdp_url()
# Take actions with your agent
your_agent = await YourAgent(cdp_url).start()
# Get final state mutations
state_changes = await env.get_state()
# Clean up
await env.close()
await client.close()
asyncio.run(main())
Environment Variables
The client looks for these environment variables:
# Required
PLATO_API_KEY=your_api_key
# Optional
PLATO_BASE_URL=your_api_endpoint # Defaults to https://api.plato.so
Error Handling
from plato.exceptions import PlatoClientError
try:
env = await client.make_environment("invalid_env_id")
except PlatoClientError as e:
print(f"Plato error: {e}")
except Exception as e:
print(f"Unexpected error: {e}")
Always properly close the client and its environments when done to free up resources. Use context managers (async with
) for automatic cleanup.