Skip to main content
github.com/AceDataCloud/SDK/go ist das offizielle Go SDK von Ace Data Cloud, das die Chat-Vervollständigungen / Bilder / Videos / Musik / Suche von api.acedata.cloud in eine Methode im Stil von client.OpenAI().Chat().Completions().Create(...) kapselt, mit eingebautem SSE-Streaming (basierend auf Channels), automatischem Retry-Backoff und typisierten Fehlern. Stilistisch ausgerichtet auf context.Context + funktionale Optionen, geeignet für jede Go-Backend-Service oder CLI. Quellcode und Dokumentation:

Installation

Ausgabe der Versionsprüfung für saubere Go-Module:
Erklärung der Ergebnisse:
  • Derzeit gibt es kein semver-Tag, go get zieht die Commit-Pseudoversion v0.0.0-<timestamp>-<sha>; diese Version wird in go.sum gesperrt, sodass Teammitglieder beim Abrufen des gleichen Codes identische Abhängigkeiten erhalten.
  • Das Go SDK ist derzeit stabil mit chat.completions (synchron + streamend) als Hauptpfad, während Multimedia-Ressourcen (images / video / audio) und TaskHandle-Polling sich in der Alpha-Phase befinden. Für Szenarien, die diese Fähigkeiten benötigen, wählen Sie bitte zuerst das TypeScript SDK oder das Python SDK.

API-Token vorbereiten

Siehe SDK-Übersicht - API-Token beantragen um ein Token zu erhalten, und dann im Shell export:
Beim Erstellen des Clients wird das Token explizit über die Option WithAPIToken(...) injiziert; das Go SDK liest Umgebungsvariablen nicht automatisch, sodass der Anwendungscode os.Getenv verwenden muss, was in Szenarien mit mehreren Konten oder Selbsttests besser kontrollierbar ist.

Beispiel 1: chat.completions (nicht streamend)

Ausgabe des Programms:
Erklärung der Ergebnisse:
  • id ist die OpenAI-kompatible Antwort-ID, die im Nutzungsverlauf in der Konsole gefunden werden kann.
  • content ADC_GO_SDK_OK ist die tatsächliche Ausgabe des Modells, die beweist, dass das SDK die Antwort nicht verändert hat.
  • In 6,4 Sekunden war der größte Teil die erste TLS-Handschlag + Modellerzeugung, nach der Wiederverwendung der Client-Instanz sind die Latenzen mit TS / Python konsistent (ca. 2~3 Sekunden).
  • Die Antwort ist einheitlich map[string]any, was Typassertionen erfordert; dies ist das aktuelle Design des Go SDK — die Nicht-Einführung von generischen Structs soll verhindern, dass die Multi-Modell-Routing stark von einem einzigen Antwortschema abhängt.

Beispiel 2: chat.completions (SSE streamend)

CreateStream gibt zwei Channels zurück: &lt;-chan map[string]any ist der schrittweise analysierte SSE-Chunk, &lt;-chan error hat erst nach dem Ende des Streams (normal oder fehlerhaft) lesbare Elemente.
Ausgabe des Programms:
Erklärung der Ergebnisse:
  • Der erste Frame benötigte 1633 ms, alle 13 Chunks zusammen benötigten 1816 ms — die letzten 12 Frames benötigten nur 183 ms.
  • range chunks wird natürlich beim Ende des Streams die Schleife verlassen; der errs-Channel gibt immer maximal ein Element aus, das mit ok überprüft werden kann, um den Fehler zu erhalten.
  • Der Vorteil dieses Channel-Stils ist, dass er direkt mit select in Verbindung mit context.Context für Timeout / Abbruch verwendet werden kann, ohne zusätzliche Verpackung.

Beispiel 3: Typisierte Fehlerbehandlung

adc.APIError deckt gleichzeitig 401 / 403 / 404 / 422 / 429 / 5xx ab, der Geschäftscode verwendet errors.As, um die strukturierten Felder zu erhalten. HTTP-Statuscodes, Server code und message bleiben unverändert. Netzwerkfehler (DNS-Fehler, Verbindungsabbruch usw.) verwenden Standard-Go-Fehler wie context.DeadlineExceeded, net.OpError usw. und werden nicht unterdrückt.

Konfigurationsoptionen (funktionale Optionen)

NewClient gibt (*Client, error) zurück: Wenn der Token leer ist und WithPaymentHandler nicht übergeben wurde (X402), wird sofort ein Fehler ausgegeben, um fehlende Konfigurationen bereits beim Start des Dienstes zu erkennen.

Fortgeschritten: Client wiederverwenden

Das Go SDK verwendet intern einen *http.Client + http.Transport, der einen Verbindungspool und HTTP/2-Wiederverwendung mitbringt. Es wird empfohlen, innerhalb des Lebenszyklus des Prozesses nur einen *adc.Client zu erstellen und diesen dann zwischen Goroutinen zu teilen – alle Methoden sind nebenläufig sicher.

Einschränkungen und Fahrplan

Aktuell stabil / für die Produktion empfohlen:
  • ✅ client.OpenAI().Chat().Completions().Create synchron nicht-streaming
  • ✅ client.OpenAI().Chat().Completions().CreateStream SSE-streaming
  • ✅ errors.As + APIError Fehlerbehandlung
  • ✅ Automatische Wiederholungen + exponentielles Backoff
Noch in Alpha:
  • 🚧 client.Images() / client.Video() / client.Audio() — Schnittstellen sind in Entwicklung, empfohlen wird, zunächst direkt über HTTP zu arbeiten
  • 🚧 TaskHandle asynchrone Abfrage — noch nicht im Go SDK sichtbar
  • 🚧 WithPaymentHandler (X402 On-Chain-Zahlung) — in Planung, derzeit unterstützt X402 nur TypeScript und Python

So überprüfen Sie das verbleibende Guthaben

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

Mehr erfahren