@acedatacloud/sdk — це офіційний TypeScript / JavaScript SDK Ace Data Cloud, який обгортає всі сервіси на api.acedata.cloud в типізовані методи, такі як client.openai.chat.completions.create(...), client.images.generate(...), client.search.google(...) тощо, з вбудованими SSE потоками, повторними спробами та типізованими виключеннями.
Можна використовувати в Node.js, Deno, Bun та сучасних браузерах (з bundler).
Адреса вихідного коду та пакету:
- Репозиторій SDK: https://github.com/AceDataCloud/SDK
- npm SDK: https://www.npmjs.com/package/@acedatacloud/sdk
Встановлення
- Версія пакету —
2026.504.2(CalVer, 504-й ISO тиждень 2026 року, 2-ге виправлення). AceDataCloud— це головний клас для побудови клієнта, доступний з експорту за замовчуванням.
Підготовка API Token
Згідно з Оглядом SDK - Отримання API Token, отримайте токен, а потім у shellexport:
apiToken, SDK автоматично зчитуватиме змінну середовища ACEDATACLOUD_API_TOKEN. Якщо у вашому середовищі вже зберігається ACEDATACLOUD_API_KEY (угода проекту), ви можете явно передати: new AceDataCloud({ apiToken: process.env.ACEDATACLOUD_API_KEY }).
Приклад 1: chat.completions (непотоковий)
id chatcmpl-DldCcLvkTFaioST8e6SjOl0wJScQA— це ID відповіді, сумісний з OpenAI, який можна знайти в консолі історії використання.content ADC_TS_SDK_OK— це справжній фіксований ідентифікатор, повернутий моделлю, що підтверджує, що відповідь не була змінена SDK.- Одне завершення чату витрачає приблизно 22 токена, згідно з тарифами gpt-4o-mini.
- SDK оголошує відповідь як
Record<string, unknown>, в час виконання це JSON об’єкт, доступ до.id/.choices[0].message.contentчерез крапку працює в.mjs, Node REPL, Bun; в строгих проектах TypeScript може знадобитися(res as any).idабо вимкненняnoImplicitAnyв tsconfig.
Приклад 2: chat.completions (SSE потоковий)
Відкрившиstream: true, create повертає асинхронний ітератор, кожен фрейм якого є ChatCompletionChunk.
- Затримка першого фрейму 2481 мс — це час, необхідний моделі для генерації першого токена; наступні 12 фреймів прибули за 135 мс.
- 13 фреймів разом становлять
"1 2 3 4 5", кожен токен окремо в фреймі + останній фрейм зfinish_reason. - Потокове не економить токени більше, ніж непотокове, але затримка першого слова значно знижена, що підходить для реального UI.
Приклад 3: images.generate (NanoBanana)
client.images.generate({ provider: 'nano-banana', ... }) повертає результат синхронно, не потрібно передавати параметр wait — API NanoBanana сам по собі є синхронним.
image_url— це стабільна адреса на CDN, яку можна безпосередньо використовувати в<img src />або завантажити.- 16.6 секунд, більшість часу витрачається на інференцію моделі, витрати локального SDK можна ігнорувати.
trace_id— це ID запиту, наданий платформою, якщо виникнуть проблеми, надайте цей ID службі підтримки для швидшого вирішення.- Для асинхронних сервісів (Midjourney, Sora, Veo тощо) потрібно опитувати TaskHandle, деталі див. в SDK опитування завдань та потокові відповіді.
Приклад 4: типізоване оброблення помилок
SDK буде кидати помилки у вигляді конкретних підкласів (AuthenticationError / BadRequestError / RateLimitError / InternalServerError / APIConnectionError тощо) відповідно до HTTP статусу, що дозволяє використовувати instanceof для точного розгалуження.
- 401 автоматично відображається як
AuthenticationError, бізнес-код може використовуватиinstanceofдля точного розгалуження. code: invalid_tokenпоходить з PlatformGateway, що полегшує порівняння з журналами на сервері.- Аналогічно 429 →
RateLimitError, 400 →BadRequestError, 5xx →InternalServerError.
Приклад 5: маршрутизація кількох моделей
Один і той же клієнт може вільно перемикатися між кількома сервісами, якщо назви моделей збігаються.- Один код, один токен, охоплює чотири типи сервісів моделей OpenAI / Google / DeepSeek / xAI.
gemini-2.5-flashцього разу не повернувADC_OK, це різниця у стилі виходу моделі — SDK не приховує нічого, а точно передає слова моделі бізнесу.- Ціни нараховуються відповідно до реальної ціни токена, шлях проходить лише один раз через PlatformGateway.
Приклад 6: Пошук Google
- Один запит отримує 10 органічних результатів, назва поля
organic(неorganic_results). - Пошук проходить через Serp сервіс, нарахування за запит.
- Один і той же екземпляр клієнта може як чатити, так і шукати, одного токена достатньо.
Налаштування
Використання в браузері
@acedatacloud/sdk є ESM + ISO (гомогенний) пакет, який можна безпосередньо import в сучасних браузерах з бандлером. Зверніть увагу: не кодуйте API Token в фронтенд-коді. Рекомендується для фронтенду:
- Використовуйте X402
paymentHandler— гаманець користувача підписує USDC за запитом, без потреби в токені. - Або використовуйте SDK на своєму сервері, браузер лише викликає ваш власний бекенд.
Розширене: опитування завдань і потокові відповіді
- Сервіси завдань (Midjourney, Sora, Veo, Suno): використовуйте
TaskHandleдля опитування, деталі одиниць, тайм-ауту та повторів дивіться в SDK опитування завдань і потокових відповідей. - Потоковий чат: приклад 2 на цій сторінці вже продемонстровано; потокове аудіо / відео також підтримується.
Розширене: X402 платіжні гачки
Якщо ви не хочете запитувати API Token, хочете платити за запитом на блокчейні, можна використовуватиpaymentHandler:
createX402PaymentHandlerна стороні TypeScript приймає{ network, evmProvider, evmAddress, preferScheme? }(EVM ланцюг) або{ network: 'solana', solanaWallet }(Solana). На серверній стороні Node, якщоwindow.ethereumнемає, використовуйтеviem’screateWalletClient(на основі приватного ключа), щоб упакувати сумісний з EIP-1193 провайдер, а потім передайте його; детальніше про це та реальні результати на блокчейні дивіться в SDK + X402 платіжні гачки.

