Skip to main content
github.com/AceDataCloud/SDK/go は Ace Data Cloud の公式 Go SDK で、api.acedata.cloud 上のチャット完了 / 画像 / 動画 / 音楽 / 検索を client.OpenAI().Chat().Completions().Create(...) スタイルのメソッドチェーンにラップし、SSE ストリーミング(チャネルベース)、自動再試行バックオフ、型付きエラーを備えています。 スタイルは context.Context + 関数オプションに整合しており、任意の Go バックエンドサービスや CLI に組み込むのに適しています。 ソースコードとドキュメント:

インストール

クリーンな Go モジュールのバージョンチェック出力:
結果の説明:
  • 現在、semver タグは付けられておらず、go get で取得されるのはコミットの擬似バージョン v0.0.0-<timestamp>-<sha> です。このバージョンは go.sum にロックされ、チームメンバーが同じコードを取得すると完全に一致する依存関係を得ることができます。
  • Go SDK は現在、chat.completions(同期 + ストリーミング)を主な安定パスとしており、マルチメディアリソース(images / video / audio)と TaskHandle のポーリングはアルファ段階にあります。これらの機能が必要なシナリオでは、TypeScript SDK または Python SDK を優先的に選択してください。

API トークンの準備

SDK 概要 - API トークンの取得 を参考にトークンを取得し、シェルで export します:
クライアントを構築する際に WithAPIToken(...) オプションを通じて明示的に注入します。Go SDK は環境変数を自動的に読み取らないため、ビジネスコードで os.Getenv を使用する必要があり、これにより複数アカウントや自己テストシナリオでの制御が容易になります。

例 1:chat.completions(非ストリーミング)

プログラムの実行結果:
結果の説明:
  • id は OpenAI 互換のレスポンス ID で、コントロールパネルの 使用履歴 で検索できます。
  • content ADC_GO_SDK_OK はモデルの実際の出力で、SDK がレスポンスを改ざんしていないことを証明します。
  • 6.4 秒の大部分は最初の TLS ハンドシェイク + モデル生成にかかり、クライアントインスタンスを再利用した後の遅延は TS / Python と一致します(約 2~3 秒)。
  • レスポンスは統一的に map[string]any であり、型アサーションを自分で行う必要があります。これは Go SDK の現在の設計上の選択であり、ジェネリック構造体を導入しないことで、複数モデルのルーティングが単一のレスポンススキーマに強く依存しないようにしています。

例 2:chat.completions(SSE ストリーミング)

CreateStream は 2 つのチャネルを返します:&lt;-chan map[string]any は逐次解析された SSE チャンクで、&lt;-chan error はストリームが終了した後(正常またはエラー)にのみ読み取れる要素があります。
プログラムの実行結果:
結果の説明:
  • 最初のフレームは 1633 ms で、13 個のチャンクが全て揃うのに 1816 ms かかりました——後の 12 フレームは 183 ms しかかかりませんでした。
  • range chunks は自然にストリームが終了するとループを抜けます;errs チャネルは常に最大で 1 つの要素を yield し、ok 判定を使ってエラーを取得できます。
  • このチャネルスタイルの利点は、select を使って context.Context のタイムアウト/キャンセルと直接組み合わせることができ、追加のラッピングが不要なことです。

例 3:型付きエラー処理

adc.APIError は 401 / 403 / 404 / 422 / 429 / 5xx を同時にカバーし、ビジネスコードは errors.As を使って構造化されたフィールドを取得できます。HTTP ステータスコード、サーバーの code と message はそのまま保持されます。ネットワーク層のエラー(DNS の失敗、接続の拒否など)は context.DeadlineExceeded、net.OpError などの標準 Go エラーを通過し、飲み込まれることはありません。

設定オプション(ファンクショナルオプション)

NewClient は (*Client, error) を返します:トークンが空で かつ 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 エラーハンドリング
  • ✅ 自動再試行 + 指数バックオフ
まだアルファ段階:
  • 🚧 client.Images() / client.Video() / client.Audio() — インターフェースは進化中で、まずは HTTP で直接呼び出すことを推奨
  • 🚧 TaskHandle 非同期ポーリング — まだ Go SDK の表層には公開されていない
  • 🚧 WithPaymentHandler(X402 チェーン上の支払い)— 計画中で、現在 X402 は TypeScript と Python のみサポート

残高を確認する方法

Ace Data Cloud コンソール - アプリケーションリスト を通じて、現在のアカウントの残高を確認できます。 Ace Data Cloud コンソール - 使用履歴 を通じて、すべての使用履歴と請求の詳細を確認できます。

さらに詳しく