acedatacloud — це офіційний Python SDK Ace Data Cloud, який обгортає всі сервіси на api.acedata.cloud у типізовані методи, такі як client.openai.chat.completions.create(...), client.images.generate(...), client.search.google(...) тощо, одночасно надаючи дві версії клієнта: синхронну та асинхронну.
В основі лежить httpx, який підтримує потоки SSE, автоматичне повторне виконання, типізовані виключення та валідацію типів pydantic.
Адреси вихідного коду та пакету:
- Репозиторій SDK: https://github.com/AceDataCloud/SDK
- PyPI: https://pypi.org/project/acedatacloud/
Встановлення
- Версія пакету —
2026.4.26.1(CalVer, виправлення 26 квітня 2026 року). AceDataCloud— це синхронний клієнт,AsyncAceDataCloud— асинхронний клієнт asyncio.- Цей SDK не залежить від
pydantic, тіло відповіді завжди повертаєdict. Це відрізняється відopenai-python, на що потрібно звернути увагу під час міграції.
Підготовка API Token
Згідно з Оглядом SDK - Отримання API Token, отримайте токен, а потім у shellexport:
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 (асинхронний)
APIAsyncAceDataCloud повністю симетричний до синхронної версії, лише всі методи 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: Обробка помилок типізації
AuthenticationError (401), TokenMismatchError (токен не відповідає сервісу), InsufficientBalanceError (недостатньо коштів), ResourceDisabledError (послуга вимкнена), ValidationError (400), RateLimitError (429), ModerationError (403 перевірка контенту), APIError (загальний), TimeoutError (тайм-аут), TransportError (мережевий рівень).
Налаштування параметрів
Тайм-аут Python SDK таpoll_interval/max_waitTaskHandle вимірюються в секундах, а TypeScript SDK використовує мілісекунди, на це слід звернути особливу увагу під час міжмовної міграції. Детальніше дивіться SDK завдання опитування та потокова відповідь.
SDK за замовчуванням читає змінну середовищаACEDATACLOUD_API_TOKEN; у цій статті, щоб узгодити з Claude Code VS Code навчальним посібником та іншими посібниками, в прикладі використовуєтьсяACEDATACLOUD_API_KEY, потрібно явно вказатиapi_token=os.environ["ACEDATACLOUD_API_KEY"].

