Hoy, Amazon SageMaker AI presenta compatibilidad con API compatible con OpenAI para puntos finales de inferencia en tiempo real. Si utiliza OpenAI SDK, LangChain o Strands Agents, ahora puede invocar modelos en SageMaker AI cambiando solo la URL de su punto final. No necesita un cliente personalizado, un contenedor SigV4 ni reescrituras de código.
Descripción general
Con este lanzamiento, los puntos finales de SageMaker AI exponen una ruta /openai/v1 que acepta solicitudes de finalización de chat y devuelve respuestas tal cual desde el contenedor, incluida la transmisión. Los puntos finales de OpenAI están activados para todos los puntos finales y componentes de inferencia mediante el SDK y las API de IA estándar de SageMaker.
SageMaker AI enruta según el nombre del punto final en la URL, por lo que cualquier cliente compatible con OpenAI funciona de inmediato. Ahora puede crear tokens al portador por tiempo limitado para sus puntos finales y usarlos con sus clientes OpenAI.
Para ver un ejemplo práctico que incluye implementación e invocación, consulte el cuaderno adjunto en GitHub.
"Ejecutamos agentes de codificación de IA que utilizan múltiples proveedores de LLM a través de una puerta de enlace de LLM (Bifrost) que utiliza el protocolo de finalización de chat de OpenAI. La función de token de portador nos permite agregar SageMaker como un punto final de inferencia compatible con OpenAI (sin firma SigV4 personalizada), por lo que funciona de forma nativa con nuestra puerta de enlace, Vercel AI SDK y clientes OpenAI estándar". dice Giorgio Piatti (ingeniero de IA/ML – Caffeine.AI)
Casos de uso
Flujos de trabajo agentes en infraestructura propia
Si crea agentes de IA de varios pasos con marcos como Strands Agents o LangChain, ahora puede ejecutar esos flujos de trabajo completamente en sus propios puntos finales de IA de SageMaker. Sus agentes llaman a los modelos utilizando la misma interfaz compatible con OpenAI en la que se crearon, pero la inferencia se ejecuta en instancias de GPU dedicadas en su propia cuenta.
Alojamiento multimodelo con una única interfaz
Si ejecuta varios modelos (por ejemplo, Llama para tareas generales, un Mistral optimizado para trabajos de dominios específicos y un modelo más pequeño para clasificación), puede alojarlos todos en un único punto final de SageMaker AI utilizando componentes de inferencia. Cada modelo tiene su propia asignación de recursos y todos se pueden llamar a través del mismo SDK de OpenAI. No necesita clientes API independientes ni lógica de enrutamiento en el código de la aplicación.
Sirviendo modelos ajustados sin cambios de código
Si ajusta los modelos de código abierto para su caso de uso específico, puede implementarlos en SageMaker AI y llamarlos a través de la misma interfaz compatible con OpenAI que ya usan sus aplicaciones. El único cambio es la URL del punto final. El resto de la aplicación (las llamadas al SDK, la lógica de transmisión, el formato del mensaje) permanece igual.
Descripción general de la solución
En esta publicación, analizamos lo siguiente:
Cómo funciona la autenticación de token de portador con los puntos finales de SageMaker AI. Implementar e invocar un punto final de modelo único. Implementar e invocar componentes de inferencia para implementaciones multimodelo. Integración con el framework Strands Agents.
Requisitos previos
Para seguir este tutorial, debe tener lo siguiente:
Una cuenta de AWS con permisos para crear puntos finales de SageMaker AI. El SDK de Python de SageMaker (pip install sagemaker). El SDK de OpenAI Python (pip install openai). Un modelo almacenado en Amazon Simple Storage Service (Amazon S3). Por ejemplo, Qwen3-4B descargado de Hugging Face. Un rol de ejecución de AWS Identity and Access Management (IAM) para crear los puntos finales, con la política AmazonSageMakerFullAccess. Una función de ejecución de IAM con los permisos sagemaker:CallWithBearerToken y sagemaker:InvokeEndpoint para invocar el punto final.
Autenticación con tokens al portador
Los puntos finales compatibles con SageMaker AI OpenAI utilizan autenticación de token de portador. El SDK de SageMaker Python incluye un generador de tokens que crea tokens de tiempo limitado (válidos por hasta 12 horas) a partir de sus credenciales de AWS existentes. No se requieren secretos ni claves API adicionales.
El token contiene su rol o credenciales de usuario y requiere los permisos de acción sagemaker:CallWithBearerToken y sagemaker:InvokeEndpoint.
Generar una ficha
Utilice el siguiente script de Python para generar un token.
El generador de tokens utiliza cualquier credencial de AWS que esté disponible en su entorno: credenciales de usuario de IAM, un perfil de instancia en Amazon Elastic Compute Cloud (Amazon EC2) o una sesión de AWS IAM Identity Center (SSO).
La función generate_token genera un token de portador por tiempo limitado para autenticarse con las API de SageMaker. De forma predeterminada, los tokens son válidos durante 12 horas, aunque puede anular esto con el parámetro de caducidad utilizando un valor delta de tiempo entre 1 segundo y 12 horas. La función acepta una región, un aws_credentials_provider opcional y la duración de vencimiento. Si no se proporciona ninguna región de AWS, recurre a la variable de entorno AWS_REGION. Si no se proporciona ningún proveedor de credenciales, las resuelve utilizando la cadena de credenciales de AWS predeterminada, que busca múltiples fuentes, incluidas variables de entorno, ~/.aws/credentials, ~/.aws/config, credenciales de contenedor y perfiles de instancia. Para obtener el orden de resolución completa, consulte la documentación de credenciales de Boto3.
Tokens de actualización automática para aplicaciones de larga ejecución
Para aplicaciones que se ejecutan continuamente, puede implementar un patrón de actualización automática usando httpx para que se genere un token nuevo en cada solicitud:
permisos de IAM
El rol de IAM o el usuario que invoca el punto final necesita los siguientes permisos:
Como práctica recomendada, restrinja siempre el recurso a ARN de punto final específicos para InvokeEndpoint en lugar de utilizar un comodín. El token de portador generado a partir de esta función tiene el mismo nivel de acceso, por lo que una política de alcance limitado limita el radio de explosión si un token queda expuesto inadvertidamente. Tenga en cuenta que CallWithBearerToken requiere un comodín ("*") para el campo Recurso. No admite restricciones a nivel de recursos.
Cómo funciona la ficha
El token de portador es una URL prefirmada SigV4 codificada en base64. Cuando llama a generate_token, el SDK de SageMaker AI construye una solicitud al servicio SageMaker AI para la acción CallWithBearerToken, la firma localmente usando sus credenciales de AWS y codifica la URL firmada resultante como una cadena de token portátil. No se realiza ninguna llamada de red durante la generación del token. La firma se realiza íntegramente del lado del cliente. Cuando presenta este token a un punto final de SageMaker AI, el servicio lo decodifica, valida la firma SigV4, verifica que el token no haya caducado y confirma que la identidad de IAM de origen tiene los permisos necesarios. La vida útil efectiva del token es el menor entre el valor de caducidad y la validez restante de las credenciales de AWS utilizadas para firmarlo.
Mejores prácticas de seguridad: el token de portador lleva la misma autorización que las credenciales de AWS subyacentes utilizadas para generarlo. Trate los tokens con el mismo cuidado que las credenciales. Alcance la función de IAM utilizada para la generación de tokens con los permisos mínimos requeridos, específicamente sagemaker:InvokeEndpoint y sagemaker:CallWithBearerToken solo en los ARN de punto final a los que la persona que llama necesita acceder. No genere tokens a partir de roles con permisos amplios, como los otorgados por las políticas administradas de AdministratorAccess o SageMakerFullAccess.
No almacene tokens en el disco, en variables de entorno, en archivos de configuración, en bases de datos o en cachés distribuidas. No registre tokens y transmítalos únicamente a través de protocolos de comunicación cifrados como HTTPS. La generación de tokens es una operación local sin sobrecarga de red, por lo que la práctica recomendada es generar un token nuevo en el punto de uso o utilizar el patrón httpx.Auth de actualización automática que se muestra en el ejemplo anterior. Esto evita el riesgo de fuga de tokens y le ayuda a utilizar un token con la máxima validez restante. Como práctica recomendada, establezca la caducidad del token en la duración más corta que requiera su carga de trabajo.
Implementar un punto final de un solo modelo
Un punto final de modelo único aloja un modelo y atiende solicitudes directamente. El siguiente ejemplo implementa Qwen3-4B utilizando el contenedor de aprendizaje profundo SageMaker AI vLLM en una instancia ml.g6.2xlarge.
Nota: Los puntos finales de SageMaker AI incurren en cargos mientras están en servicio, independientemente del tráfico. Para obtener más detalles, consulte la página de precios de Amazon SageMaker AI.
El terminal pasa al estado InService en unos minutos. Cuando esté listo, sirve tanto la ruta estándar de SageMaker AI /invocaciones como la ruta compatible con OpenAI en /openai/v1/chat/completions.
Invocar un punto final de modelo único
Con el punto final en servicio, invoquelo utilizando el SDK de OpenAI Python. La URL base sigue este formato:
El campo del modelo se pasa al contenedor. Debido a que SageMaker AI enruta las solicitudes según el nombre del punto final en la URL, puede mantener este campo vacío o configurarlo para que coincida con el nombre del modelo que espera su contenedor.
Implementar un punto final de componente de inferencia
Con los componentes de inferencia, puede alojar varios modelos en un único punto final, cada uno con asignaciones de recursos informáticos dedicados. Con los componentes de inferencia, el modelo está asociado con el componente en lugar de con la configuración del punto final:
Puede crear componentes de inferencia adicionales en el mismo punto final para alojar varios modelos con escalamiento y asignación de recursos independientes.
Invocar componentes de inferencia
Para invocar un componente de inferencia específico, incluya su nombre en la ruta URL:
El siguiente ejemplo muestra dos componentes de inferencia en un punto final compartido, cada uno de los cuales está dirigido a un cliente OpenAI independiente que comparte un grupo de conexiones:
El httpx.Client compartido permite que ambas instancias de cliente OpenAI reutilicen las mismas sesiones TLS y el mismo grupo de conexiones.
Integrarse con los agentes de Strands
Strands Agents es un SDK de código abierto para crear agentes de IA. Debido a que Strands Agents admite proveedores de modelos compatibles con OpenAI, ahora puede ejecutar flujos de trabajo de múltiples agentes completamente en su propia infraestructura de IA de SageMaker. Esto le brinda la flexibilidad de las aplicaciones agentes con el control de puntos finales dedicados. Sus datos nunca salen de su cuenta y usted elige exactamente qué versión de modelo ejecutan sus agentes.
Limpiar
Para evitar cargos continuos, elimine sus puntos finales y recursos asociados cuando haya terminado. Los puntos finales de SageMaker AI incurren en costos mientras están en servicio, independientemente de si reciben tráfico.
Conclusión
Con compatibilidad con API compatible con OpenAI, Amazon SageMaker AI elimina la barrera de integración entre la ubicación actual de la mayoría de las aplicaciones de IA y la infraestructura que necesitan para escalar. Puede conservar su código existente, utilizar cualquier marco compatible con OpenAI y ejecutar inferencia en puntos finales dedicados con los controles de GPU, escalado y residencia de datos que necesita. Para comenzar, implemente un modelo en un punto final de SageMaker AI en tiempo real utilizando un contenedor compatible, instale el SDK de Python de SageMaker y apunte su cliente OpenAI a la URL del punto final. Para obtener más información, consulte Uso de SageMaker AI con API compatibles con OpenAI en la Guía para desarrolladores de Amazon SageMaker AI o abra la consola de Amazon SageMaker AI para crear su primer punto de enlace.