Skip to main content
acedatacloud ist das offizielle Python SDK von Ace Data Cloud, das alle Dienste auf api.acedata.cloud in typisierte Methoden wie client.openai.chat.completions.create(...), client.images.generate(...), client.search.google(...) usw. kapselt und sowohl synchrone als auch asynchrone Clients bereitstellt. Es basiert auf httpx, unterstützt SSE-Streaming, automatisches Wiederholen, typisierte Ausnahmen und Pydantic-Typüberprüfung. Quellcode und Paketadresse:

Installation

Wenn Sie auf der X402-Chain bezahlen müssen (kein API-Token-Pfad), installieren Sie zusätzlich:
Ausgabe der Versionsprüfung in einer sauberen venv:
Erklärung der Ergebnisse:
  • Die Paketversion ist 2026.4.26.1 (CalVer, Überarbeitung am 26. April 2026).
  • AceDataCloud ist der synchrone Client, AsyncAceDataCloud ist der asyncio-asynchrone Client.
  • Dieses SDK hängt nicht von pydantic ab, der Antwortkörper gibt einheitlich dict zurück. Dies unterscheidet sich von openai-python, was bei der Migration beachtet werden muss.

Vorbereitung des API-Tokens

Referenzieren Sie SDK-Übersicht - API-Token beantragen um das Token zu erhalten, und export es dann in der Shell:
Beim Erstellen des Clients wird api_token nicht übergeben, das SDK liest automatisch die Umgebungsvariable ACEDATACLOUD_API_TOKEN. Wenn in Ihrer Umgebung bereits ACEDATACLOUD_API_KEY gespeichert ist (Projekt-Repository-Vereinbarung), geben Sie es explizit an: AceDataCloud(api_token=os.environ["ACEDATACLOUD_API_KEY"]).

Beispiel 1: chat.completions (synchron)

Ausgabe des Programms:
Erklärung der Ergebnisse:
  • id ist die Antwort-ID, die in Nutzungsverlauf gefunden werden kann.
  • content ADC_PY_SDK_OK ist die feste Kennung, die das Modell tatsächlich zurückgibt.
  • res["usage"] gibt ein dict zurück, kein Pydantic-Modell; ein Aufruf verbraucht etwa 24 Token.

Beispiel 2: chat.completions (SSE-Streaming)

Wenn stream=True, gibt create einen normalen Generator zurück, der bei jedem yield ein geparstes Chunk-Dict zurückgibt.
Ausgabe des Programms:
Erklärung der Ergebnisse:
  • Die erste Frame-Verzögerung beträgt 2104 ms, die nachfolgenden 11 Frames benötigten nur 7 ms, um vollständig zu sein – sobald der Dienst mit dem Streaming beginnt, kann der lokale Client problemlos konsumieren.
  • Chunk ist ein normales dict, die Werte können sicher nach dem OpenAI SSE-Format mit .get() abgerufen werden.
  • In der tatsächlichen Produktion wird empfohlen, während des Yielding SSE an das Frontend zu pushen, die gesamte erste Frame-Verzögerung liegt nahe bei 2 Sekunden.

Beispiel 3: AsyncAceDataCloud (asynchron)

Die API von AsyncAceDataCloud ist vollständig symmetrisch zur synchronen Version, nur dass alle IO-Methoden Coroutine zurückgeben. Geeignet für FastAPI / aiohttp / asyncio-Dienste.
Ausgabe des Programms:
Erklärung der Ergebnisse:
  • Die asynchrone Version und die synchrone Version verwenden denselben HTTP-Pfad, nur die Implementierung des Verbindungspools ist unterschiedlich (httpx.AsyncClient).
  • Beim Beenden wird await client.close() explizit aufgerufen, um den Verbindungspool zu schließen; in Diensten mit langer Lebensdauer muss dies nur einmal vor dem Prozessende erfolgen.
  • Die einmalige Verzögerung ist ähnlich wie bei der synchronen Version, in einer parallelen Umgebung zeigt die asynchrone Version ihre Vorteile – eine Event-Loop kann gleichzeitig Dutzende bis Hunderte von in-flight-Anfragen ausführen.

Beispiel 4: images.generate (NanoBanana)

Die NanoBanana-API ist ein synchroner Bildgenerierungsdienst, geben Sie wait nicht an – SDK-Aufrufe warten immer auf die Rückgabe von 200 durch den Dienst.
Programmausgabe:
Erklärung der Ergebnisse:
  • image_url ist die stabile Adresse auf dem CDN, die direkt heruntergeladen oder in eine Webseite eingebettet werden kann.
  • In 18,9 Sekunden war fast die gesamte Zeit für die Modellinferenz; die lokalen SDK-Kosten betrugen nur wenige Millisekunden.
  • Für echte asynchrone Aufgaben wie Midjourney, Sora, Veo, Suno muss wait=True oder manuelles TaskHandle.wait() Polling verwendet werden, siehe SDK-Aufgaben-Polling und Streaming-Antworten.

Beispiel 5: Typisierte Fehlerbehandlung

Die Ausnahmehierarchie ist mit TypeScript identisch: AuthenticationError (401), TokenMismatchError (Token stimmt nicht mit dem Dienst überein), InsufficientBalanceError (nicht genügend Guthaben), ResourceDisabledError (Dienst deaktiviert), ValidationError (400), RateLimitError (429), ModerationError (403 Inhaltsprüfung), APIError (Fallback), TimeoutError (Zeitüberschreitung), TransportError (Netzwerkschicht).

Konfigurationsoptionen

Der timeout des Python SDK und das poll_interval / max_wait von TaskHandle sind beide in Sekunden, das TypeScript SDK verwendet Millisekunden, bei der Migration zwischen den Sprachen ist besondere Vorsicht geboten. Siehe SDK-Aufgaben-Polling und Streaming-Antworten.
Das SDK liest standardmäßig die Umgebungsvariable ACEDATACLOUD_API_TOKEN; in diesem Artikel wird zur Vereinheitlichung mit anderen Tutorials wie Claude Code VS Code Tutorial das Beispiel mit ACEDATACLOUD_API_KEY verwendet, es muss api_token=os.environ["ACEDATACLOUD_API_KEY"] explizit injiziert werden.

Fortgeschritten: X402 Zahlungs-Hook

Der vollständige Prozess und die echten Ergebnisse auf der Kette sind zu finden unter SDK + X402 Zahlungs-Hook.

So überprüfen Sie das verbleibende Guthaben

Über Ace Data Cloud Konsole - Anwendungsübersicht können Sie das aktuelle verbleibende Guthaben Ihres Kontos einsehen. Über Ace Data Cloud Konsole - Nutzungshistorie können Sie alle Nutzungshistorien und Abrechnungsdetails einsehen.

Mehr erfahren