Skip to main content
github.com/AceDataCloud/SDK/go 是 Ace Data Cloud 官方 Go SDK,把 api.acedata.cloud 上的 chat completions / images / video / music / search 封装成 client.OpenAI().Chat().Completions().Create(...) 风格的方法链,自带 SSE 流式(基于 channel)、自动重试退避和类型化错误。 风格上对齐 context.Context + functional options,适合放进任何 Go 后端服务或 CLI。 源码与文档:

安装

干净 Go 模块的版本检查输出:
结果说明:
  • 当前没有打 semver 标签,go get 拉到的是 commit 伪版本 v0.0.0-<timestamp>-<sha>;这个版本会被锁进 go.sum,团队成员拉同一份代码可以拿到完全一致的依赖。
  • Go SDK 目前以 chat.completions(同步 + 流式)为主路径稳定,多媒体资源(images / video / audio)和 TaskHandle 轮询处于 alpha 阶段。需要这些能力的场景请优先选 TypeScript SDK 或 Python SDK。

准备 API Token

参考 SDK 总览 - 申请 API Token 取到 token,然后在 shell 里 export:
构造客户端时通过 WithAPIToken(...) option 显式注入;Go SDK 不会自动读取环境变量,需要业务代码 os.Getenv 一下,这样在多账号或自测场景里更可控。

示例 1:chat.completions(非流式)

程序运行结果:
结果说明:
  • id 是 OpenAI 兼容响应 ID,可以在控制台 使用历史 里搜到。
  • content ADC_GO_SDK_OK 是模型真实输出,证明 SDK 没有篡改响应。
  • 6.4 秒里大部分是首次 TLS 握手 + 模型生成,复用 client 实例之后延迟和 TS / Python 一致(约 2~3 秒)。
  • 响应统一是 map[string]any,需要自己做类型断言;这是 Go SDK 当前的设计取舍——不引入泛型 struct 是为了让多模型路由不强依赖单一响应 schema。

示例 2:chat.completions(SSE 流式)

CreateStream 返回两个 channel:&lt;-chan map[string]any 是逐帧解析好的 SSE chunk,&lt;-chan error 在流结束(正常或出错)后才会有可读元素。
程序运行结果:
结果说明:
  • 首帧 1633 ms,13 个 chunk 全部到齐用了 1816 ms——后 12 帧只用了 183 ms。
  • range chunks 自然会在流结束时退出循环;errs channel 始终最多 yield 一个元素,配 ok 判断即可拿到错误。
  • 这套 channel 风格的好处是可以直接 select 配合 context.Context 超时/取消,不需要额外封装。

示例 3:类型化错误处理

adc.APIError 同时覆盖 401 / 403 / 404 / 422 / 429 / 5xx,业务代码用 errors.As 取到结构化字段即可。HTTP 状态码、服务端 code 和 message 都保留原样。网络层错误(DNS 失败、连接被拒等)走 context.DeadlineExceeded、net.OpError 等标准 Go 错误,不会被吞掉。

配置选项(functional options)

NewClient 返回 (*Client, error):当 token 为空 且 没有传 WithPaymentHandler(X402)时会立即报错,便于在服务启动期就发现配置缺失。

进阶:复用 Client

Go SDK 内部用一个 *http.Client + http.Transport,自带连接池和 HTTP/2 复用。推荐在进程生命周期内只建一个 *adc.Client,然后跨 goroutine 共享——所有方法都是并发安全的。

局限和路线图

当前稳定 / 推荐生产使用:
  • ✅ client.OpenAI().Chat().Completions().Create 同步非流式
  • ✅ client.OpenAI().Chat().Completions().CreateStream SSE 流式
  • ✅ errors.As + APIError 错误处理
  • ✅ 自动重试 + 指数退避
仍处于 alpha:
  • 🚧 client.Images() / client.Video() / client.Audio() — 接口在演进中,建议先用 HTTP 直接调
  • 🚧 TaskHandle 异步轮询 — 还没暴露到 Go SDK 表层
  • 🚧 WithPaymentHandler(X402 链上付费)— 计划中,目前 X402 只支持 TypeScript 和 Python

如何查看剩余额度

通过 Ace Data Cloud 控制台 - 应用列表,即可查看当前账户的剩余额度。 通过 Ace Data Cloud 控制台 - 使用历史 即可查看所有使用历史和扣费详情。

了解更多