Skip to main content
github.com/AceDataCloud/SDK/go es el SDK oficial de Go de Ace Data Cloud, que encapsula las completaciones de chat / imágenes / video / música / búsqueda en un estilo de cadena de métodos client.OpenAI().Chat().Completions().Create(...), con flujo SSE (basado en canal), reintentos automáticos y errores tipificados. Estilo alineado con context.Context + opciones funcionales, adecuado para cualquier servicio backend de Go o CLI. Código fuente y documentación:

Instalación

Salida de verificación de versión de módulo Go limpio:
Explicación del resultado:
  • Actualmente no hay etiqueta semver, go get obtiene la versión de commit pseudo v0.0.0-<timestamp>-<sha>; esta versión se bloqueará en go.sum, los miembros del equipo que obtengan el mismo código pueden obtener dependencias completamente consistentes.
  • El SDK de Go actualmente se centra en chat.completions (sincrónico + en flujo) como ruta principal estable, los recursos multimedia (images / video / audio) y el sondeo de TaskHandle están en fase alfa. Para escenarios que requieren estas capacidades, se recomienda elegir primero el SDK de TypeScript o el SDK de Python.

Preparar el token de API

Consulte Visión general del SDK - Solicitar token de API para obtener el token, luego en la shell export:
Al construir el cliente, inyecte explícitamente a través de la opción WithAPIToken(...); el SDK de Go no leerá automáticamente las variables de entorno, se necesita que el código de negocio use os.Getenv, lo que lo hace más controlable en escenarios de múltiples cuentas o pruebas.

Ejemplo 1: chat.completions (no en flujo)

Resultado de la ejecución del programa:
Explicación del resultado:
  • id es el ID de respuesta compatible con OpenAI, que se puede buscar en el historial de uso en la consola.
  • content ADC_GO_SDK_OK es la salida real del modelo, lo que prueba que el SDK no ha alterado la respuesta.
  • La mayor parte de los 6.4 segundos se debe al primer apretón de manos TLS + generación del modelo, después de reutilizar la instancia del cliente, la latencia es consistente con TS / Python (aproximadamente 2~3 segundos).
  • La respuesta es uniformemente map[string]any, se necesita hacer la afirmación de tipo; este es el compromiso de diseño actual del SDK de Go: no introducir estructuras genéricas para evitar una fuerte dependencia de un único esquema de respuesta en el enrutamiento de múltiples modelos.

Ejemplo 2: chat.completions (flujo SSE)

CreateStream devuelve dos canales: &lt;-chan map[string]any es el fragmento SSE analizado por tramos, &lt;-chan error tendrá elementos legibles solo después de que el flujo haya terminado (normalmente o con error).
Resultado de la ejecución del programa:
Explicación del resultado:
  • El primer marco fue de 1633 ms, y se necesitaron 1816 ms para recibir los 13 fragmentos: los últimos 12 marcos solo tomaron 183 ms.
  • range chunks naturalmente saldrá del bucle al final del flujo; el canal errs siempre producirá como máximo un elemento, y con la verificación ok se puede obtener el error.
  • La ventaja de este estilo de canal es que se puede usar directamente select junto con context.Context para tiempo de espera/cancelación, sin necesidad de encapsulaciones adicionales.

Ejemplo 3: Manejo de errores tipificados

adc.APIError cubre 401 / 403 / 404 / 422 / 429 / 5xx, el código de negocio utiliza errors.As para obtener los campos estructurados. El código de estado HTTP, el code y el message del servidor se mantienen igual. Los errores de capa de red (fallo de DNS, conexión rechazada, etc.) utilizan context.DeadlineExceeded, net.OpError y otros errores estándar de Go, no serán absorbidos.

Opciones de configuración (opciones funcionales)

NewClient devuelve (*Client, error): cuando el token está vacío y no se ha pasado WithPaymentHandler (X402), se producirá un error inmediato, lo que facilita detectar la falta de configuración durante el inicio del servicio.

Avanzado: Reutilizar Client

El SDK de Go utiliza internamente un *http.Client + http.Transport, que incluye un grupo de conexiones y reutilización de HTTP/2. Se recomienda crear solo un *adc.Client durante el ciclo de vida del proceso y compartirlo entre goroutines: todos los métodos son seguros para la concurrencia.

Limitaciones y hoja de ruta

Actualmente estable / recomendado para uso en producción:
  • ✅ client.OpenAI().Chat().Completions().Create sincrónico no en streaming
  • ✅ client.OpenAI().Chat().Completions().CreateStream streaming SSE
  • ✅ errors.As + manejo de errores APIError
  • ✅ Reintentos automáticos + retroceso exponencial
Aún en alpha:
  • 🚧 client.Images() / client.Video() / client.Audio() — la interfaz está en evolución, se recomienda usar HTTP directamente primero
  • 🚧 TaskHandle sondeo asíncrono — aún no expuesto en la capa superior del SDK de Go
  • 🚧 WithPaymentHandler (X402 pago en cadena) — en planificación, actualmente X402 solo es compatible con TypeScript y Python

Cómo ver el saldo restante

A través de Ace Data Cloud Console - Lista de aplicaciones, puede ver el saldo restante de la cuenta actual. A través de Ace Data Cloud Console - Historial de uso puede ver todo el historial de uso y los detalles de facturación.

Conocer más