Skip to main content
github.com/AceDataCloud/SDK/go est le SDK Go officiel d’Ace Data Cloud, qui encapsule les chat completions / images / vidéo / musique / recherche sur api.acedata.cloud sous forme de chaîne de méthodes de style client.OpenAI().Chat().Completions().Create(...), avec un flux SSE intégré (basé sur des canaux), une réessai automatique avec backoff et des erreurs typées. Le style est aligné sur context.Context + options fonctionnelles, adapté à tout service backend Go ou CLI. Code source et documentation :

Installation

Sortie de vérification de version de module Go propre :
Explication des résultats :
  • Actuellement, aucun tag semver n’est appliqué, go get récupère la version de commit pseudo v0.0.0-<timestamp>-<sha> ; cette version sera verrouillée dans go.sum, permettant aux membres de l’équipe de récupérer exactement les mêmes dépendances en tirant le même code.
  • Le SDK Go est actuellement principalement stable sur chat.completions (synchronisé + en streaming), les ressources multimédias (images / vidéo / audio) et le polling TaskHandle sont en phase alpha. Pour les scénarios nécessitant ces capacités, veuillez privilégier le SDK TypeScript ou le SDK Python.

Préparer le token API

Référez-vous à Aperçu du SDK - Demande de token API pour obtenir le token, puis dans le shell export :
Lors de la construction du client, injectez explicitement via l’option WithAPIToken(...) ; le SDK Go ne lira pas automatiquement les variables d’environnement, nécessitant que le code métier utilise os.Getenv, ce qui est plus contrôlable dans des scénarios multi-comptes ou de test.

Exemple 1 : chat.completions (non en streaming)

Résultat de l’exécution du programme :
Explication des résultats :
  • id est l’ID de réponse compatible avec OpenAI, que l’on peut retrouver dans l’historique d’utilisation console.
  • content ADC_GO_SDK_OK est la sortie réelle du modèle, prouvant que le SDK n’a pas altéré la réponse.
  • Les 6,4 secondes sont principalement dues à la première poignée de main TLS + génération du modèle, après la réutilisation de l’instance client, la latence est cohérente avec TS / Python (environ 2 à 3 secondes).
  • La réponse est uniformément un map[string]any, nécessitant des assertions de type ; c’est le choix de conception actuel du SDK Go — ne pas introduire de struct générique pour éviter une forte dépendance à un schéma de réponse unique pour le routage multi-modèles.

Exemple 2 : chat.completions (SSE en streaming)

CreateStream retourne deux canaux : &lt;-chan map[string]any est le chunk SSE analysé par trame, &lt;-chan error ne contiendra des éléments lisibles qu’à la fin du flux (normal ou en erreur).
Résultat de l’exécution du programme :
Explication des résultats :
  • La première trame a pris 1633 ms, et il a fallu 1816 ms pour recevoir les 13 chunks — les 12 trames suivantes n’ont pris que 183 ms.
  • range chunks sort naturellement de la boucle à la fin du flux ; le canal errs ne produit au maximum qu’un élément, et il suffit d’utiliser ok pour obtenir l’erreur.
  • L’avantage de ce style de canal est qu’il peut être directement utilisé avec select en combinaison avec context.Context pour les délais / annulations, sans nécessiter d’encapsulation supplémentaire.

Exemple 3 : Gestion des erreurs typées

adc.APIError couvre également 401 / 403 / 404 / 422 / 429 / 5xx, le code métier utilise errors.As pour obtenir les champs structurés. Le code d’état HTTP, le code et le message du serveur sont conservés tels quels. Les erreurs de couche réseau (échec DNS, connexion refusée, etc.) passent par context.DeadlineExceeded, net.OpError et autres erreurs standard de Go, et ne seront pas avalées.

Options de configuration (options fonctionnelles)

NewClient retourne (*Client, error) : lorsque le token est vide et qu’aucun WithPaymentHandler (X402) n’est passé, une erreur sera immédiatement signalée, facilitant la détection des configurations manquantes au démarrage du service.

Avancé : Réutiliser le Client

Le SDK Go utilise en interne un *http.Client + http.Transport, avec un pool de connexions et une réutilisation HTTP/2. Il est recommandé de créer un seul *adc.Client pendant le cycle de vie du processus, puis de le partager entre les goroutines — toutes les méthodes sont sûres pour la concurrence.

Limitations et feuille de route

Actuellement stable / recommandé pour une utilisation en production :
  • ✅ client.OpenAI().Chat().Completions().Create synchronisé non-flux
  • ✅ client.OpenAI().Chat().Completions().CreateStream flux SSE
  • ✅ errors.As + gestion des erreurs APIError
  • ✅ Réessai automatique + retour exponentiel
Toujours en alpha :
  • 🚧 client.Images() / client.Video() / client.Audio() — l’interface est en évolution, il est recommandé d’utiliser directement HTTP pour le moment
  • 🚧 TaskHandle sondage asynchrone — pas encore exposé à la surface du SDK Go
  • 🚧 WithPaymentHandler (X402 paiement en ligne) — prévu, actuellement X402 ne prend en charge que TypeScript et Python

Comment vérifier le solde restant

Via Ace Data Cloud Console - Liste des applications, vous pouvez vérifier le solde restant de votre compte. Via Ace Data Cloud Console - Historique d’utilisation vous pouvez voir tout l’historique d’utilisation et les détails de facturation.

En savoir plus