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

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

Anforderungen: 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-DashboardAPI Abschnitt.

Option 1: Umgebungsvariable (empfohlen)

export CLORE_API_KEY=your_api_key_here

Das SDK liest CLORE_API_KEY automatisch — keine Codeänderungen erforderlich.

Option 2: CLI-Konfigurationsdatei

clore config set api_key YOUR_API_KEY

Dies speichert den Schlüssel in ~/.clore/config.json.

Option 3: Direkt im Code übergeben

⚠️ Wichtig: Die Clore.ai-API verwendet den auth Header zur Authentifizierung, nicht Authorization: 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]

Feld
Typ
Beschreibung

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:

Parameter
Typ
Standard
Beschreibung

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:

Eigenschaft
Typ
Beschreibung

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:

Feld
Typ
Beschreibung

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]

Eigenschaft
Typ
Beschreibung

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:

Parameter
Typ
Beschreibung

server_name

str

Name des Servers

Rückgabe: ServerConfig

Eigenschaft
Typ
Beschreibung

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:

Parameter
Typ
Standard
Beschreibung

include_completed

bool

False

Abgeschlossene/abgelaufene Bestellungen einschließen

Rückgabe: List[Order]

Feld
Typ
Beschreibung

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:

Parameter
Typ
Beschreibung

server_id

int

Zu prüfende Server-ID

Rückgabe: SpotMarket

Feld
Typ
Beschreibung

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:

Parameter
Typ
Erforderlich
Beschreibung

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

Parameter
Typ
Erforderlich
Beschreibung

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:

Parameter
Typ
Erforderlich
Beschreibung

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:

Parameter
Typ
Beschreibung

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

Methode
Beschreibung

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

Code
Ausnahme
Beschreibung

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 Fehlercode

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

Endpunkt
Limit

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

  1. Vor jeder Anfrage wartet der Rate-Limiter, bis das Mindestintervall abgelaufen ist.

  2. create_order Aufrufe erzwingen eine zusätzliche 5-Sekunden-Abkühlzeit.

  3. Bei Rate-Limit-Fehlern reduziert das SDK exponentiell: 1s → 2s → 4s → ...

  4. Nach max_retries fehlgeschlagenen Versuchen wird ein RateLimitError ausgelö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:

  1. api_key an den Konstruktor übergebenes Argument

  2. CLORE_API_KEY Umgebungsvariable

  3. api_key Feld in ~/.clore/config.json

Umgebungsvariablen

Variable
Beschreibung

CLORE_API_KEY

API-Schlüssel zur Authentifizierung


Nächste Schritte

Zuletzt aktualisiert

War das hilfreich?