github.com/AceDataCloud/SDK/go är Ace Data Clouds officiella Go SDK, som kapslar in chat completions / images / video / music / search på api.acedata.cloud i metoder som följer stilen client.OpenAI().Chat().Completions().Create(...), med inbyggd SSE-strömning (baserat på channel), automatisk återförsök och typade fel.
Stilen är anpassad till context.Context + funktionella alternativ, vilket gör den lämplig för alla Go-backend-tjänster eller CLI.
Källkod och dokumentation:
- SDK-repo: https://github.com/AceDataCloud/SDK
- Go-modul: https://pkg.go.dev/github.com/AceDataCloud/SDK/go
Installation
- För närvarande finns det ingen semver-tagg,
go gethämtar commit pseudo-versionenv0.0.0-<timestamp>-<sha>; denna version kommer att låsas igo.sum, så att teammedlemmar som hämtar samma kod kan få helt identiska beroenden. - Go SDK är för närvarande stabil med
chat.completions(synkron + strömmande) som huvudväg, medan multimediaresurser (images/video/audio) ochTaskHandlepolling är i alpha-fas. För scenarier som behöver dessa funktioner, välj först TypeScript SDK eller Python SDK.
Förbered API-token
Referera till SDK-översikt - Ansök om API-token för att få token, och exportera den i shell:WithAPIToken(...) alternativ; Go SDK kommer inte automatiskt att läsa miljövariabler, så affärskoden behöver anropa os.Getenv, vilket ger mer kontroll i scenarier med flera konton eller självtest.
Exempel 1: chat.completions (icke-strömmande)
idär OpenAI-kompatibel svar-ID, som kan hittas i kontrollpanelen användningshistorik.content ADC_GO_SDK_OKär modellens verkliga utdata, vilket bevisar att SDK inte har manipulerat svaret.- De 6,4 sekunderna består mestadels av den första TLS-handshake + modellgenerering, efter att ha återanvänt klientinstansen är fördröjningen och TS / Python konsekvent (ungefär 2~3 sekunder).
- Svaret är alltid
map[string]any, vilket kräver att man gör typassertioner; detta är Go SDK:s nuvarande designval - att inte införa generiska strukturer för att undvika starkt beroende av en enda svarsschema för flera modeller.
Exempel 2: chat.completions (SSE strömmande)
CreateStream returnerar två kanaler: <-chan map[string]any är de successivt analyserade SSE-chunkarna, <-chan error kommer att ha läsbara element först efter att strömmen har avslutats (normalt eller med fel).
- Första chunk tog 1633 ms, och totalt 13 chunkar tog 1816 ms - de efterföljande 12 chunkarna tog bara 183 ms.
range chunkskommer naturligt att avsluta loopen när strömmen avslutas;errs-kanalen kommer alltid att yielda högst ett element, och medok-kontroll kan man fånga felet.- Fördelen med denna kanalstil är att man direkt kan
selecti kombination medcontext.Contextför timeout/cancel, utan att behöva extra inkapsling.
Exempel 3: Typad felhantering
adc.APIError täcker 401 / 403 / 404 / 422 / 429 / 5xx, affärskoden använder errors.As för att hämta strukturerade fält. HTTP-statuskoder, serverns code och message behålls oförändrade. Nätverksfel (DNS-fel, anslutning nekad etc.) hanteras av context.DeadlineExceeded, net.OpError och andra standard Go-fel, och kommer inte att slukas.
Konfigurationsalternativ (funktionella alternativ)
NewClient returnerar (*Client, error): När token är tom och WithPaymentHandler (X402) inte har skickats, kommer det att ge ett fel omedelbart, vilket gör det lättare att upptäcka konfigurationsbrister vid tjänstens start.
Avancerat: Återanvända Client
Go SDK använder internt en*http.Client + http.Transport, som har en anslutningspool och HTTP/2-återanvändning. Rekommenderas att endast skapa en *adc.Client under processens livscykel och sedan dela över goroutines - alla metoder är trådsäkra.
Begränsningar och färdplan
Nuvarande stabila / rekommenderade för produktionsanvändning:- ✅
client.OpenAI().Chat().Completions().Createsynkron icke-strömmande - ✅
client.OpenAI().Chat().Completions().CreateStreamSSE-strömmande - ✅
errors.As+APIErrorfelhantering - ✅ Automatiska omförsök + exponentiell backoff
- 🚧
client.Images()/client.Video()/client.Audio()— gränssnittet är under utveckling, rekommenderas att använda HTTP direkt - 🚧
TaskHandleasynkron polling — har ännu inte exponerats till Go SDK:s yta - 🚧
WithPaymentHandler(X402 kedjeavgift) — planerat, för närvarande stöder X402 endast TypeScript och Python

