Skip to main content
github.com/AceDataCloud/SDK/go to oficjalne Go SDK Ace Data Cloud, które opakowuje chat completions / images / video / music / search z api.acedata.cloud w stylu łańcucha metod client.OpenAI().Chat().Completions().Create(...), z wbudowanym strumieniem SSE (opartym na kanale), automatycznym ponownym próbowaniem z opóźnieniem i typowanymi błędami. Styl jest zgodny z context.Context + opcjami funkcyjnymi, co czyni go odpowiednim do umieszczenia w dowolnej usłudze backendowej Go lub CLI. Kod źródłowy i dokumentacja:

Instalacja

Czyste wyjście z kontroli wersji modułu Go:
Wyjaśnienie wyników:
  • Obecnie nie ma oznaczonego tagu semver, go get pobiera wersję pseudo-commit v0.0.0-<timestamp>-<sha>; ta wersja zostanie zablokowana w go.sum, a członkowie zespołu pobierający ten sam kod mogą uzyskać dokładnie te same zależności.
  • Go SDK obecnie koncentruje się na chat.completions (synchronizacja + strumień) jako głównym stabilnym ścieżce, zasoby multimedialne (images / video / audio) oraz TaskHandle w trybie polling są w fazie alfa. W przypadku potrzeby tych funkcji, proszę najpierw wybrać TypeScript SDK lub Python SDK.

Przygotowanie tokena API

Proszę zapoznać się z Przegląd SDK - Uzyskiwanie tokena API w celu uzyskania tokena, a następnie w shellu export:
Podczas konstruowania klienta należy jawnie wstrzyknąć przez opcję WithAPIToken(...); Go SDK nie odczytuje automatycznie zmiennych środowiskowych, co wymaga, aby kod biznesowy użył os.Getenv, co czyni go bardziej kontrolowanym w scenariuszach z wieloma kontami lub testami.

Przykład 1: chat.completions (nie-strumieniowe)

Wynik działania programu:
Wyjaśnienie wyników:
  • id to identyfikator odpowiedzi zgodny z OpenAI, który można znaleźć w konsoli użycie historii.
  • content ADC_GO_SDK_OK to rzeczywiste wyjście modelu, co dowodzi, że SDK nie zmieniło odpowiedzi.
  • Większość 6.4 sekundy to pierwsze nawiązanie TLS + generowanie modelu, po ponownym użyciu instancji klienta opóźnienie jest zgodne z TS / Python (około 2~3 sekundy).
  • Odpowiedź jest zawsze map[string]any, co wymaga samodzielnego wykonania asercji typów; to jest obecny wybór projektowy Go SDK — brak wprowadzenia ogólnych struktur ma na celu umożliwienie routingu wielu modeli bez silnej zależności od pojedynczego schematu odpowiedzi.

Przykład 2: chat.completions (SSE strumieniowe)

CreateStream zwraca dwa kanały: &lt;-chan map[string]any to zdekodowane fragmenty SSE, a &lt;-chan error będzie miało czytelne elementy dopiero po zakończeniu strumienia (normalnie lub w przypadku błędu).
Wynik działania programu:
Wyjaśnienie wyników:
  • Pierwsza klatka 1633 ms, 13 fragmentów dotarło w sumie w 1816 ms — pozostałe 12 klatek zajęło tylko 183 ms.
  • range chunks naturalnie zakończy pętlę po zakończeniu strumienia; kanał errs zawsze zwraca maksymalnie jeden element, co pozwala na sprawdzenie błędu przy użyciu ok.
  • Zaletą tego stylu kanałów jest możliwość bezpośredniego użycia select w połączeniu z context.Context dla timeoutów/anulacji, bez potrzeby dodatkowego opakowywania.

Przykład 3: typowane przetwarzanie błędów

adc.APIError jednocześnie pokrywa 401 / 403 / 404 / 422 / 429 / 5xx, kod biznesowy używa errors.As, aby uzyskać zorganizowane pola. Kody statusu HTTP, code i message serwera pozostają bez zmian. Błędy warstwy sieciowej (błąd DNS, odrzucenie połączenia itp.) są obsługiwane przez context.DeadlineExceeded, net.OpError i inne standardowe błędy Go, nie będą tłumione.

Opcje konfiguracyjne (opcje funkcjonalne)

NewClient zwraca (*Client, error): gdy token jest pusty i nie przekazano WithPaymentHandler (X402), natychmiast zgłasza błąd, co ułatwia wykrycie brakującej konfiguracji podczas uruchamiania usługi.

Zaawansowane: ponowne użycie klienta

SDK Go wewnętrznie używa jednego *http.Client + http.Transport, z wbudowanym pulą połączeń i wielokrotnym użyciem HTTP/2. Zaleca się utworzenie tylko jednego *adc.Client w cyklu życia procesu, a następnie współdzielenie go między goroutine — wszystkie metody są bezpieczne dla współbieżności.

Ograniczenia i mapa drogowa

Obecnie stabilne / zalecane do użycia w produkcji:
  • ✅ client.OpenAI().Chat().Completions().Create synchronizowane, nie strumieniowe
  • ✅ client.OpenAI().Chat().Completions().CreateStream strumieniowe SSE
  • ✅ errors.As + obsługa błędów APIError
  • ✅ Automatyczne ponawianie + wykładnicze opóźnienie
Wciąż w fazie alpha:
  • 🚧 client.Images() / client.Video() / client.Audio() — interfejsy są w trakcie rozwoju, zaleca się bezpośrednie użycie HTTP
  • 🚧 TaskHandle asynchroniczne sprawdzanie — jeszcze nie udostępnione w warstwie SDK Go
  • 🚧 WithPaymentHandler (X402 płatność na łańcuchu) — w planach, obecnie X402 obsługuje tylko TypeScript i Python

Jak sprawdzić pozostały limit

Można sprawdzić aktualny limit konta przez konsolę Ace Data Cloud - lista aplikacji. Można sprawdzić całą historię użycia i szczegóły opłat przez konsolę Ace Data Cloud - historia użycia.

Dowiedz się więcej