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 控制台 - 使用歷史 即可查看所有使用歷史和扣費詳情。

了解更多