Skip to main content
github.com/AceDataCloud/SDK/go — это официальный Go SDK от Ace Data Cloud, который оборачивает chat completions / images / video / music / search на api.acedata.cloud в цепочку методов в стиле client.OpenAI().Chat().Completions().Create(...), с поддержкой потоковой передачи SSE (на основе channel), автоматическим повтором с экспоненциальной задержкой и типизированными ошибками. Стиль соответствует context.Context + функциональным опциям, подходит для использования в любом Go бэкенд-сервисе или CLI. Исходный код и документация:

Установка

Вывод проверки версии чистого Go модуля:
Объяснение результата:
  • В данный момент нет меток semver, go get получает коммит в виде псевдоварианта v0.0.0-<timestamp>-<sha>; эта версия будет зафиксирована в go.sum, члены команды, получая один и тот же код, смогут получить полностью идентичные зависимости.
  • Go SDK в настоящее время в основном стабилен для chat.completions (синхронный + потоковый), мультимедийные ресурсы (images / video / audio) и опрос TaskHandle находятся на стадии альфа. Для сценариев, требующих этих возможностей, пожалуйста, выберите в первую очередь TypeScript SDK или Python SDK.

Подготовка API Token

Согласно Обзор SDK - Запрос API Token получите токен, затем в shell выполните export:
При создании клиента явно внедрите через опцию WithAPIToken(...); Go SDK не будет автоматически считывать переменные окружения, необходимо, чтобы бизнес-код использовал os.Getenv, что делает его более управляемым в сценариях с несколькими аккаунтами или тестирования.

Пример 1: chat.completions (не потоковый)

Результат выполнения программы:
Объяснение результата:
  • id — это ID ответа, совместимый с OpenAI, который можно найти в консоли История использования.
  • content ADC_GO_SDK_OK — это реальный вывод модели, подтверждающий, что SDK не изменял ответ.
  • Большая часть 6.4 секунд ушла на первое TLS-соединение + генерацию модели, после повторного использования экземпляра клиента задержка стала такой же, как у TS / Python (примерно 2~3 секунды).
  • Ответ всегда представляет собой map[string]any, требуется самостоятельно выполнять приведение типов; это текущее дизайнерское решение Go SDK — не вводить обобщенные структуры, чтобы маршрутизация по нескольким моделям не зависела от единой схемы ответа.

Пример 2: chat.completions (потоковый SSE)

CreateStream возвращает два канала: &lt;-chan map[string]any — это разобранные по кадрам SSE chunk, &lt;-chan error будет содержать читаемые элементы только после завершения потока (нормально или с ошибкой).
Результат выполнения программы:
Объяснение результата:
  • Первая рамка 1633 мс, все 13 chunk’ов в сумме заняли 1816 мс — последние 12 рамок заняли всего 183 мс.
  • range chunks естественным образом завершит цикл при окончании потока; канал errs всегда будет выдавать максимум один элемент, с помощью ok проверки можно получить ошибку.
  • Преимущество этого стиля с каналами заключается в том, что можно напрямую использовать select в сочетании с context.Context для таймаута/отмены, без необходимости дополнительной упаковки.

Пример 3: обработка типизированных ошибок

adc.APIError одновременно обрабатывает 401 / 403 / 404 / 422 / 429 / 5xx, бизнес-код использует errors.As, чтобы получить структурированные поля. HTTP статус-коды, серверные code и message остаются без изменений. Ошибки сетевого уровня (ошибка DNS, отказ в соединении и т.д.) обрабатываются стандартными ошибками Go, такими как context.DeadlineExceeded, net.OpError и не будут подавляться.

Конфигурационные параметры (функциональные параметры)

NewClient возвращает (*Client, error): когда токен пустой и не передан WithPaymentHandler (X402), будет немедленно выдана ошибка, чтобы можно было сразу обнаружить отсутствие конфигурации на этапе запуска сервиса.

Продвинутый: повторное использование Client

Go SDK использует один *http.Client + http.Transport, который имеет встроенный пул соединений и поддержку HTTP/2. Рекомендуется создавать только один *adc.Client в течение жизненного цикла процесса, а затем делиться им между goroutine — все методы являются потокобезопасными.

Ограничения и дорожная карта

Текущая стабильная / рекомендуемая для производственного использования:
  • ✅ client.OpenAI().Chat().Completions().Create синхронный нестриминговый
  • ✅ client.OpenAI().Chat().Completions().CreateStream SSE стриминговый
  • ✅ errors.As + APIError обработка ошибок
  • ✅ Автоматические повторные попытки + экспоненциальная задержка
Все еще находится в альфа-версии:
  • 🚧 client.Images() / client.Video() / client.Audio() — интерфейсы находятся в разработке, рекомендуется использовать HTTP напрямую
  • 🚧 TaskHandle асинхронный опрос — еще не доступен на уровне Go SDK
  • 🚧 WithPaymentHandler (X402 оплата на блокчейне) — в планах, в настоящее время X402 поддерживает только TypeScript и Python

Как проверить оставшийся лимит

Через консоль Ace Data Cloud - Список приложений можно просмотреть текущий остаток на счете. Через консоль Ace Data Cloud - История использования можно просмотреть всю историю использования и детали списания.

Узнать больше