Skip to main content
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:

Installation

Utskrift av versionkontroll för rena Go-moduler:
Resultatförklaring:
  • För närvarande finns det ingen semver-tagg, go get hämtar commit pseudo-versionen v0.0.0-<timestamp>-<sha>; denna version kommer att låsas i go.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) och TaskHandle polling ä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:
Vid konstruktion av klienten injiceras den uttryckligen genom 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)

Programresultat:
Resultatförklaring:
  • 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: &lt;-chan map[string]any är de successivt analyserade SSE-chunkarna, &lt;-chan error kommer att ha läsbara element först efter att strömmen har avslutats (normalt eller med fel).
Programresultat:
Resultatförklaring:
  • Första chunk tog 1633 ms, och totalt 13 chunkar tog 1816 ms - de efterföljande 12 chunkarna tog bara 183 ms.
  • range chunks kommer naturligt att avsluta loopen när strömmen avslutas; errs-kanalen kommer alltid att yielda högst ett element, och med ok-kontroll kan man fånga felet.
  • Fördelen med denna kanalstil är att man direkt kan select i kombination med context.Context fö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().Create synkron icke-strömmande
  • ✅ client.OpenAI().Chat().Completions().CreateStream SSE-strömmande
  • ✅ errors.As + APIError felhantering
  • ✅ Automatiska omförsök + exponentiell backoff
Fortfarande i alpha:
  • 🚧 client.Images() / client.Video() / client.Audio() — gränssnittet är under utveckling, rekommenderas att använda HTTP direkt
  • 🚧 TaskHandle asynkron 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

Hur man kontrollerar kvarvarande kvot

Genom Ace Data Cloud-konsolen - Applista kan du se den aktuella kontots kvarvarande kvot. Genom Ace Data Cloud-konsolen - Användningshistorik kan du se all användningshistorik och avgiftsdetaljer.

Lär dig mer