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 потокову (на основі каналу), автоматичне повторне спробування з відступом та типізовані помилки. Стиль узгоджується з 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 частини, &lt;-chan error з’явиться лише після завершення потоку (нормально або з помилкою).
Результат виконання програми:
Роз’яснення результату:
  • Перша частина 1633 мс, 13 частин в цілому зайняли 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 - Історія використання можна переглянути всю історію використання та деталі витрат.

Дізнатися більше