Python SDK (clore-ai)
Das clore-ai Paket ist das offizielle Python-SDK für das Clore.ai GPU-Marktplatz. Es kapselt die gesamte REST-API in einer sauberen, typsicheren Schnittstelle mit integrierter Ratenbegrenzung, automatischen Wiederholungen und strukturierter Fehlerbehandlung — damit Sie sich auf das Mieten von GPUs konzentrieren können und nicht auf HTTP-Details.
Installation
pip install clore-aiAnforderungen: Python 3.9+
Das Paket installiert sowohl das Python-SDK als auch die clore CLI.
Authentifizierung
Holen Sie sich Ihren API-Schlüssel vom Clore.ai-Dashboard → API Abschnitt.
Option 1: Umgebungsvariable (empfohlen)
export CLORE_API_KEY=your_api_key_hereDas SDK liest CLORE_API_KEY automatisch — keine Codeänderungen erforderlich.
Option 2: CLI-Konfigurationsdatei
clore config set api_key YOUR_API_KEYDies speichert den Schlüssel in ~/.clore/config.json.
Option 3: Direkt im Code übergeben
⚠️ Wichtig: Die Clore.ai-API verwendet den
authHeader für die Authentifizierung, nichtAuthorization: Bearer. Das SDK kümmert sich automatisch darum.
Schnellstart
Synchroner Client (CloreAI)
CloreAI)Konstruktor
Der Client unterstützt Kontextmanager für automatische Aufräumarbeiten:
wallets()
wallets()Holen Sie Ihre Wallet-Salden und Einzahlungsadressen.
Gibt zurück: List[Wallet]
name
str
Währungsname (z. B. "bitcoin", "CLORE-Blockchain", "USD-Blockchain")
balance
float | None
Aktueller Saldo
deposit
str | None
Einzahlungsadresse
withdrawal_fee
float | None
Auszahlungsgebühr
marketplace()
marketplace()Durchsuchen Sie den GPU-Marktplatz mit optionalen clientseitigen Filtern.
Parameter:
gpu
str | None
None
Nach GPU-Modell filtern (case-insensitiver Teilstring-Vergleich)
min_gpu_count
int | None
None
Minimale Anzahl von GPUs
min_ram_gb
float | None
None
Minimale RAM-Größe in GB
max_price_usd
float | None
None
Maximaler Preis pro Stunde in USD
available_only
bool
True
Nur Server zurückgeben, die zur Miete verfügbar sind
Gibt zurück: List[MarketplaceServer]
Jeder MarketplaceServer bietet komfortable Eigenschaften für die gebräuchlichsten Felder sowie Zugriff auf die vollständigen verschachtelten Daten:
id
int
Eindeutige Server-ID
gpu_model
str | None
Primäre GPU-Beschreibung (z. B. "1x NVIDIA GeForce RTX 4090")
gpu_count
int
Anzahl der GPUs (aus gpu_array)
ram_gb
float | None
RAM in GB
price_usd
float | None
On-Demand-Preis in USD
spot_price_usd
float | None
Spot-Preis in USD
available
bool
Ob der Server verfügbar ist (nicht vermietet)
location
str | None
Ländercode aus den Netzwerkspezifikationen
Für fortgeschrittene Anwendungsfälle können Sie auf die vollständige verschachtelte Struktur zugreifen:
specs
ServerSpecs | None
Vollständige Hardware-Spezifikationen (specs.gpu, specs.ram, specs.cpu, specs.disk, specs.net, usw.)
price
ServerPrice | None
Vollständiges Preisobjekt (price.usd.on_demand_usd, price.usd.spot, price.on_demand, usw.)
rented
bool | None
Ob der Server derzeit vermietet ist
reliability
float | None
Server-Zuverlässigkeitswert
rating
ServerRating | None
Serverbewertung (rating.avg, rating.cnt)
Hinweis: Das
marketplace()Der Endpunkt ist öffentlich — er funktioniert ohne API-Schlüssel.
my_servers()
my_servers()Liste der Server, die Sie auf dem Clore.ai-Marktplatz bereitstellen.
Gibt zurück: List[MyServer]
id
int
Server-ID
name
str | None
Servername
gpu_model
str | None
Primäre GPU-Beschreibung
ram_gb
float | None
RAM in GB
status
str
Menschlich lesbarer Status: "Online", "Offline", "Getrennt", oder "Funktioniert nicht"
connected
bool | None
Ob der Server verbunden ist
online
bool | None
Ob der Server online ist
visibility
str | None
"public" oder "private"
server_config(server_name)
server_config(server_name)Holen Sie die Konfiguration eines bestimmten Servers, den Sie hosten.
Parameter:
server_name
str
Name des Servers
Gibt zurück: ServerConfig
name
str | None
Servername
gpu_model
str | None
Primäre GPU-Beschreibung
mrl
int | None
Minimale Mietdauer in Stunden
on_demand_price
float | None
Erster verfügbarer On-Demand-Preis in USD
spot_price
float | None
Erster verfügbarer Spot-Preis in USD
specs
ServerSpecs | None
Vollständige Hardware-Spezifikationen
connected
bool | None
Ob der Server verbunden ist
visibility
str | None
"public" oder "private"
my_orders(include_completed)
my_orders(include_completed)Holen Sie Ihre aktuellen Bestellungen, optional einschließlich abgeschlossener/abgelaufener.
Parameter:
include_completed
bool
False
Abgeschlossene/abgelaufene Bestellungen einbeziehen
Gibt zurück: List[Order]
id
int
Eindeutige Bestell-ID
server_id
int | None
Server-ID
type
str
"on-demand" oder "spot"
status
str | None
Bestellstatus
image
str | None
Docker-Image
currency
str | None
Zahlungswährung
price
float | None
Bestellpreis pro Tag
pub_cluster
str | None
Öffentlicher Hostname/IP für den Zugriff
tcp_ports
dict | None
TCP-Portzuordnungen
spot_marketplace(server_id)
spot_marketplace(server_id)Spotmarktangebote für einen bestimmten Server anzeigen.
Parameter:
server_id
int
Zu prüfende Server-ID
Gibt zurück: SpotMarket
offers
List[SpotOffer] | None
Liste der Spot-Angebote (order_id, price, server_id)
server
SpotServerInfo | None
Serverinformationen (Mindestpreise, Sichtbarkeit, Online-Status)
currency_rates_in_usd
Dict[str, float] | None
Währungswechselkurse in USD
create_order(...)
create_order(...)Erstellen Sie eine neue On-Demand- oder Spot-Bestellung. So mieten Sie eine GPU.
On-Demand-Bestellung
Spot-Bestellung
Parameter:
server_id
int
Ja
Zu mietende Server-ID
image
str
Ja
Docker-Image (z. B. "cloreai/ubuntu22.04-cuda12")
type
str
Ja
"on-demand" oder "spot"
currency
str
Ja
Zahlungswährung (z. B. "bitcoin")
ssh_password
str
Nein
SSH-Passwort (alphanumerisch, max. 32 Zeichen)
ssh_key
str
Nein
SSH Public Key (max. 3072 Zeichen)
ports
dict
Nein
Portzuordnungen, z. B. {"22": "tcp", "8888": "http"}
env
dict
Nein
Umgebungsvariablen
jupyter_token
str
Nein
Jupyter-Notebook-Token (max. 32 Zeichen)
command
str
Nein
Shell-Befehl, der nach dem Start des Containers ausgeführt wird
spot_price
float
Nur Spot
Preis pro Tag für Spot-Bestellungen
required_price
float
Nein
Sperren Sie einen bestimmten Preis (nur On-Demand)
autossh_entrypoint
str
Nein
Clore.ai SSH-Entrypoint verwenden
Gibt zurück: Bestellung
Ratenlimit:
create_orderhat eine spezielle 5-Sekunden-Abkühlzeit zwischen Aufrufen. Das SDK erzwingt dies automatisch.
cancel_order(order_id, issue)
cancel_order(order_id, issue)Stornieren Sie eine aktive Bestellung oder ein Spot-Angebot. Optional können Sie ein Problem mit dem Server melden.
Parameter:
order_id
int
Ja
Zu stornierende Bestell-ID
issue
str
Nein
Stornierungsgrund / Problemmeldung (max. 2048 Zeichen)
Gibt zurück: Dict[str, Any]
set_server_settings(...)
set_server_settings(...)Aktualisieren Sie die Einstellungen für einen Server, den Sie auf dem Marktplatz hosten.
Parameter:
name
str
Ja
Servername
availability
bool
Nein
Ob der Server gemietet werden kann
mrl
int
Nein
Minimale Mietdauer in Stunden
on_demand
float
Nein
On-Demand-Preis pro Tag
spot
float
Nein
Minimaler Spot-Preis pro Tag
Gibt zurück: Dict[str, Any]
set_spot_price(order_id, price)
set_spot_price(order_id, price)Aktualisieren Sie den Preis für Ihr Spot-Angebot.
Parameter:
order_id
int
Spot-Bestell-/Angebots-ID
price
float
Neuer Preis pro Tag
Gibt zurück: Dict[str, Any]
Hinweis: Sie können Spot-Preise nur alle 600 Sekunden und nur in begrenzten Schritten senken. Die API gibt
code: 6mit Details zurück, wenn Sie diese Grenzen überschreiten.
Asynchroner Client (AsyncCloreAI)
AsyncCloreAI)Das AsyncCloreAI client stellt dieselben Methoden wie CloreAI, aber alle geben Koroutinen zurück. Verwenden Sie ihn, wenn Sie gleichzeitige API-Aufrufe benötigen oder in einer asynchronen Anwendung arbeiten.
Grundlegende Verwendung
Gleichzeitige Operationen
Führen Sie mehrere API-Aufrufe parallel mit asyncio.gather:
Verfügbare Methoden
AsyncCloreAI unterstützt alle dieselben Methoden wie CloreAI:
await wallets()
Wallet-Salden abrufen
await marketplace(...)
Marktplatz durchsuchen
await my_servers()
Ihre gehosteten Server auflisten
await server_config(name)
Serverkonfiguration abrufen
await my_orders(...)
Ihre Bestellungen auflisten
await spot_marketplace(server_id)
Spotmarkt-Angebote abrufen
await create_order(...)
Neue Bestellung erstellen
await cancel_order(...)
Bestellung stornieren
await set_server_settings(...)
Servereinstellungen aktualisieren
await set_spot_price(...)
Spot-Preis aktualisieren
Fehlerbehandlung
Das SDK stellt strukturierte Ausnahmeklassen für jeden API-Fehlercode bereit.
Fehlercodes
0
—
Erfolg
1
DBError
Datenbankfehler
2
InvalidInputError
Ungültige Eingabedaten
3
AuthError
Ungültiges API-Token
4
InvalidEndpointError
Ungültiger Endpunkt
5
RateLimitError
Rate-Limit überschritten
6
FieldError
Fehler in einem bestimmten Feld (siehe error Feld in der Antwort)
Alle Ausnahmeklassen erben von CloreAPIError und enthalten:
e.code— numerischer Fehlercodee.response— vollständiges API-Antwort-Objekt (wenn verfügbar)
Rate Limiting
Das SDK enthält einen eingebauten Ratenbegrenzer, der die Limits von Clore.ai automatisch durchsetzt:
Die meisten Endpunkte
1 Anfrage/Sekunde
create_order
1 Anfrage/5 Sekunden
Wenn die API einen Rate-Limit-Fehler (Code 5) zurückgibt, wendet das SDK exponentielles Backoff an und wiederholt bis zu max_retries Versuche (Standard: 3). Sie müssen kein time.sleep() zwischen Aufrufen hinzufügen.
Funktionsweise
Vor jeder Anfrage wartet der Ratenbegrenzer, bis das minimale Intervall verstrichen ist.
create_orderAufrufe erzwingen eine zusätzliche 5-Sekunden-Abkühlzeit.Bei Rate-Limit-Fehlern verringert das SDK die Wiederholungen exponentiell: 1s → 2s → 4s → ...
Nach
max_retriesfehlgeschlagenen Versuchen wird eineRateLimitErrorausgelöst.
Anpassen des Wiederholungsverhaltens
Konfiguration
Konfigurationsdatei
Die CLI speichert die Konfiguration in ~/.clore/config.json:
Behebungsreihenfolge
Das SDK löst den API-Schlüssel in folgender Reihenfolge auf:
api_keyals Argument an den Konstruktor übergebenCLORE_API_KEYUmgebungsvariableapi_keyFeld in~/.clore/config.json
Umgebungsvariablen
CLORE_API_KEY
API-Schlüssel zur Authentifizierung
Nächste Schritte
CLI-Referenz — Verwenden Sie Clore.ai über Ihr Terminal
REST-API — Rohdokumentation der API für benutzerdefinierte Integrationen
On-Demand vs Spot — Preisgestaltungsmodelle verstehen
Verfügbare Docker-Images — Vorgefertigte Images für GPU-Workloads
Zuletzt aktualisiert
War das hilfreich?