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:
- Repository SDK: https://github.com/AceDataCloud/SDK
- Modulo Go: https://pkg.go.dev/github.com/AceDataCloud/SDK/go
Installazione
- Attualmente non è stato etichettato alcun semver,
go getrecupera la versione fittizia del commitv0.0.0-<timestamp>-<sha>; questa versione sarà bloccata ingo.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 diTaskHandlesono 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 shellexport:
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)
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: <-chan map[string]any è il chunk SSE analizzato frame per frame, <-chan error avrà elementi leggibili solo dopo la fine del flusso (normalmente o per errore).
- 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 chunksuscirà naturalmente dal ciclo alla fine del flusso; il channelerrsrestituirà al massimo un elemento, è sufficiente utilizzareokper ottenere l’errore.- Il vantaggio di questo stile basato su channel è che può essere direttamente utilizzato con
selectinsieme acontext.Contextper 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().Createsincrono non streaming - ✅
client.OpenAI().Chat().Completions().CreateStreamstreaming SSE - ✅
errors.As+ gestione degli erroriAPIError - ✅ tentativi automatici + backoff esponenziale
- 🚧
client.Images()/client.Video()/client.Audio()— le interfacce sono in evoluzione, si consiglia di utilizzare direttamente HTTP - 🚧
TaskHandlepolling asincrono — non è ancora esposto nella superficie del Go SDK - 🚧
WithPaymentHandler(X402 pagamento on-chain) — in programma, attualmente X402 supporta solo TypeScript e Python

