@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 支付钩子。

