acedatacloud è l’SDK Python ufficiale di Ace Data Cloud, che incapsula tutti i servizi su api.acedata.cloud in metodi tipizzati come client.openai.chat.completions.create(...), client.images.generate(...), client.search.google(...), ecc., fornendo sia client sincroni che asincroni.
Si basa su httpx, supporta flussi SSE, ripetizioni automatiche, eccezioni tipizzate e validazione dei tipi pydantic.
Indirizzi del codice sorgente e del pacchetto:
- Repository SDK: https://github.com/AceDataCloud/SDK
- PyPI: https://pypi.org/project/acedatacloud/
Installazione
- La versione del pacchetto è
2026.4.26.1(CalVer, revisione del 26 aprile 2026). AceDataCloudè il client sincrono,AsyncAceDataCloudè il client asincrono di asyncio.- Questo SDK non dipende da
pydantic, il corpo della risposta restituisce unicamentedict. Questo è diverso daopenai-python, e bisogna prestare attenzione durante la migrazione.
Preparare l’API Token
Fare riferimento a Panoramica SDK - Richiesta API Token per ottenere il token, quindi in shellexport:
api_token, l’SDK leggerà automaticamente la variabile d’ambiente ACEDATACLOUD_API_TOKEN. Se nel tuo ambiente è già presente ACEDATACLOUD_API_KEY (convenzione del repository del progetto), si prega di passare esplicitamente: AceDataCloud(api_token=os.environ["ACEDATACLOUD_API_KEY"]).
Esempio 1: chat.completions (sincrono)
idè l’ID della risposta, che può essere trovato in Storia dell’uso.content ADC_PY_SDK_OKè l’identificativo fisso restituito realmente dal modello.res["usage"]restituisce undict, non un modello pydantic; una chiamata consuma circa 24 token.
Esempio 2: chat.completions (flusso SSE)
Quandostream=True, create restituisce un generatore normale, che restituisce ogni volta un chunk dict analizzato.
- La latenza del primo frame è di 2104 ms, mentre le successive 11 frame hanno impiegato solo 7 ms per arrivare—una volta che il servizio inizia a fluire, il locale può consumare facilmente.
- Il chunk è un normale dict, i valori possono essere estratti in modo sicuro utilizzando
.get()secondo il formato SSE di OpenAI. - Nella produzione reale, si consiglia di inviare SSE al frontend mentre si yield, con una latenza complessiva del primo byte vicina a 2 secondi.
Esempio 3: AsyncAceDataCloud (asincrono)
L’API diAsyncAceDataCloud è completamente simmetrica rispetto alla versione sincrona, solo che tutti i metodi IO restituiscono coroutine. È adatta per servizi FastAPI / aiohttp / asyncio.
- La versione asincrona e quella sincrona seguono lo stesso percorso HTTP, solo che l’implementazione del pool di connessioni è diversa (
httpx.AsyncClient). - Alla chiusura, è necessario esplicitamente
await client.close()per chiudere il pool di connessioni; nei servizi a lungo ciclo di vita, è sufficiente chiuderlo una volta prima della chiusura del processo. - La latenza singola è simile a quella sincrona, ma nei contesti di concorrenza l’asincrono mostra i suoi vantaggi—un event loop può gestire decine o centinaia di richieste in volo contemporaneamente.
Esempio 4: images.generate (NanoBanana)
L’API NanoBanana è un servizio di generazione di immagini sincrono, non passarewait—la chiamata SDK attenderà sempre il ritorno del servizio 200.
image_urlè un indirizzo stabile su CDN, può essere scaricato o incorporato direttamente nella pagina web.- In 18,9 secondi quasi tutto è stato impiegato per l’inferenza del modello; il costo del SDK locale è stato solo di pochi millisecondi.
- Per compiti realmente asincroni come Midjourney, Sora, Veo, Suno, è necessario utilizzare
wait=Trueo eseguire manualmenteTaskHandle.wait()per il polling, vedere SDK polling delle attività e risposta in streaming.
Esempio 5: Gestione degli errori tipizzati
AuthenticationError (401), TokenMismatchError (token non corrisponde al servizio), InsufficientBalanceError (saldo insufficiente), ResourceDisabledError (servizio disabilitato), ValidationError (400), RateLimitError (429), ModerationError (403 revisione dei contenuti), APIError (cattura generale), TimeoutError (timeout), TransportError (livello di rete).
Opzioni di configurazione
Iltimeoutdel SDK Python e ilpoll_interval/max_waitdi TaskHandle sono entrambi in secondi, il SDK TypeScript utilizza millisecondi, prestare particolare attenzione durante la migrazione tra linguaggi. Vedi SDK polling delle attività e risposta in streaming.
Il SDK legge per impostazione predefinita la variabile d’ambienteACEDATACLOUD_API_TOKEN; in questo articolo, per uniformarsi ad altri tutorial come Claude Code VS Code tutorial, l’esempio utilizzaACEDATACLOUD_API_KEY, è necessarioapi_token=os.environ["ACEDATACLOUD_API_KEY"]per l’iniezione esplicita.

