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。
源码与文档:
安装
1 |
go get github.com/AceDataCloud/SDK/go |
干净 Go 模块的版本检查输出:
1 |
$ go list -m github.com/AceDataCloud/SDK/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:
1 |
export ACEDATACLOUD_API_TOKEN={token} |
构造客户端时通过 WithAPIToken(...) option 显式注入;Go SDK 不会自动读取环境变量,需要业务代码 os.Getenv 一下,这样在多账号或自测场景里更可控。
示例 1:chat.completions(非流式)
1 |
package main |
程序运行结果:
1 |
elapsed_ms 6436 |
结果说明:
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:<-chan map[string]any 是逐帧解析好的 SSE chunk,<-chan error 在流结束(正常或出错)后才会有可读元素。
1 |
package main |
程序运行结果:
1 |
total_elapsed_ms 1816 |
结果说明:
- 首帧 1633 ms,13 个 chunk 全部到齐用了 1816 ms——后 12 帧只用了 183 ms。
range chunks自然会在流结束时退出循环;errschannel 始终最多 yield 一个元素,配ok判断即可拿到错误。- 这套 channel 风格的好处是可以直接
select配合context.Context超时/取消,不需要额外封装。
示例 3:类型化错误处理
1 |
package main |
adc.APIError 同时覆盖 401 / 403 / 404 / 422 / 429 / 5xx,业务代码用 errors.As 取到结构化字段即可。HTTP 状态码、上游 code 和 message 都保留原样。网络层错误(DNS 失败、连接被拒等)走 context.DeadlineExceeded、net.OpError 等标准 Go 错误,不会被吞掉。
配置选项(functional options)
1 |
client, err := adc.NewClient( |
NewClient 返回 (*Client, error):当 token 为空 且 没有传 WithPaymentHandler(X402)时会立即报错,便于在服务启动期就发现配置缺失。
进阶:复用 Client
Go SDK 内部用一个 *http.Client + http.Transport,自带连接池和 HTTP/2 复用。推荐在进程生命周期内只建一个 *adc.Client,然后跨 goroutine 共享——所有方法都是并发安全的。
1 |
// pkg/acelearn/client.go |
局限和路线图
当前稳定 / 推荐生产使用:
- ✅
client.OpenAI().Chat().Completions().Create同步非流式 - ✅
client.OpenAI().Chat().Completions().CreateStreamSSE 流式 - ✅
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 控制台 - 使用历史 即可查看所有使用历史和扣费详情。















































