SDK de Python (clore-ai)
El clore-ai paquete es el SDK oficial de Python para el Clore.ai mercado de GPU. Envuelve toda la API REST en una interfaz limpia y segura en cuanto a tipos, con limitación de velocidad integrada, reintentos automáticos y manejo estructurado de errores — para que puedas centrarte en alquilar GPU, no en el cableado HTTP.
Instalación
pip install clore-aiRequisitos: Python 3.9+
El paquete instala tanto el SDK de Python como el clore CLI.
Autenticación
Obtén tu clave de API desde el panel de control de Clore.ai → API sección.
Opción 1: variable de entorno (recomendado)
export CLORE_API_KEY=your_api_key_hereEl SDK lee CLORE_API_KEY automáticamente — no se necesitan cambios en el código.
Opción 2: archivo de configuración de la CLI
clore config set api_key YOUR_API_KEYEsto almacena la clave en ~/.clore/config.json.
Opción 3: pásala directamente en el código
⚠️ Importante: La API de Clore.ai usa el
authencabezado para la autenticación, noAuthorization: Bearer. El SDK lo maneja automáticamente.
Inicio rápido
Cliente síncrono (CloreAI)
Constructor
El cliente admite gestores de contexto para la limpieza automática:
wallets()
Obtén los saldos de tus monederos y las direcciones de depósito.
Devuelve: List[Wallet]
nombre
str
Nombre de la moneda (p. ej. "bitcoin", "CLORE-Blockchain", "USD-Blockchain")
balance
float | None
Saldo actual
depósito
str | None
Dirección de depósito
comisión de retirada
float | None
Comisión de retirada
marketplace()
Busca en el mercado de GPU con filtros opcionales del lado del cliente.
Parámetros:
gpu
str | None
None
Filtrar por modelo de GPU (coincidencia de subcadena sin distinguir mayúsculas/minúsculas)
min_gpu_count
int | None
None
Número mínimo de GPU
min_ram_gb
float | None
None
RAM mínima en GB
max_price_usd
float | None
None
Precio máximo por hora en USD
available_only
bool
True
Devuelve solo servidores disponibles para alquilar
Devuelve: List[MarketplaceServer]
Cada MarketplaceServer proporciona propiedades convenientes para los campos más comunes, además de acceso a todos los datos anidados:
id
int
ID único del servidor
gpu_model
str | None
Descripción principal de la GPU (p. ej. "1x NVIDIA GeForce RTX 4090")
gpu_count
int
Número de GPU (de gpu_array)
ram_gb
float | None
RAM en GB
price_usd
float | None
Precio bajo demanda en USD
spot_price_usd
float | None
Precio spot en USD
available
bool
Si el servidor está disponible (no alquilado)
location
str | None
Código de país de las especificaciones de red
Para casos de uso avanzados, puedes acceder a la estructura anidada completa:
specs
ServerSpecs | None
Especificaciones completas de hardware (specs.gpu, specs.ram, specs.cpu, specs.disk, specs.net, etc.)
price
ServerPrice | None
Objeto de precio completo (price.usd.on_demand_usd, price.usd.spot, price.on_demand, etc.)
rented
bool | None
Si el servidor está alquilado actualmente
reliability
float | None
Puntuación de fiabilidad del servidor
rating
ServerRating | None
Valoración del servidor (rating.avg, rating.cnt)
Nota: El
marketplace()el endpoint es público — funciona sin una clave de API.
my_servers()
Lista los servidores que estás proporcionando al mercado de Clore.ai.
Devuelve: List[MyServer]
id
int
ID del servidor
nombre
str | None
Nombre del servidor
gpu_model
str | None
Descripción principal de la GPU
ram_gb
float | None
RAM en GB
estado
str
Estado legible por humanos: "En línea", "Sin conexión", "Desconectado", o "No funciona"
conectado
bool | None
Si el servidor está conectado
en línea
bool | None
Si el servidor está en línea
visibilidad
str | None
"público" o "privado"
server_config(server_name)
Obtén la configuración de un servidor específico que alojas.
Parámetros:
server_name
str
Nombre del servidor
Devuelve: ServerConfig
nombre
str | None
Nombre del servidor
gpu_model
str | None
Descripción principal de la GPU
mrl
int | None
Duración máxima del alquiler en horas
on_demand_price
float | None
Primer precio USD disponible bajo demanda
spot_price
float | None
Primer precio USD spot disponible
specs
ServerSpecs | None
Especificaciones completas de hardware
conectado
bool | None
Si el servidor está conectado
visibilidad
str | None
"público" o "privado"
my_orders(include_completed)
Obtén tus pedidos actuales, opcionalmente incluyendo los completados/vencidos.
Parámetros:
include_completed
bool
False
Incluir pedidos completados/vencidos
Devuelve: List[Order]
id
int
ID único del pedido
server_id
int | None
ID del servidor
tipo
str
"on-demand" o "spot"
estado
str | None
Estado del pedido
imagen
str | None
Imagen Docker
currency
str | None
Moneda de pago
price
float | None
Precio del pedido por día
pub_cluster
str | None
Hostname/IP público para acceso
tcp_ports
dict | None
Mapeos de puertos TCP
spot_marketplace(server_id)
Consulta las ofertas del mercado spot para un servidor específico.
Parámetros:
server_id
int
ID del servidor a verificar
Devuelve: SpotMarket
ofertas
List[SpotOffer] | None
Lista de ofertas spot (order_id, price, server_id)
servidor
SpotServerInfo | None
Información del servidor (precios mínimos, visibilidad, estado en línea)
currency_rates_in_usd
Dict[str, float] | None
Tipos de cambio de divisas en USD
create_order(...)
Crea un nuevo pedido bajo demanda o spot. Así es como alquilas una GPU.
Pedido bajo demanda
Pedido spot
Parámetros:
server_id
int
Sí
ID del servidor a alquilar
imagen
str
Sí
Imagen Docker (p. ej. "cloreai/ubuntu22.04-cuda12")
tipo
str
Sí
"on-demand" o "spot"
currency
str
Sí
Moneda de pago (p. ej. "bitcoin")
ssh_password
str
No
Contraseña SSH (alfanumérica, máx. 32 caracteres)
ssh_key
str
No
Clave pública SSH (máx. 3072 caracteres)
ports
dict
No
Mapeos de puertos, p. ej. {"22": "tcp", "8888": "http"}
env
dict
No
Variables de entorno
jupyter_token
str
No
Token del notebook de Jupyter (máx. 32 caracteres)
command
str
No
Comando de shell a ejecutar después de iniciar el contenedor
spot_price
float
Solo spot
Precio por día para pedidos spot
required_price
float
No
Bloquea un precio específico (solo bajo demanda)
autossh_entrypoint
str
No
Usa el entrypoint SSH de Clore.ai
gpu_count
int
No
Alquila solo N GPUs en servidores con alquiler parcial (solo bajo demanda); omite para alquilar el rig completo
gpu_indices
list[int]
No
Ranuras exactas de GPU de partial_gpu_rental.free_indices; la longitud debe ser igual a gpu_count; omite para selección automática
Devuelve: respuesta sin procesar de la API ({"code": 0} al tener éxito); obtén la orden creada mediante my_orders()
Límite de tasa:
create_ordertiene un enfriamiento especial de 5 segundos entre llamadas. El SDK lo aplica automáticamente.
cancel_order(order_id, issue)
Cancela una orden activa o una oferta spot. Opcionalmente informa un problema con el servidor.
Parámetros:
order_id
int
Sí
ID de la orden a cancelar
issue
str
No
Motivo de cancelación / reporte de problema (máx. 2048 caracteres)
Devuelve: Dict[str, Any]
set_server_settings(...)
Actualiza la configuración de un servidor que alojas en el marketplace.
Parámetros:
nombre
str
Sí
Nombre del servidor
availability
bool
No
Si el servidor puede alquilarse
mrl
int
No
Duración máxima del alquiler en horas
on_demand
float
No
Precio por día bajo demanda
spot
float
No
Precio mínimo spot por día
Devuelve: Dict[str, Any]
set_spot_price(order_id, price)
Actualiza el precio de tu oferta en el mercado spot.
Parámetros:
order_id
int
ID de la orden/oferta spot
price
float
Nuevo precio por día
Devuelve: Dict[str, Any]
Nota: Solo puedes bajar los precios spot una vez cada 600 segundos, y en un tamaño de paso limitado. La API devuelve
code: 6con detalles si superas estos límites.
Cliente asíncrono (AsyncCloreAI)
El AsyncCloreAI client proporciona los mismos métodos que CloreAI; pero todos devuelven corutinas. Úsalo cuando necesites llamadas concurrentes a la API o estés trabajando dentro de una aplicación asíncrona.
Uso básico
Operaciones concurrentes
Ejecuta múltiples llamadas a la API en paralelo con asyncio.gather:
Métodos disponibles
AsyncCloreAI admite todos los mismos métodos que CloreAI:
await wallets()
Obtener saldos de la cartera
await marketplace(...)
Buscar en el marketplace
await my_servers()
Listar tus servidores alojados
await server_config(name)
Obtener la configuración del servidor
await my_orders(...)
Listar tus órdenes
await spot_marketplace(server_id)
Obtener ofertas del mercado spot
await create_order(...)
Crear una nueva orden
await cancel_order(...)
Cancelar una orden
await set_server_settings(...)
Actualizar la configuración del servidor
await set_spot_price(...)
Actualizar el precio spot
Manejo de errores
El SDK proporciona clases de excepciones estructuradas para cada código de error de la API.
Códigos de error
0
—
Éxito
1
DBError
Error de base de datos
2
InvalidInputError
Datos de entrada no válidos
3
AuthError
Token de API no válido
4
InvalidEndpointError
Endpoint no válido
5
RateLimitError
Se superó el límite de tasa
6
FieldError
Error en un campo específico (consulta error campo en la respuesta)
Todas las clases de excepción heredan de CloreAPIError e incluyen:
e.code— código de error numéricoe.response— dict completo de la respuesta de la API (cuando esté disponible)
Limitación de tasa
El SDK incluye un limitador de tasa integrado que aplica automáticamente los límites de Clore.ai:
La mayoría de los endpoints
1 solicitud/segundo
create_order
1 solicitud/5 segundos
Cuando la API devuelve un error de límite de tasa (código 5), el SDK aplica retroceso exponencial e intenta de nuevo hasta max_retries veces (valor predeterminado: 3). No necesitas agregar time.sleep() entre llamadas.
Cómo funciona
Antes de cada solicitud, el limitador de tasa espera hasta que haya transcurrido el intervalo mínimo.
create_orderlas llamadas aplican un enfriamiento adicional de 5 segundos.En errores de límite de tasa, el SDK retrocede exponencialmente: 1s → 2s → 4s → ...
Después de
max_retriesintentos fallidos, se lanzaRateLimitErrorun error.
Personalizar el comportamiento de reintento
Configuración
Archivo de configuración
La CLI almacena la configuración en ~/.clore/config.json:
Orden de resolución
El SDK resuelve la clave de API en este orden:
api_keyargumento pasado al constructorCLORE_API_KEYvariable de entornoapi_keycampo en~/.clore/config.json
Variables de entorno
CLORE_API_KEY
Clave de API para autenticación
Siguientes pasos
Referencia de la CLI — Usa Clore.ai desde tu terminal
API REST — Documentación sin procesar de la API para integraciones personalizadas
Bajo demanda vs spot — Comprende los modelos de precios
Imágenes de Docker disponibles — Imágenes preconstruidas para cargas de trabajo de GPU
Última actualización
¿Te fue útil?