Python-SDK (clore-ai)
Das clore-ai Paket ist das offizielle Python-SDK für den Clore.ai GPU-Marktplatz. Es kapselt die gesamte REST-API in eine saubere, typsichere Schnittstelle mit integriertem Rate Limiting, automatischen Wiederholungsversuchen und strukturierter Fehlerbehandlung — damit Sie sich auf das Mieten von GPUs konzentrieren können, nicht auf das HTTP-Handling.
Installation
pip install clore-aiAnforderungen: Python 3.9+
Das Paket installiert sowohl das Python-SDK als auch den clore CLI.
Authentifizierung
Holen Sie Ihren API-Schlüssel aus dem 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 zur Authentifizierung, nichtAuthorization: Bearer. Das SDK übernimmt dies automatisch.
Schnellstart
Synchroner Client (CloreAI)
Konstruktor
Der Client unterstützt Kontextmanager für die automatische Bereinigung:
wallets()
Rufen Sie Ihre Wallet-Guthaben und Einzahlungsadressen ab.
Rückgabe: List[Wallet]
name
str
Währungsname (z. B. "bitcoin", "CLORE-Blockchain", "USD-Blockchain")
Kontostand
float | None
Aktueller Kontostand
Einzahlung
str | None
Einzahlungsadresse
withdrawal_fee
float | None
Auszahlungsgebühr
marketplace()
Durchsuchen Sie den GPU-Marktplatz mit optionalen Filterkriterien auf der Client-Seite.
Parameter:
gpu
str | None
None
Nach GPU-Modell filtern (Groß-/Kleinschreibung wird bei der Teilzeichenübereinstimmung ignoriert)
min_gpu_count
int | None
None
Mindestanzahl der GPUs
min_ram_gb
float | None
None
Mindestens RAM in GB
max_price_usd
float | None
None
Maximaler Preis pro Stunde in USD
available_only
bool
True
Nur Server zurückgeben, die zum Mieten verfügbar sind
Rückgabe: List[MarketplaceServer]
Jeder MarketplaceServer bietet praktische Eigenschaften für die häufigsten Felder sowie Zugriff auf die vollständigen verschachtelten Daten:
id
int
Eindeutige Server-ID
gpu_model
str | None
Beschreibung der primären GPU (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)
Standort
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 Hardwarespezifikationen (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.)
vermietet
bool | None
Ob der Server derzeit vermietet ist
Zuverlässigkeit
float | None
Zuverlässigkeitswert des Servers
Bewertung
ServerRating | None
Serverbewertung (rating.avg, rating.cnt)
Hinweis: Das
marketplace()Der Endpunkt ist öffentlich — er funktioniert ohne API-Schlüssel.
my_servers()
Listen Sie Server auf, die Sie dem Clore.ai-Marktplatz bereitstellen.
Rückgabe: List[MyServer]
id
int
Server-ID
name
str | None
Servername
gpu_model
str | None
Beschreibung der primären GPU
ram_gb
float | None
RAM in GB
status
str
Menschenlesbarer Status: "Online", "Offline", "Getrennt", oder "Nicht funktionsfähig"
verbunden
bool | None
Ob der Server verbunden ist
online
bool | None
Ob der Server online ist
Sichtbarkeit
str | None
"öffentlich" oder "privat"
server_config(server_name)
Rufen Sie die Konfiguration eines bestimmten Servers ab, den Sie hosten.
Parameter:
server_name
str
Name des Servers
Rückgabe: ServerConfig
name
str | None
Servername
gpu_model
str | None
Beschreibung der primären GPU
mrl
int | None
Maximale Mietdauer in Stunden
on_demand_price
float | None
Erster verfügbarer On-Demand-USD-Preis
spot_price
float | None
Erster verfügbarer Spot-USD-Preis
specs
ServerSpecs | None
Vollständige Hardwarespezifikationen
verbunden
bool | None
Ob der Server verbunden ist
Sichtbarkeit
str | None
"öffentlich" oder "privat"
my_orders(include_completed)
Rufen Sie Ihre aktuellen Bestellungen ab, optional einschließlich abgeschlossener/abgelaufener.
Parameter:
include_completed
bool
False
Abgeschlossene/abgelaufene Bestellungen einschließen
Rückgabe: List[Order]
id
int
Eindeutige Bestell-ID
server_id
int | None
Server-ID
Typ
str
"on-demand" oder "spot"
status
str | None
Bestellstatus
image
str | None
Docker-Image
Währung
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-Port-Zuordnungen
spot_marketplace(server_id)
Sehen Sie sich Spot-Marktangebote für einen bestimmten Server an.
Parameter:
server_id
int
Zu prüfende Server-ID
Rückgabe: SpotMarket
Angebote
List[SpotOffer] | None
Liste der Spot-Angebote (order_id, price, server_id)
Server
SpotServerInfo | None
Serverinformationen (Mindestpreis, Sichtbarkeit, Online-Status)
currency_rates_in_usd
Dict[str, float] | None
Wechselkurse der Währungen in USD
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
Server-ID zum Mieten
image
str
Ja
Docker-Image (z. B. "cloreai/ubuntu22.04-cuda12")
Typ
str
Ja
"on-demand" oder "spot"
Währung
str
Ja
Zahlungswährung (z. B. "bitcoin")
ssh_password
str
Nein
SSH-Passwort (alphanumerisch, max. 32 Zeichen)
ssh_key
str
Nein
Öffentlicher SSH-Schlüssel (max. 3072 Zeichen)
ports
dict
Nein
Port-Zuordnungen, 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 Containerstart ausgeführt wird
spot_price
float
Nur Spot
Preis pro Tag für Spot-Bestellungen
required_price
float
Nein
Einen bestimmten Preis festlegen (nur On-Demand)
autossh_entrypoint
str
Nein
Clore.ai-SSH-Entrypoint verwenden
gpu_count
int
Nein
Miete nur N GPUs auf Servern mit Teilvermietung (nur On-Demand); weglassen, um das gesamte Rig zu mieten
gpu_indices
list[int]
Nein
Exakte GPU-Slots aus partial_gpu_rental.free_indices; Länge muss gleich sein gpu_count; weglassen für automatische Auswahl
Rückgabe: Roh-API-Antwort ({"code": 0} bei Erfolg); rufe die erstellte Bestellung über my_orders()
Rate-Limit:
create_orderhat eine spezielle 5-Sekunden-Abkühlzeit zwischen Aufrufen. Das SDK erzwingt dies automatisch.
cancel_order(order_id, issue)
Storniere eine aktive Bestellung oder ein Spot-Angebot. Melde optional ein Problem mit dem Server.
Parameter:
order_id
int
Ja
Zu stornierende Bestell-ID
issue
str
Nein
Stornierungsgrund / Problembericht (max. 2048 Zeichen)
Rückgabe: Dict[str, Any]
set_server_settings(...)
Aktualisiere die Einstellungen für einen Server, den du auf dem Marktplatz hostest.
Parameter:
name
str
Ja
Servername
availability
bool
Nein
Ob der Server vermietet werden kann
mrl
int
Nein
Maximale Mietdauer in Stunden
on_demand
float
Nein
On-Demand-Preis pro Tag
spot
float
Nein
Mindest-Spotpreis pro Tag
Rückgabe: Dict[str, Any]
set_spot_price(order_id, price)
Aktualisiere den Preis deines Spot-Marktplatzangebots.
Parameter:
order_id
int
Spot-Bestell-/Angebots-ID
price
float
Neuer Preis pro Tag
Rückgabe: Dict[str, Any]
Hinweis: Du kannst Spotpreise nur alle 600 Sekunden und nur in begrenzter Schrittweite senken. Die API gibt
code: 6mit Details zurück, wenn du diese Limits überschreitest.
Asynchroner Client (AsyncCloreAI)
Das AsyncCloreAI Client bietet dieselben Methoden wie CloreAI an, aber alle geben Coroutines zurück. Verwende ihn, wenn du gleichzeitige API-Aufrufe brauchst oder in einer asynchronen Anwendung arbeitest.
Grundlegende Verwendung
Gleichzeitige Operationen
Führe mehrere API-Aufrufe parallel aus mit asyncio.gather:
Verfügbare Methoden
AsyncCloreAI unterstützt alle dieselben Methoden wie CloreAI:
await wallets()
Wallet-Guthaben abrufen
await marketplace(...)
Marktplatz durchsuchen
await my_servers()
Deine gehosteten Server auflisten
await server_config(name)
Serverkonfiguration abrufen
await my_orders(...)
Deine Bestellungen auflisten
await spot_marketplace(server_id)
Spot-Marktplatzangebote abrufen
await create_order(...)
Eine neue Bestellung erstellen
await cancel_order(...)
Eine Bestellung stornieren
await set_server_settings(...)
Servereinstellungen aktualisieren
await set_spot_price(...)
Spotpreis aktualisieren
Fehlerbehandlung
Das SDK stellt strukturierte Ausnahme-Klassen 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 Fehler Feld in der Antwort)
Alle Ausnahme-Klassen erben von CloreAPIError und enthalten:
e.code— numerischer Fehlercodee.response— vollständiges API-Antwort-Dict (falls verfügbar)
Rate-Limitierung
Das SDK enthält einen integrierten Rate-Limiter, 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 und wiederholt es bis zu max_retries Mal (Standard: 3). Du musst kein time.sleep() zwischen Aufrufen hinzufügen.
So funktioniert es
Vor jeder Anfrage wartet der Rate-Limiter, bis das Mindestintervall abgelaufen ist.
create_orderAufrufe erzwingen eine zusätzliche 5-Sekunden-Abkühlzeit.Bei Rate-Limit-Fehlern reduziert das SDK exponentiell: 1s → 2s → 4s → ...
Nach
max_retriesfehlgeschlagenen Versuchen wird einRateLimitErrorausgelöst.
Wiederholungsverhalten anpassen
Konfiguration
Konfigurationsdatei
Die CLI speichert die Konfiguration in ~/.clore/config.json:
Auflösungsreihenfolge
Das SDK ermittelt den API-Schlüssel in dieser Reihenfolge:
api_keyan den Konstruktor übergebenes ArgumentCLORE_API_KEYUmgebungsvariableapi_keyFeld in~/.clore/config.json
Umgebungsvariablen
CLORE_API_KEY
API-Schlüssel zur Authentifizierung
Nächste Schritte
CLI-Referenz — Nutze Clore.ai von deinem Terminal aus
REST-API — Roh-API-Dokumentation für benutzerdefinierte Integrationen
On-Demand vs. Spot — Verstehe Preismodelle
Verfügbare Docker-Images — Vorgefertigte Images für GPU-Workloads
Zuletzt aktualisiert
War das hilfreich?