Skip to main content
acedatacloud 是 Ace Data Cloud 官方 Python SDK,把 api.acedata.cloud 上所有服务封装成类型化的 client.openai.chat.completions.create(...)、client.images.generate(...)、client.search.google(...) 等方法,同时提供同步和异步两套客户端。 底层基于 httpx,支持 SSE 流式、自动重试、类型化异常和 pydantic 类型校验。 源码与包地址:

安装

如果需要 X402 链上付费(无 API Token 路径),再装一个:
干净 venv 的版本检查输出:
结果说明:
  • 包版本是 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:類型化錯誤處理

異常層級跟 TypeScript 一致: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"] 顯式注入。

進階:X402 支付鉤子

完整流程和真實鏈上結果見 SDK + X402 支付鉤子。

如何查看剩餘額度

透過 Ace Data Cloud 控制台 - 應用列表,即可查看當前賬戶的剩餘額度。 透過 Ace Data Cloud 控制台 - 使用歷史 即可查看所有使用歷史和扣費詳情。

了解更多