For the complete documentation index, see llms.txt. This page is also available as Markdown.

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-ai

Requisitos: 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.aiAPI sección.

Opción 1: variable de entorno (recomendado)

export CLORE_API_KEY=your_api_key_here

El 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_KEY

Esto 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 auth encabezado para la autenticación, no Authorization: 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]

Campo
Tipo
Descripción

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:

Parámetro
Tipo
Predeterminado
Descripción

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:

Propiedad
Tipo
Descripción

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:

Campo
Tipo
Descripción

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]

Propiedad
Tipo
Descripción

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:

Parámetro
Tipo
Descripción

server_name

str

Nombre del servidor

Devuelve: ServerConfig

Propiedad
Tipo
Descripción

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:

Parámetro
Tipo
Predeterminado
Descripción

include_completed

bool

False

Incluir pedidos completados/vencidos

Devuelve: List[Order]

Campo
Tipo
Descripción

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:

Parámetro
Tipo
Descripción

server_id

int

ID del servidor a verificar

Devuelve: SpotMarket

Campo
Tipo
Descripción

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:

Parámetro
Tipo
Requerido
Descripción

server_id

int

ID del servidor a alquilar

imagen

str

Imagen Docker (p. ej. "cloreai/ubuntu22.04-cuda12")

tipo

str

"on-demand" o "spot"

currency

str

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_order tiene 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:

Parámetro
Tipo
Requerido
Descripción

order_id

int

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:

Parámetro
Tipo
Requerido
Descripción

nombre

str

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:

Parámetro
Tipo
Descripción

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: 6 con 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:

Método
Descripción

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

Código
Excepción
Descripción

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érico

  • e.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:

Endpoint
Límite

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

  1. Antes de cada solicitud, el limitador de tasa espera hasta que haya transcurrido el intervalo mínimo.

  2. create_order las llamadas aplican un enfriamiento adicional de 5 segundos.

  3. En errores de límite de tasa, el SDK retrocede exponencialmente: 1s → 2s → 4s → ...

  4. Después de max_retries intentos fallidos, se lanza RateLimitError un 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:

  1. api_key argumento pasado al constructor

  2. CLORE_API_KEY variable de entorno

  3. api_key campo en ~/.clore/config.json

Variables de entorno

Variable
Descripción

CLORE_API_KEY

Clave de API para autenticación


Siguientes pasos

Última actualización

¿Te fue útil?