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

SDK Python (clore-ai)

Le clore-ai le package est le SDK Python officiel pour le Clore.ai place de marché GPU. Il enveloppe l’ensemble de l’API REST dans une interface propre et typée avec limitation de débit intégrée, tentatives automatiques et gestion structurée des erreurs — afin que vous puissiez vous concentrer sur la location de GPU, pas sur la plomberie HTTP.


Installation

pip install clore-ai

Exigences : Python 3.9+

Le package installe à la fois le SDK Python et le clore CLI.


Authentification

Obtenez votre clé API depuis le tableau de bord Clore.aiAPI section.

Option 1 : variable d’environnement (recommandée)

export CLORE_API_KEY=your_api_key_here

Le SDK lit CLORE_API_KEY automatiquement — aucun changement de code requis.

Option 2 : fichier de config CLI

clore config set api_key YOUR_API_KEY

Cela stocke la clé dans ~/.clore/config.json.

Option 3 : passer directement dans le code

⚠️ Important : L’API Clore.ai utilise l’ entête auth pour l’authentification, et non Authorization: Bearer. Le SDK gère cela automatiquement.


Démarrage rapide


Client synchrone (CloreAI)

Constructeur

Le client prend en charge les gestionnaires de contexte pour un nettoyage automatique :


wallets()

Obtenez vos soldes de portefeuille et adresses de dépôt.

Renvoie : List[Wallet]

Champ
Type
Description

name

str

Nom de la monnaie (par ex. "bitcoin", "CLORE-Blockchain", "USD-Blockchain")

balance

float | None

Solde actuel

deposit

str | None

Adresse de dépôt

withdrawal_fee

float | None

Frais de retrait


marketplace()

Recherchez sur la place de marché GPU avec des filtres optionnels côté client.

Paramètres :

Paramètre
Type
Par défaut
Description

gpu

str | None

Aucun

Filtrer par modèle de GPU (correspondance de sous-chaîne insensible à la casse)

min_gpu_count

int | None

Aucun

Nombre minimum de GPU

min_ram_gb

float | None

Aucun

RAM minimum en Go

max_price_usd

float | None

Aucun

Prix maximum par heure en USD

available_only

bool

True

Retourner uniquement les serveurs disponibles à la location

Renvoie : List[MarketplaceServer]

Chaque MarketplaceServer fournit des propriétés pratiques pour les champs les plus courants, plus l’accès aux données imbriquées complètes :

Propriété
Type
Description

id

int

ID unique du serveur

gpu_model

str | None

Description du GPU principal (par ex. "1x NVIDIA GeForce RTX 4090")

gpu_count

int

Nombre de GPU (depuis gpu_array)

ram_gb

float | None

RAM en Go

price_usd

float | None

Prix à la demande en USD

spot_price_usd

float | None

Prix spot en USD

available

bool

Si le serveur est disponible (non loué)

location

str | None

Code pays à partir des spécifications réseau

Pour des cas d’usage avancés, vous pouvez accéder à la structure imbriquée complète :

Champ
Type
Description

specs

ServerSpecs | None

Spécifications matérielles complètes (specs.gpu, specs.ram, specs.cpu, specs.disk, specs.net, etc.)

price

ServerPrice | None

Objet prix complet (price.usd.on_demand_usd, price.usd.spot, price.on_demand, etc.)

rented

bool | None

Si le serveur est actuellement loué

reliability

float | None

Score de fiabilité du serveur

rating

ServerRating | None

Note du serveur (rating.avg, rating.cnt)

Remarque : Le marketplace() l’endpoint est public — il fonctionne sans clé API.


my_servers()

Lister les serveurs que vous fournissez à la place de marché Clore.ai.

Renvoie : List[MyServer]

Propriété
Type
Description

id

int

ID du serveur

name

str | None

Nom du serveur

gpu_model

str | None

Description du GPU principal

ram_gb

float | None

RAM en Go

status

str

Statut lisible par l’humain : "Online", "Offline", "Disconnected", ou "Not Working"

connected

bool | None

Si le serveur est connecté

online

bool | None

Si le serveur est en ligne

visibility

str | None

"public" ou "private"


server_config(server_name)

Obtenez la configuration d’un serveur spécifique que vous hébergez.

Paramètres :

Paramètre
Type
Description

server_name

str

Nom du serveur

Renvoie : ServerConfig

Propriété
Type
Description

name

str | None

Nom du serveur

gpu_model

str | None

Description du GPU principal

mrl

int | None

Durée minimale de location en heures

on_demand_price

float | None

Premier prix on-demand disponible en USD

spot_price

float | None

Premier prix spot disponible en USD

specs

ServerSpecs | None

Spécifications matérielles complètes

connected

bool | None

Si le serveur est connecté

visibility

str | None

"public" ou "private"


my_orders(include_completed)

Obtenez vos commandes en cours, en incluant éventuellement celles terminées/expirées.

Paramètres :

Paramètre
Type
Par défaut
Description

include_completed

bool

False

Inclure les commandes terminées/expirées

Renvoie : List[Order]

Champ
Type
Description

id

int

ID unique de la commande

server_id

int | None

ID du serveur

type

str

"on-demand" ou "spot"

status

str | None

Statut de la commande

image

str | None

Image Docker

currency

str | None

Devise de paiement

price

float | None

Prix de la commande par jour

pub_cluster

str | None

Nom d’hôte/IP public pour l’accès

tcp_ports

dict | None

Mappages de ports TCP


spot_marketplace(server_id)

Voir les offres du marché spot pour un serveur spécifique.

Paramètres :

Paramètre
Type
Description

server_id

int

ID du serveur à vérifier

Renvoie : SpotMarket

Champ
Type
Description

offers

List[SpotOffer] | None

Liste des offres spot (order_id, price, server_id)

server

SpotServerInfo | None

Infos serveur (prix min, visibilité, statut en ligne)

currency_rates_in_usd

Dict[str, float] | None

Taux de change des devises en USD


create_order(...)

Créer une nouvelle commande on-demand ou spot. C’est ainsi que vous louez un GPU.

Commande on-demand

Commande spot

Paramètres :

Paramètre
Type
Requis
Description

server_id

int

Oui

ID du serveur à louer

image

str

Oui

Image Docker (par ex. "cloreai/ubuntu22.04-cuda12")

type

str

Oui

"on-demand" ou "spot"

currency

str

Oui

Devise de paiement (par ex. "bitcoin")

ssh_password

str

Non

Mot de passe SSH (alphanumérique, max 32 caractères)

ssh_key

str

Non

Clé publique SSH (max 3072 caractères)

ports

dict

Non

Mappages de ports, par ex. {"22": "tcp", "8888": "http"}

env

dict

Non

Variables d’environnement

jupyter_token

str

Non

Token du notebook Jupyter (max 32 caractères)

command

str

Non

Commande shell à exécuter après le démarrage du conteneur

spot_price

float

Spot uniquement

Prix par jour pour les commandes spot

required_price

float

Non

Verrouiller un prix spécifique (on-demand seulement)

autossh_entrypoint

str

Non

Utiliser le point d’entrée SSH de Clore.ai

Renvoie : Order

Limitation de débit : create_order a un temps de refroidissement spécial de 5 secondes entre les appels. Le SDK l’applique automatiquement.


cancel_order(order_id, issue)

Annuler une commande active ou une offre spot. Signalement d’un problème avec le serveur en option.

Paramètres :

Paramètre
Type
Requis
Description

order_id

int

Oui

ID de la commande à annuler

issue

str

Non

Raison d’annulation / rapport de problème (max 2048 caractères)

Renvoie : Dict[str, Any]


set_server_settings(...)

Mettre à jour les paramètres d’un serveur que vous hébergez sur la place de marché.

Paramètres :

Paramètre
Type
Requis
Description

name

str

Oui

Nom du serveur

availability

bool

Non

Si le serveur peut être loué

mrl

int

Non

Durée minimale de location en heures

on_demand

float

Non

Prix on-demand par jour

spot

float

Non

Prix spot minimum par jour

Renvoie : Dict[str, Any]


set_spot_price(order_id, price)

Mettre à jour le prix de votre offre sur le marché spot.

Paramètres :

Paramètre
Type
Description

order_id

int

ID de la commande/offre spot

price

float

Nouveau prix par jour

Renvoie : Dict[str, Any]

Remarque : Vous ne pouvez baisser les prix spot qu’une fois toutes les 600 secondes, et par un pas limité. L’API renvoie code: 6 avec des détails si vous dépassez ces limites.


Client asynchrone (AsyncCloreAI)

Le AsyncCloreAI client fournit les mêmes méthodes que CloreAI, mais toutes renvoient des coroutines. Utilisez-le lorsque vous avez besoin d’appels API concurrents ou lorsque vous travaillez dans une application asynchrone.

Utilisation de base

Opérations concurrentes

Exécutez plusieurs appels API en parallèle avec asyncio.gather:

Méthodes disponibles

AsyncCloreAI prend en charge toutes les mêmes méthodes que CloreAI:

Méthode
Description

await wallets()

Obtenir les soldes du portefeuille

await marketplace(...)

Rechercher sur la place de marché

await my_servers()

Lister vos serveurs hébergés

await server_config(name)

Obtenir la configuration du serveur

await my_orders(...)

Lister vos commandes

await spot_marketplace(server_id)

Obtenir les offres du marché spot

await create_order(...)

Créer une nouvelle commande

await cancel_order(...)

Annuler une commande

await set_server_settings(...)

Mettre à jour les paramètres du serveur

await set_spot_price(...)

Mettre à jour le prix spot


Gestion des erreurs

Le SDK fournit des classes d’exception structurées pour chaque code d’erreur API.

Codes d'erreur

Code
Exception
Description

0

Succès

1

DBError

Erreur de base de données

2

InvalidInputError

Données d'entrée invalides

3

AuthError

Jeton API invalide

4

InvalidEndpointError

Point de terminaison invalide

5

RateLimitError

Limite de débit dépassée

6

FieldError

Erreur dans un champ spécifique (voir erreur champ dans la réponse)

Toutes les classes d'exception héritent de CloreAPIError et incluent :

  • e.code — code d'erreur numérique

  • e.response — dictionnaire de la réponse API complète (lorsqu'il est disponible)


Limitation de débit

Le SDK inclut un limiteur de débit intégré qui applique automatiquement les limites de Clore.ai :

Point de terminaison
Limite

La plupart des points de terminaison

1 requête/seconde

create_order

1 requête/5 secondes

Lorsque l'API renvoie une erreur de limite de débit (code 5), le SDK applique recul exponentiel et réessaie jusqu'à max_retries fois (par défaut : 3). Vous n'avez pas besoin d'ajouter time.sleep() entre les appels.

Comment cela fonctionne

  1. Avant chaque requête, le limiteur de débit attend que l'intervalle minimum soit écoulé.

  2. create_order les appels imposent un temps de refroidissement supplémentaire de 5 secondes.

  3. En cas d'erreurs de limite de débit, le SDK recule de façon exponentielle : 1s → 2s → 4s → ...

  4. Après max_retries tentatives échouées, une RateLimitError est levée.

Personnaliser le comportement de réessai


Configuration

Fichier de configuration

Le CLI stocke la configuration dans ~/.clore/config.json:

Ordre de résolution

Le SDK résout la clé API dans cet ordre :

  1. api_key argument passé au constructeur

  2. CLORE_API_KEY variable d'environnement

  3. api_key champ dans ~/.clore/config.json

Variables d’environnement

Variable
Description

CLORE_API_KEY

Clé API pour l'authentification


Prochaines étapes

Mis à jour

Ce contenu vous a-t-il été utile ?