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-aiExigences : 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.ai → API section.
Option 1 : variable d’environnement (recommandée)
export CLORE_API_KEY=your_api_key_hereLe SDK lit CLORE_API_KEY automatiquement — aucun changement de code requis.
Option 2 : fichier de config CLI
clore config set api_key YOUR_API_KEYCela stocke la clé dans ~/.clore/config.json.
Option 3 : passer directement dans le code
⚠️ Important : L’API Clore.ai utilise l’
entête authpour l’authentification, et nonAuthorization: Bearer. Le SDK gère cela automatiquement.
Démarrage rapide
Client synchrone (CloreAI)
CloreAI)Constructeur
Le client prend en charge les gestionnaires de contexte pour un nettoyage automatique :
wallets()
wallets()Obtenez vos soldes de portefeuille et adresses de dépôt.
Renvoie : List[Wallet]
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()
marketplace()Recherchez sur la place de marché GPU avec des filtres optionnels côté client.
Paramètres :
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 :
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 :
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()
my_servers()Lister les serveurs que vous fournissez à la place de marché Clore.ai.
Renvoie : List[MyServer]
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)
server_config(server_name)Obtenez la configuration d’un serveur spécifique que vous hébergez.
Paramètres :
server_name
str
Nom du serveur
Renvoie : ServerConfig
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)
my_orders(include_completed)Obtenez vos commandes en cours, en incluant éventuellement celles terminées/expirées.
Paramètres :
include_completed
bool
False
Inclure les commandes terminées/expirées
Renvoie : List[Order]
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)
spot_marketplace(server_id)Voir les offres du marché spot pour un serveur spécifique.
Paramètres :
server_id
int
ID du serveur à vérifier
Renvoie : SpotMarket
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(...)
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 :
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_ordera un temps de refroidissement spécial de 5 secondes entre les appels. Le SDK l’applique automatiquement.
cancel_order(order_id, issue)
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 :
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(...)
set_server_settings(...)Mettre à jour les paramètres d’un serveur que vous hébergez sur la place de marché.
Paramètres :
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)
set_spot_price(order_id, price)Mettre à jour le prix de votre offre sur le marché spot.
Paramètres :
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: 6avec des détails si vous dépassez ces limites.
Client asynchrone (AsyncCloreAI)
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:
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
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ériquee.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 :
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
Avant chaque requête, le limiteur de débit attend que l'intervalle minimum soit écoulé.
create_orderles appels imposent un temps de refroidissement supplémentaire de 5 secondes.En cas d'erreurs de limite de débit, le SDK recule de façon exponentielle : 1s → 2s → 4s → ...
Après
max_retriestentatives échouées, uneRateLimitErrorest 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 :
api_keyargument passé au constructeurCLORE_API_KEYvariable d'environnementapi_keychamp dans~/.clore/config.json
Variables d’environnement
CLORE_API_KEY
Clé API pour l'authentification
Prochaines étapes
Référence CLI — Utiliser Clore.ai depuis votre terminal
REST API — Documentation brute de l'API pour des intégrations personnalisées
On-Demand vs Spot — Comprendre les modèles de tarification
Images Docker disponibles — Images préconstruites pour les charges de travail GPU
Mis à jour
Ce contenu vous a-t-il été utile ?