La transmisión bidireccional para interacciones de agentes en tiempo real ahora está disponible en Amazon Bedrock AgentCore Runtime

Crear conversaciones de voz naturales con agentes de IA requiere una infraestructura compleja y mucho código de los equipos de ingeniería. Las interacciones de los agentes basadas en texto siguen un patrón por turnos: un usuario envía una solicitud completa, espera a que el agente la procese y recibe una respuesta completa antes de continuar. La transmisión bidireccional elimina esta restricción al establecer una conexión persistente que transporta datos en ambas direcciones simultáneamente.

Amazon Bedrock AgentCore Runtime admite transmisión bidireccional para comunicación bidireccional en tiempo real entre usuarios y agentes de IA. Con esta capacidad, los agentes pueden escuchar simultáneamente las entradas del usuario mientras generan respuestas, creando un flujo de conversación más natural. Esto es particularmente adecuado para interacciones multimodales, como conversaciones de agentes de voz y visión. El agente puede comenzar a responder mientras sigue recibiendo información del usuario, manejar las interrupciones a mitad de la conversación y ajustar sus respuestas en función de la retroalimentación en tiempo real.

Un agente de chat de voz bidireccional puede llevar a cabo conversaciones habladas con la fluidez del diálogo humano para que los usuarios puedan interrumpir, aclarar o cambiar temas de forma natural. Estos agentes procesan la entrada y salida de audio en streaming simultáneamente mientras mantienen el estado conversacional. Construir esta infraestructura requiere administrar conexiones persistentes de baja latencia, manejar transmisiones de audio simultáneas, preservar el contexto en los intercambios y escalar múltiples conversaciones. Implementar estas capacidades desde cero exige meses de esfuerzo de ingeniería y experiencia especializada en sistemas en tiempo real. Amazon Bedrock AgentCore Runtime aborda estos desafíos proporcionando un entorno de alojamiento seguro, sin servidor y diseñado específicamente para implementar y ejecutar agentes de IA, sin necesidad de que los desarrolladores creen y mantengan una infraestructura de transmisión compleja por sí mismos.

En esta publicación, aprenderá sobre la transmisión bidireccional en AgentCore Runtime y los requisitos previos para crear una implementación de WebSocket. También aprenderá a utilizar Strands Agents para implementar una solución de transmisión bidireccional para agentes de voz.

Transmisión bidireccional AgentCore Runtime

La transmisión bidireccional utiliza el protocolo WebSocket. WebSocket proporciona comunicación full-duplex a través de una única conexión TCP, estableciendo un canal persistente donde los datos fluyen continuamente en ambas direcciones. Este protocolo tiene un amplio soporte de cliente en navegadores, aplicaciones móviles y entornos de servidor, lo que lo hace accesible para diversos escenarios de implementación.

Cuando se establece una conexión, el agente puede recibir la entrada del usuario como una secuencia y al mismo tiempo enviar fragmentos de respuesta al usuario. AgentCore Runtime administra la infraestructura subyacente que maneja la conexión, el orden de los mensajes y mantiene el estado de la conversación en todo el intercambio bidireccional. Esto alivia la necesidad de que los desarrolladores creen una infraestructura de transmisión personalizada o administren las complejidades de los flujos de datos simultáneos. Las conversaciones de voz se diferencian de las interacciones basadas en texto en su expectativa de flujo natural. Cuando hablan con un agente de voz, los usuarios esperan la misma dinámica conversacional que experimentan con los humanos: la capacidad de interrumpir cuando necesitan corregirse, intercalar una aclaración a mitad de la respuesta o redirigir la conversación sin pausas incómodas. Con la transmisión bidireccional, es posible que los agentes de voz procesen el audio entrante mientras generan respuestas, detectan interrupciones y ajustan el comportamiento en tiempo real. El agente mantiene el contexto conversacional a lo largo de estas interacciones, preservando el hilo del diálogo incluso cuando la conversación cambia de dirección. Esta capacidad también ayuda a los agentes de voz de sistemas por turnos a convertirse en un interlocutor conversacional receptivo.

Más allá de las conversaciones de voz, la transmisión bidireccional tiene varios patrones de interacción. Las sesiones de depuración interactivas permiten a los desarrolladores guiar a los agentes a través de la resolución de problemas en tiempo real, brindando retroalimentación a medida que el agente explora las soluciones. Los agentes colaborativos pueden trabajar junto a los usuarios en tareas compartidas y recibir información continua a medida que avanza el trabajo en lugar de esperar instrucciones completas. Los agentes multimodales pueden procesar videos en tiempo real o datos de sensores y, al mismo tiempo, proporcionar análisis y recomendaciones. Las operaciones asíncronas del agente de larga duración pueden procesar tareas durante minutos u horas mientras transmiten resultados incrementales a los clientes.

Implementación de WebSocket

Para crear una implementación de WebSocket en AgentCore Runtime, debe seguir algunos patrones. En primer lugar, sus contenedores deben implementar puntos finales WebSocket en el puerto 8080 en la ruta /ws, lo que se alinea con las prácticas estándar del servidor WebSocket. Este punto final de WebSocket permitirá que un contenedor de agente único sirva tanto a la API tradicional InvokeAgentRuntime como a la nueva API InvokeAgentRuntimeWithWebsocketStream. Además, los clientes deben proporcionar un punto final /ping para realizar comprobaciones de estado.

La transmisión bidireccional mediante WebSockets en AgentCore Runtime admite aplicaciones que utilizan una biblioteca de idiomas WebSocket. El cliente debe conectarse al punto final del servicio con una conexión de protocolo WebSocket:

wss://bedrock-agentcore..amazonaws.com/runtimes//ws

También debe utilizar uno de los métodos de autenticación admitidos (encabezados SigV4, URL prefirmada de SigV4 u OAuth 2.0) y asegurarse de que la aplicación del agente implemente el contrato de servicio WebSocket como se especifica en el contrato del protocolo HTTP.

Agente bidireccional Strands: desarrollo simplificado de agentes de voz

Amazon Nova Sonic unifica la comprensión y generación de voz en un único modelo, ofreciendo IA conversacional similar a la humana con baja latencia, precisión líder y un sólido rendimiento de precio. Su arquitectura integrada proporciona generación de voz expresiva y transcripción en tiempo real en un modelo, adaptando dinámicamente las respuestas basadas en la prosodia, el ritmo y el timbre del habla de entrada.

Con la transmisión bidireccional ahora también disponible en AgentCore Runtime, tiene varias formas de mostrar cómo alojar un agente de voz: una puede ser la implementación directa donde necesita administrar conexiones WebSocket, analizar eventos de protocolo, manejar fragmentos de audio y orquestar tareas asíncronas; otra es la implementación del agente bidireccional que abstrae esta complejidad e implementa estos pasos por sí sola.

Implementación de ejemplo

En esta publicación, debe consultar el código bidireccional de Amazon Bedrock AgentCore, que implementa la comunicación bidireccional con Amazon Bedrock AgentCore. El repositorio tiene dos implementaciones: una que utiliza la implementación nativa de Amazon Nova Sonic Python implementada directamente en AgentCore Runtime y una implementación de marco de alto nivel que utiliza el agente bidireccional Strands para conversaciones de audio simplificadas en tiempo real.

El siguiente diagrama muestra el servidor WebSocket nativo de Amazon Nova Sonic Python directamente a AgentCore. Proporciona control total sobre el protocolo Nova Sonic con manejo directo de eventos para una visibilidad completa de la gestión de sesiones, la transmisión de audio y la generación de respuestas.

El marco de agente bidireccional de Strands para conversaciones de audio en tiempo real con Amazon Nova Sonic proporciona una abstracción de alto nivel que simplifica la transmisión bidireccional, la gestión automática de sesiones y la integración de herramientas. El siguiente fragmento de código es un ejemplo de esta simplificación.

de strands.experimental.bidi.agent importar BidiAgent de strands.experimental.bidi.models.nova_sonic importar BidiNovaSonicModel de strands_tools importar calculadora @app.websocket(“/ws”) async def websocket_endpoint(websocket: WebSocket, model_name: str): # Definir un modelo Nova Sonic BidiModel = BidiNovaSonicModel( region=”us-east-1″, model_id=”amazon.nova-sonic-v1:0″, proveedor_config={ “audio”: { “input_sample_rate”: 16000, “output_sample_rate”: 24000, “voice”: “matthew”, } } ) # Cree un agente de Strands con herramientas y agente de aviso del sistema = BidiAgent (modelo = modelo, herramientas =[calculator]system_prompt=”Eres un asistente útil con acceso a una herramienta de calculadora.”, ) # Iniciar la conversación en streaming en espera de agent.run(inputs=[receive_and_convert]salidas =[websocket.send_json])

Esta implementación demuestra la simplicidad de Strands: crear una instancia de un modelo, crear un agente con herramientas y un indicador del sistema, y ​​ejecutarlo con flujos de entrada/salida. El marco maneja la complejidad del protocolo internamente.

La siguiente es la sección de declaración del agente en el código:

agente = BidiAgent( modelo=modelo, herramientas=[calculator, weather_api, database_query]system_prompt=”Eres un asistente útil…” )

Las herramientas se pasan directamente al constructor del agente y Strands maneja la orquestación de llamadas a funciones automáticamente. En resumen, una implementación nativa de WebSocket de la misma funcionalidad requiere aproximadamente 150 líneas de código, mientras que la implementación de Strands lo reduce a aproximadamente 20 líneas centradas en la lógica empresarial. Los desarrolladores pueden centrarse en definir el comportamiento de los agentes, integrar herramientas y crear indicaciones del sistema en lugar de administrar conexiones WebSocket, analizar eventos, manejar fragmentos de audio u orquestar tareas asíncronas. Esto hace que la transmisión bidireccional sea accesible para desarrolladores sin experiencia especializada en sistemas en tiempo real, manteniendo al mismo tiempo el acceso completo a las capacidades de conversación de audio de Nova Sonic. Actualmente, la función bidireccional Strands solo es compatible con el SDK de Python. Si busca flexibilidad en la implementación de su agente de voz, la implementación nativa de Amazon Nova Sonic puede ayudarle. Además, esto puede ser importante en los casos en los que hay múltiples patrones diferentes de comunicación entre el agente y el modelo. Con la implementación de Amazon Nova Sonic podrás controlar cada paso del proceso con total control. El enfoque del marco puede proporcionar un mejor control de las dependencias, porque lo realiza el SDK y proporciona coherencia entre sistemas. La misma estructura de código de agente bidireccional de Strands funciona con Nova Sonic, OpenAI Realtime API y los desarrolladores de Google Gemini Live simplemente intercambian la implementación del modelo mientras mantienen el resto de su código sin cambios.

Conclusión

La capacidad de transmisión bidireccional de Amazon Bedrock AgentCore Runtime transforma la forma en que los desarrolladores pueden crear agentes de IA conversacionales. Al proporcionar una infraestructura de comunicación en tiempo real basada en WebSocket, AgentCore elimina meses de esfuerzo de ingeniería necesarios para implementar sistemas de transmisión desde cero. El tiempo de ejecución del marco permite a los desarrolladores implementar múltiples tipos de agentes de voz, desde implementaciones de protocolos nativos que utilizan Amazon Nova Sonic hasta marcos de trabajo de alto nivel como el agente bidireccional Strands, dentro del mismo entorno seguro y sin servidor.

Sobre los autores

Lana Zhang es arquitecta senior especializada en soluciones para IA generativa en AWS dentro de la Organización Mundial de Especialistas. Se especializa en IA/ML, con especial atención en casos de uso como asistentes de voz de IA y comprensión multimodal. Trabaja en estrecha colaboración con clientes de diversas industrias, incluidos los medios y el entretenimiento, los juegos, los deportes, la publicidad, los servicios financieros y la atención médica, para ayudarlos a transformar sus soluciones comerciales a través de la IA.

Phelipe Fabres es arquitecto senior de soluciones especializado en IA generativa en AWS para empresas emergentes. Se especializa en AI/ML con un enfoque en sistemas Agentic y el proceso completo de entrenamiento/inferencia. Tiene más de 10 años trabajando en el desarrollo de software, desde monolitos hasta arquitecturas basadas en eventos, con un doctorado. en Teoría de Grafos.

Evandro Franco es un científico de datos senior que trabaja en Amazon Web Services. Es parte del equipo Global GTM que ayuda a los clientes de AWS a superar los desafíos comerciales relacionados con AI/ML en AWS, principalmente en Amazon Bedrock AgentCore y Strands Agents. Tiene más de 18 años de experiencia trabajando con tecnología, desde desarrollo de software, infraestructura, serverless, hasta aprendizaje automático. En su tiempo libre, a Evandro le gusta jugar con su hijo, principalmente construir divertidos ladrillos Lego.