Skip to main content
github.com/AceDataCloud/SDK/go é o SDK Go oficial da Ace Data Cloud, que encapsula as chat completions / images / video / music / search do api.acedata.cloud em uma cadeia de métodos no estilo client.OpenAI().Chat().Completions().Create(...), com suporte a fluxo SSE (baseado em channel), reintentos automáticos com backoff e erros tipados. O estilo está alinhado com context.Context + opções funcionais, adequado para qualquer serviço backend Go ou CLI. Código-fonte e documentação:

Instalação

Saída da verificação de versão do módulo Go limpo:
Explicação dos resultados:
  • Atualmente, não há etiqueta semver, go get obtém a versão do commit v0.0.0-<timestamp>-<sha>; essa versão será bloqueada em go.sum, permitindo que os membros da equipe que puxam o mesmo código obtenham dependências completamente consistentes.
  • O SDK Go atualmente tem como caminho principal estável chat.completions (síncrono + em fluxo), recursos multimídia (images / video / audio) e TaskHandle polling estão em fase alpha. Para cenários que precisam dessas capacidades, escolha prioritariamente o SDK TypeScript ou o SDK Python.

Preparar Token da API

Consulte Visão Geral do SDK - Solicitar Token da API para obter o token e, em seguida, no shell, export:
Ao construir o cliente, injete explicitamente através da opção WithAPIToken(...); o SDK Go não lerá automaticamente as variáveis de ambiente, sendo necessário que o código de negócios utilize os.Getenv, tornando-o mais controlável em cenários de múltiplas contas ou testes.

Exemplo 1: chat.completions (não em fluxo)

Resultado da execução do programa:
Explicação dos resultados:
  • id é o ID de resposta compatível com OpenAI, que pode ser encontrado no console Histórico de Uso.
  • content ADC_GO_SDK_OK é a saída real do modelo, provando que o SDK não alterou a resposta.
  • A maior parte dos 6,4 segundos é devido à primeira negociação TLS + geração do modelo, após reutilizar a instância do cliente, a latência é consistente com TS / Python (cerca de 2 a 3 segundos).
  • A resposta é uniformemente um map[string]any, sendo necessário fazer a asserção de tipo; essa é a escolha de design atual do SDK Go — não introduzir structs genéricas para evitar uma forte dependência de um único esquema de resposta.

Exemplo 2: chat.completions (fluxo SSE)

CreateStream retorna dois canais: &lt;-chan map[string]any é o chunk SSE analisado quadro a quadro, &lt;-chan error terá elementos legíveis apenas após o fim do fluxo (normal ou com erro).
Resultado da execução do programa:
Explicação dos resultados:
  • O primeiro quadro levou 1633 ms, e todos os 13 chunks foram recebidos em 1816 ms — os 12 quadros seguintes levaram apenas 183 ms.
  • range chunks naturalmente sairá do loop ao final do fluxo; o canal errs sempre renderiza no máximo um elemento, e a verificação com ok é suficiente para capturar o erro.
  • A vantagem desse estilo de canal é que pode ser diretamente utilizado com select em conjunto com context.Context para timeout/cancelamento, sem necessidade de encapsulamento adicional.

Exemplo 3: Tratamento de Erros Tipados

adc.APIError cobre 401 / 403 / 404 / 422 / 429 / 5xx, o código de negócios usa errors.As para obter os campos estruturados. O código de status HTTP, o code e a message do servidor são mantidos inalterados. Erros de camada de rede (falha de DNS, conexão recusada, etc.) seguem context.DeadlineExceeded, net.OpError e outros erros padrão do Go, não serão ignorados.

Opções de configuração (opções funcionais)

NewClient retorna (*Client, error): quando o token está vazio e não foi passado WithPaymentHandler (X402), um erro será gerado imediatamente, facilitando a identificação de configurações ausentes durante o início do serviço.

Avançado: Reutilizar Client

O SDK Go usa internamente um *http.Client + http.Transport, com pool de conexões e reutilização de HTTP/2. Recomendado criar apenas um *adc.Client durante o ciclo de vida do processo e compartilhá-lo entre goroutines — todos os métodos são seguros para concorrência.

Limitações e roteiro

Atualmente estável / recomendado para uso em produção:
  • ✅ client.OpenAI().Chat().Completions().Create síncrono não streaming
  • ✅ client.OpenAI().Chat().Completions().CreateStream streaming SSE
  • ✅ errors.As + tratamento de erro APIError
  • ✅ Tentativas automáticas + retrocesso exponencial
Ainda em alpha:
  • 🚧 client.Images() / client.Video() / client.Audio() — interfaces em evolução, recomenda-se usar HTTP diretamente
  • 🚧 TaskHandle polling assíncrono — ainda não exposto na camada superior do SDK Go
  • 🚧 WithPaymentHandler (X402 pagamento em blockchain) — em planejamento, atualmente X402 suporta apenas TypeScript e Python

Como verificar o saldo restante

Através do Painel de Controle da Ace Data Cloud - Lista de Aplicativos, você pode verificar o saldo restante da conta atual. Através do Painel de Controle da Ace Data Cloud - Histórico de Uso você pode verificar todo o histórico de uso e detalhes de cobrança.

Saiba mais