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:
- Repositorio del SDK: https://github.com/AceDataCloud/SDK
- Módulo de Go: https://pkg.go.dev/github.com/AceDataCloud/SDK/go
Instalación
- Actualmente no hay etiqueta semver,
go getobtiene la versión de commit pseudov0.0.0-<timestamp>-<sha>; esta versión se bloqueará engo.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 deTaskHandleestá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 shellexport:
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)
ides el ID de respuesta compatible con OpenAI, que se puede buscar en el historial de uso en la consola.content ADC_GO_SDK_OKes 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: <-chan map[string]any es el fragmento SSE analizado por tramos, <-chan error tendrá elementos legibles solo después de que el flujo haya terminado (normalmente o con error).
- 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 chunksnaturalmente saldrá del bucle al final del flujo; el canalerrssiempre producirá como máximo un elemento, y con la verificaciónokse puede obtener el error.- La ventaja de este estilo de canal es que se puede usar directamente
selectjunto concontext.Contextpara 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().Createsincrónico no en streaming - ✅
client.OpenAI().Chat().Completions().CreateStreamstreaming SSE - ✅
errors.As+ manejo de erroresAPIError - ✅ Reintentos automáticos + retroceso exponencial
- 🚧
client.Images()/client.Video()/client.Audio()— la interfaz está en evolución, se recomienda usar HTTP directamente primero - 🚧
TaskHandlesondeo 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

