Skip to main content
github.com/AceDataCloud/SDK/go è l’SDK Go ufficiale di Ace Data Cloud, che incapsula le chat completions / immagini / video / musica / ricerca su api.acedata.cloud in una catena di metodi in stile client.OpenAI().Chat().Completions().Create(...), con flusso SSE (basato su channel), ripetizione automatica con backoff e errori tipizzati. Stile allineato a context.Context + opzioni funzionali, adatto per qualsiasi servizio backend Go o CLI. Codice sorgente e documentazione:

Installazione

Output della verifica della versione del modulo Go pulito:
Spiegazione dei risultati:
  • Attualmente non è stato etichettato alcun semver, go get recupera la versione fittizia del commit v0.0.0-<timestamp>-<sha>; questa versione sarà bloccata in go.sum, i membri del team che recuperano lo stesso codice possono ottenere dipendenze completamente coerenti.
  • L’SDK Go attualmente si concentra su chat.completions (sincrono + in streaming) come percorso principale stabile, le risorse multimediali (images / video / audio) e il polling di TaskHandle sono in fase alpha. Per scenari che richiedono queste capacità, si prega di scegliere prima TypeScript SDK o Python SDK.

Preparare il Token API

Fare riferimento a Panoramica SDK - Richiesta Token API per ottenere il token, quindi in shell export:
Durante la costruzione del client, iniettare esplicitamente tramite l’opzione WithAPIToken(...); l’SDK Go non leggerà automaticamente le variabili d’ambiente, è necessario che il codice aziendale utilizzi os.Getenv, in modo che in scenari con più account o di auto-test sia più controllabile.

Esempio 1: chat.completions (non in streaming)

Risultato dell’esecuzione del programma:
Spiegazione dei risultati:
  • id è l’ID di risposta compatibile con OpenAI, che può essere trovato nella console storico utilizzi.
  • content ADC_GO_SDK_OK è l’output reale del modello, che dimostra che l’SDK non ha alterato la risposta.
  • La maggior parte dei 6,4 secondi è stata impiegata per il primo handshake TLS + generazione del modello, dopo il riutilizzo dell’istanza client, la latenza è coerente con TS / Python (circa 2~3 secondi).
  • La risposta è uniformemente un map[string]any, è necessario effettuare l’asserzione di tipo; questa è la scelta di design attuale dell’SDK Go: non introdurre struct generici per evitare una forte dipendenza da uno schema di risposta unico per il routing di più modelli.

Esempio 2: chat.completions (streaming SSE)

CreateStream restituisce due channel: &lt;-chan map[string]any è il chunk SSE analizzato frame per frame, &lt;-chan error avrà elementi leggibili solo dopo la fine del flusso (normalmente o per errore).
Risultato dell’esecuzione del programma:
Spiegazione dei risultati:
  • Il primo frame ha impiegato 1633 ms, tutti i 13 chunk sono stati ricevuti in 1816 ms—gli ultimi 12 frame hanno impiegato solo 183 ms.
  • range chunks uscirà naturalmente dal ciclo alla fine del flusso; il channel errs restituirà al massimo un elemento, è sufficiente utilizzare ok per ottenere l’errore.
  • Il vantaggio di questo stile basato su channel è che può essere direttamente utilizzato con select insieme a context.Context per timeout/cancellazione, senza necessità di ulteriori incapsulamenti.

Esempio 3: gestione degli errori tipizzati

adc.APIError copre 401 / 403 / 404 / 422 / 429 / 5xx, il codice aziendale utilizza errors.As per ottenere i campi strutturati. I codici di stato HTTP, il code e il message del server rimangono invariati. Gli errori di rete (fallimento DNS, connessione rifiutata, ecc.) seguono errori standard di Go come context.DeadlineExceeded, net.OpError, ecc., e non vengono ignorati.

Opzioni di configurazione (opzioni funzionali)

NewClient restituisce (*Client, error): quando il token è vuoto e non è stato passato WithPaymentHandler (X402), genera immediatamente un errore, utile per scoprire la mancanza di configurazione durante l’avvio del servizio.

Avanzato: riutilizzo del Client

Il Go SDK utilizza internamente un *http.Client + http.Transport, con pool di connessione e riutilizzo HTTP/2. Si consiglia di creare solo un *adc.Client durante il ciclo di vita del processo e poi condividerlo tra le goroutine: tutti i metodi sono thread-safe.

Limitazioni e roadmap

Attualmente stabile / raccomandato per uso in produzione:
  • ✅ client.OpenAI().Chat().Completions().Create sincrono non streaming
  • ✅ client.OpenAI().Chat().Completions().CreateStream streaming SSE
  • ✅ errors.As + gestione degli errori APIError
  • ✅ tentativi automatici + backoff esponenziale
Ancora in alpha:
  • 🚧 client.Images() / client.Video() / client.Audio() — le interfacce sono in evoluzione, si consiglia di utilizzare direttamente HTTP
  • 🚧 TaskHandle polling asincrono — non è ancora esposto nella superficie del Go SDK
  • 🚧 WithPaymentHandler (X402 pagamento on-chain) — in programma, attualmente X402 supporta solo TypeScript e Python

Come controllare il saldo rimanente

Attraverso Ace Data Cloud Console - Elenco applicazioni, è possibile visualizzare il saldo rimanente attuale dell’account. Attraverso Ace Data Cloud Console - Storico utilizzo è possibile visualizzare tutta la cronologia degli utilizzi e i dettagli delle spese.

Scopri di più