acedatacloud é o SDK Python oficial da Ace Data Cloud, que encapsula todos os serviços em api.acedata.cloud em métodos tipados como client.openai.chat.completions.create(...), client.images.generate(...), client.search.google(...), etc., e oferece duas versões de cliente: síncrona e assíncrona.
Baseado em httpx, suporta streaming SSE, tentativas automáticas, exceções tipadas e validação de tipos com pydantic.
Endereço do código-fonte e do pacote:
- Repositório do SDK: https://github.com/AceDataCloud/SDK
- PyPI: https://pypi.org/project/acedatacloud/
Instalação
- A versão do pacote é
2026.4.26.1(CalVer, revisado em 26 de abril de 2026). AceDataCloudé o cliente síncrono,AsyncAceDataCloudé o cliente assíncrono do asyncio.- Este SDK não depende de
pydantic, o corpo da resposta retorna uniformemente umdict. Isso é diferente doopenai-python, e deve-se ter cuidado ao migrar.
Preparar o Token da API
Consulte Visão Geral do SDK - Solicitar Token da API para obter o token, e então no shellexport:
api_token, o SDK irá ler automaticamente a variável de ambiente ACEDATACLOUD_API_TOKEN. Se sua variável de ambiente já tiver ACEDATACLOUD_API_KEY (convenção do repositório do projeto), passe explicitamente: AceDataCloud(api_token=os.environ["ACEDATACLOUD_API_KEY"]).
Exemplo 1: chat.completions (síncrono)
idé o ID da resposta, que pode ser encontrado em Histórico de Uso.content ADC_PY_SDK_OKé a identificação fixa retornada pelo modelo.res["usage"]retorna umdict, não um modelo pydantic; uma chamada consome cerca de 24 tokens.
Exemplo 2: chat.completions (streaming SSE)
Quandostream=True, create retorna um gerador comum, que gera um chunk dict analisado a cada vez.
- A latência do primeiro chunk foi de 2104 ms, e os 11 chunks subsequentes levaram apenas 7 ms para serem recebidos — uma vez que o serviço começa a transmitir, o consumo local é imediato.
- O chunk é um dict comum, e os valores podem ser acessados de forma segura usando
.get()em camadas, conforme o formato SSE da OpenAI. - Em produção, recomenda-se transmitir SSE para o frontend enquanto se gera, com uma latência total de cerca de 2 segundos.
Exemplo 3: AsyncAceDataCloud (assíncrono)
A API doAsyncAceDataCloud é completamente simétrica à versão síncrona, apenas todos os métodos de IO retornam corrotinas. É adequado para serviços FastAPI / aiohttp / asyncio.
- A versão assíncrona e a versão síncrona utilizam o mesmo caminho HTTP, apenas a implementação do pool de conexões é diferente (
httpx.AsyncClient). - Ao sair, é necessário
await client.close()para fechar o pool de conexões; em serviços de longa duração, basta fechar uma vez antes da saída do processo. - A latência única é semelhante à versão síncrona, e em cenários de concorrência, a versão assíncrona se destaca — um loop de eventos pode executar dezenas ou centenas de requisições simultaneamente.
Exemplo 4: images.generate (NanoBanana)
A API NanoBanana é um serviço de geração de imagens síncrono, não passewait — a chamada do SDK irá esperar até que o serviço retorne 200.
image_urlé o endereço estável no CDN, que pode ser baixado ou incorporado em uma página da web.- Quase 18,9 segundos foram apenas para a inferência do modelo; o custo do SDK local foi de apenas alguns milissegundos.
- Para tarefas realmente assíncronas como Midjourney, Sora, Veo, Suno, é necessário usar
wait=Trueou fazer polling manual comTaskHandle.wait(), veja Polling de tarefas e resposta em streaming do SDK.
Exemplo 5: Tratamento de erros tipados
AuthenticationError (401), TokenMismatchError (token não corresponde ao serviço), InsufficientBalanceError (saldo insuficiente), ResourceDisabledError (serviço desativado), ValidationError (400), RateLimitError (429), ModerationError (403 revisão de conteúdo), APIError (erro genérico), TimeoutError (timeout), TransportError (erro de rede).
Opções de configuração
Otimeoutdo SDK Python e opoll_interval/max_waitdo TaskHandle têm unidade de segundos, enquanto o SDK TypeScript usa milissegundos, é importante prestar atenção ao migrar entre linguagens. Veja Polling de tarefas e resposta em streaming do SDK.
O SDK lê por padrão a variável de ambienteACEDATACLOUD_API_TOKEN; este artigo usaACEDATACLOUD_API_KEYpara uniformizar com outros tutoriais como Claude Code VS Code Tutorial, sendo necessário injetar explicitamenteapi_token=os.environ["ACEDATACLOUD_API_KEY"].

