@acedatacloud/sdk 是 Ace Data Cloud 官方 TypeScript / JavaScript SDK,把 api.acedata.cloud 上所有服务封装成类型化的 client.openai.chat.completions.create(...)、client.images.generate(...)、client.search.google(...) 等方法,自带 SSE 流式、重试退避、类型化异常。
可以在 Node.js、Deno、Bun 和现代浏览器(带 bundler)中使用。
源码与包地址:
安装
- 包版本是
2026.504.2(CalVer,2026 年第 504 个 ISO 周的第 2 个修订)。 AceDataCloud是构造客户端用的主 class,从默认导出可访问。
准备 API Token
参考 SDK 总览 - 申请 API Token 取到 token,然后在 shell 里export:
apiToken,SDK 会自动读取 ACEDATACLOUD_API_TOKEN 环境变量。如果你的环境里已经存了 ACEDATACLOUD_API_KEY(项目仓库约定),可以显式传入:new AceDataCloud({ apiToken: process.env.ACEDATACLOUD_API_KEY })。
示例 1:chat.completions(非流式)
id chatcmpl-DldCcLvkTFaioST8e6SjOl0wJScQA是 OpenAI 兼容响应 ID,可以在控制台 使用历史 里搜到对应记录。content ADC_TS_SDK_OK是模型真实返回的固定标识,证明响应没有被 SDK 篡改。- 一次 chat completion 大约消耗 22 token,按 gpt-4o-mini 单价计费。
- SDK 将响应声明为
Record<string, unknown>,运行时就是 JSON 对象,.id/.choices[0].message.content这种点访问在.mjs、Node REPL、Bun 下都能跑;严格 TypeScript 项目下可能需要(res as any).id或在 tsconfig 关闭noImplicitAny。
示例 2:chat.completions(SSE 流式)
将stream: true 打开后,create 返回一个异步迭代器,每一帧都是一个 ChatCompletionChunk。
- 首帧延迟 2481 ms 是模型生成第一个 token 的时间;后续 12 帧在 135 ms 内全部到达。
- 13 帧合起来是
"1 2 3 4 5",每个 token 单独成帧 + 最后一帧带finish_reason。 - 流式没有比非流式更省 token,但首字延迟显著降低,适合做实时 UI。
示例 3:images.generate(NanoBanana)
client.images.generate({ provider: 'nano-banana', ... }) 直接同步返回,不需要传 wait 参数——NanoBanana API 本身就是同步生成。
image_url是 CDN 上的稳定地址,可以直接<img src />或下载。- 16.6 秒里大部分时间是模型推理,本地 SDK 开销可忽略。
trace_id是平台分配的请求 ID,如果出问题贴这个 ID 给客服可以最快定位。- 对于异步类服务(Midjourney、Sora、Veo 等)需要 TaskHandle 轮询,详见 SDK 任务轮询与流式响应。
示例 4:类型化错误处理
SDK 会按 HTTP 状态把错误抛成具体的子类(AuthenticationError / BadRequestError / RateLimitError / InternalServerError / APIConnectionError 等),可以用 instanceof 精确分支。
- 401 自動映射為
AuthenticationError,業務代碼可以用instanceof精確分支。 code: invalid_token來自 PlatformGateway,便於和後端日誌對照。- 同理 429 →
RateLimitError、400 →BadRequestError、5xx →InternalServerError。
示例 5:多模型路由
同一個客戶端可以在多個服務之間隨意切換,模型名一致就行。- 一份代碼、一份 token,覆蓋 OpenAI / Google / DeepSeek / xAI 四類模型服務。
gemini-2.5-flash這次沒返回ADC_OK,是模型自身的輸出風格差異——SDK 沒有靜默吞掉任何東西,把模型原話忠實透傳給業務。- 價格按各自的真實 token 單價計費,路徑只過一次 PlatformGateway。
示例 6:Google 搜索
- 一次請求拿到 10 條 organic 結果,字段名
organic(不是organic_results)。 - 搜索通過 Serp 服務 走的,按次計費。
- 同一個客戶端實例既能 chat 又能搜,token 一份就夠。
配置選項
瀏覽器使用
@acedatacloud/sdk 是 ESM + ISO(同構)包,可以在帶 bundler 的現代瀏覽器裡直接 import。注意:不要在前端代碼裡把 API Token 硬編碼。前端推薦:
- 用 X402
paymentHandler—— 用戶錢包按次簽 USDC,無需 token。 - 或在自己服務端用 SDK,瀏覽器只調你自己的後端。
進階:任務輪詢和流式響應
- 任務類服務(Midjourney、Sora、Veo、Suno):用
TaskHandle輪詢,單位、超時和重試細節見 SDK 任務輪詢與流式響應。 - 流式 chat:本頁示例 2 已演示;流式 audio / video 同樣支持。
進階:X402 支付鉤子
如果不想申請 API Token、想按次鏈上付費,可以用paymentHandler:
createX402PaymentHandler在 TypeScript 端接受{ network, evmProvider, evmAddress, preferScheme? }(EVM 鏈)或{ network: 'solana', solanaWallet }(Solana)。Node 服務端沒有window.ethereum時,請用viem的createWalletClient(基於私鑰)封裝一個 EIP-1193 兼容的 provider 再傳進來;詳細做法和真實鏈上結果見 SDK + X402 支付鉤子。

