acedatacloud 是 Ace Data Cloud 官方 Python SDK,把 api.acedata.cloud 上所有服务封装成类型化的 client.openai.chat.completions.create(...)、client.images.generate(...)、client.search.google(...) 等方法,同时提供同步和异步两套客户端。
底层基于 httpx,支持 SSE 流式、自动重试、类型化异常和 pydantic 类型校验。
源码与包地址:
安装
- 包版本是
2026.4.26.1(CalVer,2026 年 4 月 26 日修订)。 AceDataCloud是同步客户端,AsyncAceDataCloud是 asyncio 异步客户端。- 本 SDK 不依赖
pydantic,响应体统一返回dict。这一点和openai-python不同,迁移时需要注意。
准备 API Token
参考 SDK 总览 - 申请 API Token 取到 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 model;一次调用大约消耗 24 token。
示例 2:chat.completions(SSE 流式)
stream=True 时 create 返回一个普通生成器,每次 yield 一个解析好的 chunk dict。
- 首帧延迟 2104 ms,后续 11 帧只用了 7 ms 就到齐——一旦服务开始流,本地是顺手就能消费。
- chunk 是普通 dict,按 OpenAI SSE 格式逐层
.get()安全取值即可。 - 实际生产里推荐边 yield 边推 SSE 给前端,整体首字延迟接近 2 秒。
示例 3:AsyncAceDataCloud(异步)
AsyncAceDataCloud 的 API 跟同步版完全对称,只是所有 IO 方法返回 coroutine。适合 FastAPI / aiohttp / asyncio 服务。
- 异步版本和同步版本走的是同一条 HTTP 路径,只是连接池实现不同(
httpx.AsyncClient)。 - 退出时显式
await client.close()把连接池关掉;长生命周期服务里只需要在进程退出前关一次。 - 单次延迟跟同步差不多,并发场景下异步才显出优势——一个 event loop 可以同时跑几十上百个 inflight 请求。
示例 4:images.generate(NanoBanana)
NanoBanana API 是同步生成的图像服务,不要传wait——SDK 调用会一直等待服务返回 200。
image_url是 CDN 上的穩定地址,可以直接下載或嵌入網頁。- 18.9 秒裡幾乎都是模型推理;本地 SDK 開銷只有幾毫秒。
- 對於 Midjourney、Sora、Veo、Suno 這種真正異步的任務,需要用
wait=True或手動TaskHandle.wait()輪詢,詳見 SDK 任務輪詢與流式響應。
示例 5:類型化錯誤處理
AuthenticationError (401)、TokenMismatchError (token 與服務不匹配)、InsufficientBalanceError (餘額不足)、ResourceDisabledError (服務被禁用)、ValidationError (400)、RateLimitError (429)、ModerationError (403 內容審核)、APIError (兜底)、TimeoutError(超時)、TransportError(網絡層)。
配置選項
Python SDK 的timeout和 TaskHandle 的poll_interval/max_wait單位都是秒,TypeScript SDK 用的是毫秒,跨語言遷移時要特別注意。詳見 SDK 任務輪詢與流式響應。
SDK 默認讀取ACEDATACLOUD_API_TOKEN環境變量;本文為了和 Claude Code VS Code 教程 等其它教程統一,示例裡用的是ACEDATACLOUD_API_KEY,需要api_token=os.environ["ACEDATACLOUD_API_KEY"]顯式注入。

