Skip to main content
acedatacloud — це офіційний Python SDK Ace Data Cloud, який обгортає всі сервіси на api.acedata.cloud у типізовані методи, такі як client.openai.chat.completions.create(...), client.images.generate(...), client.search.google(...) тощо, одночасно надаючи дві версії клієнта: синхронну та асинхронну. В основі лежить httpx, який підтримує потоки SSE, автоматичне повторне виконання, типізовані виключення та валідацію типів pydantic. Адреси вихідного коду та пакету:

Встановлення

Якщо потрібно платити на ланцюгу X402 (без шляху API Token), встановіть ще один:
Перевірка версії на чистому venv:
Результати показують:
  • Версія пакету — 2026.4.26.1 (CalVer, виправлення 26 квітня 2026 року).
  • AceDataCloud — це синхронний клієнт, AsyncAceDataCloud — асинхронний клієнт asyncio.
  • Цей SDK не залежить від pydantic, тіло відповіді завжди повертає dict. Це відрізняється від openai-python, на що потрібно звернути увагу під час міграції.

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

Згідно з Оглядом SDK - Отримання API Token, отримайте токен, а потім у shell export:
При створенні клієнта не передавайте api_token, SDK автоматично зчитуватиме змінну середовища ACEDATACLOUD_API_TOKEN. Якщо у вашому середовищі вже зберігається ACEDATACLOUD_API_KEY (угода проекту), будь ласка, передайте явно: AceDataCloud(api_token=os.environ["ACEDATACLOUD_API_KEY"]).

Приклад 1: chat.completions (синхронний)

Результат виконання програми:
Результати показують:
  • id — це ID відповіді, який можна знайти в Історії використання.
  • content ADC_PY_SDK_OK — це фіксований ідентифікатор, який модель повертає насправді.
  • res["usage"] повертає dict, а не модель pydantic; один виклик приблизно споживає 24 токена.

Приклад 2: chat.completions (потокове SSE)

Коли stream=True, create повертає звичайний генератор, який кожного разу видає один розібраний chunk dict.
Результат виконання програми:
Результати показують:
  • Затримка першого кадру 2104 мс, наступні 11 кадрів зайняли лише 7 мс, щоб зібратися — як тільки сервіс починає поток, локально це легко споживати.
  • chunk — це звичайний dict, безпечно отримуйте значення за форматом OpenAI SSE, використовуючи .get().
  • У реальному виробництві рекомендується одночасно видавати та передавати SSE на фронт, загальна затримка першого кадру близько 2 секунд.

Приклад 3: AsyncAceDataCloud (асинхронний)

API AsyncAceDataCloud повністю симетричний до синхронної версії, лише всі методи IO повертають корутину. Підходить для FastAPI / aiohttp / asyncio сервісів.
Результат виконання програми:
Результати показують:
  • Асинхронна версія та синхронна версія проходять через один і той же HTTP шлях, лише реалізація пулу з’єднань різна (httpx.AsyncClient).
  • При виході явно await client.close(), щоб закрити пул з’єднань; у службах з тривалим життєвим циклом потрібно закривати лише один раз перед виходом процесу.
  • Одноразова затримка приблизно така ж, як у синхронній версії, у сценаріях з паралельними запитами асинхронність виявляє свої переваги — один цикл подій може одночасно обробляти десятки або сотні запитів у процесі.

Приклад 4: images.generate (NanoBanana)

API NanoBanana — це сервіс для синхронного генерування зображень, не передавайте wait — виклик SDK буде чекати, поки сервіс не поверне 200.
Результат програми:
Опис результату:
  • image_url є стабільною адресою на CDN, яку можна безпосередньо завантажити або вбудувати в веб-сторінку.
  • За 18.9 секунд майже весь час витрачено на інференцію моделі; витрати локального SDK становлять лише кілька мілісекунд.
  • Для таких справжніх асинхронних завдань, як Midjourney, Sora, Veo, Suno, потрібно використовувати wait=True або вручну TaskHandle.wait(), детальніше дивіться SDK завдання опитування та потокова відповідь.

Приклад 5: Обробка помилок типізації

Ієрархія винятків така ж, як у TypeScript: AuthenticationError (401), TokenMismatchError (токен не відповідає сервісу), InsufficientBalanceError (недостатньо коштів), ResourceDisabledError (послуга вимкнена), ValidationError (400), RateLimitError (429), ModerationError (403 перевірка контенту), APIError (загальний), TimeoutError (тайм-аут), TransportError (мережевий рівень).

Налаштування параметрів

Тайм-аут Python SDK та poll_interval / max_wait TaskHandle вимірюються в секундах, а TypeScript SDK використовує мілісекунди, на це слід звернути особливу увагу під час міжмовної міграції. Детальніше дивіться SDK завдання опитування та потокова відповідь.
SDK за замовчуванням читає змінну середовища ACEDATACLOUD_API_TOKEN; у цій статті, щоб узгодити з Claude Code VS Code навчальним посібником та іншими посібниками, в прикладі використовується ACEDATACLOUD_API_KEY, потрібно явно вказати api_token=os.environ["ACEDATACLOUD_API_KEY"].

Розширене: X402 платіжний хук

Повний процес і реальні результати на ланцюгу дивіться SDK + X402 платіжний хук.

Як перевірити залишок

Через Консоль Ace Data Cloud - Список додатків можна переглянути залишок на рахунку. Через Консоль Ace Data Cloud - Історія використання можна переглянути всю історію використання та деталі витрат.

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