acedatacloud es el SDK oficial de Python de Ace Data Cloud, que encapsula todos los servicios en api.acedata.cloud en métodos tipificados como client.openai.chat.completions.create(...), client.images.generate(...), client.search.google(...), etc., y proporciona dos conjuntos de clientes, sincrónicos y asíncronos.
Está basado en httpx, soporta flujos SSE, reintentos automáticos, excepciones tipificadas y validación de tipos de pydantic.
Dirección del código fuente y del paquete:
- Repositorio del SDK: https://github.com/AceDataCloud/SDK
- PyPI: https://pypi.org/project/acedatacloud/
Instalación
- La versión del paquete es
2026.4.26.1(CalVer, revisión del 26 de abril de 2026). AceDataCloudes el cliente sincrónico,AsyncAceDataCloudes el cliente asíncrono de asyncio.- Este SDK no depende de
pydantic, el cuerpo de respuesta devuelve undictde manera uniforme. Esto es diferente deopenai-python, y se debe tener en cuenta al migrar.
Preparar el API Token
Consulta Visión general del SDK - Solicitar API Token para obtener el token, luego en la shellexport:
api_token, el SDK leerá automáticamente la variable de entorno ACEDATACLOUD_API_TOKEN. Si ya tienes ACEDATACLOUD_API_KEY almacenado en tu entorno (convenio del repositorio del proyecto), por favor, pásalo explícitamente: AceDataCloud(api_token=os.environ["ACEDATACLOUD_API_KEY"]).
Ejemplo 1: chat.completions (sincrónico)
ides el ID de respuesta, que se puede buscar en Historial de uso.content ADC_PY_SDK_OKes el identificador fijo que devuelve realmente el modelo.res["usage"]devuelve undict, no un modelo de pydantic; una llamada consume aproximadamente 24 tokens.
Ejemplo 2: chat.completions (flujo SSE)
Cuandostream=True, create devuelve un generador normal, cada vez que produce un chunk dict analizado.
- La latencia del primer frame es de 2104 ms, y las siguientes 11 frames solo tomaron 7 ms en total — una vez que el servicio comienza a fluir, el consumo local es inmediato.
- El chunk es un dict normal, se puede acceder a los valores de manera segura usando
.get()según el formato SSE de OpenAI. - En producción, se recomienda enviar SSE al frontend mientras se produce, con una latencia total de inicio cercana a 2 segundos.
Ejemplo 3: AsyncAceDataCloud (asíncrono)
La API deAsyncAceDataCloud es completamente simétrica a la versión sincrónica, solo que todos los métodos de IO devuelven corutinas. Es adecuado para servicios FastAPI / aiohttp / asyncio.
- La versión asíncrona y la versión sincrónica utilizan la misma ruta HTTP, solo que la implementación del pool de conexiones es diferente (
httpx.AsyncClient). - Al salir, se debe
await client.close()explícitamente para cerrar el pool de conexiones; en servicios de larga duración, solo se necesita cerrar una vez antes de que el proceso termine. - La latencia única es similar a la sincrónica, y en escenarios de concurrencia, la asincronía muestra su ventaja: un event loop puede manejar decenas o cientos de solicitudes en vuelo simultáneamente.
Ejemplo 4: images.generate (NanoBanana)
La API de NanoBanana es un servicio de generación de imágenes sincrónico, no paseswait — la llamada del SDK esperará continuamente a que el servicio devuelva 200.
image_urles una dirección estable en CDN, que se puede descargar o incrustar directamente en una página web.- En 18.9 segundos, casi todo fue el razonamiento del modelo; el costo del SDK local fue solo unos pocos milisegundos.
- Para tareas realmente asincrónicas como Midjourney, Sora, Veo, Suno, se necesita usar
wait=Trueo hacer polling manual conTaskHandle.wait(), ver Polling de tareas y respuestas en streaming del SDK.
Ejemplo 5: Manejo de errores tipificados
AuthenticationError (401), TokenMismatchError (token no coincide con el servicio), InsufficientBalanceError (saldo insuficiente), ResourceDisabledError (servicio deshabilitado), ValidationError (400), RateLimitError (429), ModerationError (403 revisión de contenido), APIError (general), TimeoutError (tiempo de espera), TransportError (capa de red).
Opciones de configuración
Eltimeoutdel SDK de Python y elpoll_interval/max_waitde TaskHandle están en segundos, el SDK de TypeScript utiliza milisegundos, se debe tener especial cuidado al migrar entre lenguajes. Ver Polling de tareas y respuestas en streaming del SDK.
El SDK lee por defecto la variable de entornoACEDATACLOUD_API_TOKEN; en este artículo, para unificar con otros tutoriales como Claude Code VS Code Tutorial, se utilizaACEDATACLOUD_API_KEY, que requiereapi_token=os.environ["ACEDATACLOUD_API_KEY"]para inyección explícita.

