Athrun Data Intelligence


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 agraciado envía una solicitud completa, demora a que el agente la procese y recibe una respuesta completa antaño de continuar. La transmisión bidireccional elimina esta restricción al establecer una conexión persistente que transporta datos en ambas direcciones simultáneamente.

Roca Amazónica Tiempo de ejecución de AgentCore apoya transmisión bidireccional para comunicación bidireccional en tiempo auténtico entre usuarios y agentes de IA. Con esta capacidad, los agentes pueden escuchar simultáneamente las entradas del agraciado 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 replicar mientras sigue recibiendo información del agraciado, manejar las interrupciones a parte de la conversación y ajustar sus respuestas en función de la feedback en tiempo auténtico.

Un agente de chat de voz bidireccional puede padecer a final 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 llevar la batuta conexiones persistentes de descenso latencia, manejar transmisiones de audio simultáneas, preservar el contexto en los intercambios y ascender múltiples conversaciones. Implementar estas capacidades desde cero exige meses de esfuerzo de ingeniería y experiencia especializada en sistemas en tiempo auténtico. 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 requisito 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. Igualmente aprenderá a utilizar Strands Agents para implementar una decisió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 acoger la entrada del agraciado como una secuencia y al mismo tiempo remitir fragmentos de respuesta al agraciado. 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 requisito 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 esclarecimiento a parte 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 auténtico. El agente mantiene el contexto conversacional a lo abundante de estas interacciones, preservando el hilo del diálogo incluso cuando la conversación cambia de dirección. Esta capacidad además 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 conducir a los agentes a través de la resolución de problemas en tiempo auténtico, brindando feedback a medida que el agente explora las soluciones. Los agentes colaborativos pueden trabajar cercano a los usuarios en tareas compartidas y acoger información continua a medida que avanza el trabajo en oficio de esperar instrucciones completas. Los agentes multimodales pueden procesar videos en tiempo auténtico o datos de sensores y, al mismo tiempo, proporcionar estudio 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 oficio, sus contenedores deben implementar puntos finales WebSocket en el puerto 8080 en el /ws ruta, que se alinea con las prácticas normalizado del servidor WebSocket. Este punto final WebSocket permitirá que un único contenedor de agente sirva tanto al tradicional Tiempo de ejecución del agente de invocación API y lo nuevo InvokeAgentRuntimeWithWebsocketStream API. Por otra parte, los clientes deben proporcionar una /silbido Punto final para controles de vigor.

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

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

Agente bidireccional Strands: expansión simplificado de agentes de voz

Amazon Nova Sonic unifica la comprensión y coexistentes de voz en un único maniquí, ofreciendo IA conversacional similar a la humana con descenso latencia, precisión líder y un sólido rendimiento de precio. Su casa integrada proporciona coexistentes de voz expresiva y transcripción en tiempo auténtico en un maniquí, adaptando dinámicamente las respuestas basadas en la prosodia, el ritmo y el timbre del deje de entrada.

Con la transmisión bidireccional ahora además arreglado en AgentCore Runtime, tiene varias formas de mostrar cómo penetrar un agente de voz: una puede ser la implementación directa donde necesita llevar la batuta 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, debes consultar el Amazon Bedrock AgentCore bidireccional código, que implementa la comunicación bidireccional con Amazon Bedrock AgentCore. El repositorio tiene dos implementaciones: una que utiliza nativo Amazon Nova Sonic Python implementación implementada directamente en AgentCore Runtime y una implementación del ámbito de detención nivel utilizando el agente bidireccional Strands para conversaciones de audio simplificadas en tiempo auténtico.

El ulterior 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 trámite de sesiones, la transmisión de audio y la coexistentes de respuestas.

El ámbito de agente bidireccional de Strands para conversaciones de audio en tiempo auténtico con Amazon Nova Sonic proporciona una percepción de detención nivel que simplifica la transmisión bidireccional, la trámite cibernética de sesiones y la integración de herramientas. El ulterior fragmento de código es un ejemplo de esta simplificación.

from strands.real.bidi.agent import BidiAgent
from strands.real.bidi.models.nova_sonic import BidiNovaSonicModel
from strands_tools import calculator

@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket, model_name: str):
    # Define a Nova Sonic BidiModel
    model = BidiNovaSonicModel(
        region="us-east-1",
        model_id="amazon.nova-sonic-v1:0",
        provider_config={
            "audio": {
                "input_sample_rate": 16000,
                "output_sample_rate": 24000,
                "voice": "matthew",
            }
        }
    )
    # Create a Strands Agent with tools and system prompt
    agent = BidiAgent(
        model=model,
        tools=(calculator),
        system_prompt="You are a helpful assistant with access to a calculator tool.",
    )

    # Start streaming conversation
    await agent.run(inputs=(receive_and_convert), outputs=(websocket.send_json))

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

La ulterior es la sección de explicación del agente en el código:

agent = BidiAgent(
    model=model,
    tools=(calculator, weather_api, database_query),
    system_prompt="You are a helpful assistant..."
)

Las herramientas se pasan directamente al constructor del agente y Strands maneja la orquestación de llamadas a funciones automáticamente. En recapitulación, 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 dialéctica empresarial. Los desarrolladores pueden centrarse en precisar el comportamiento de los agentes, integrar herramientas y crear indicaciones del sistema en oficio de llevar la batuta 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 auténtico, manteniendo al mismo tiempo el llegada 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 indagación flexibilidad en la implementación de su agente de voz, la implementación nativa de Amazon Nova Sonic puede ayudarle. Por otra parte, esto puede ser importante en los casos en los que hay múltiples patrones diferentes de comunicación entre el agente y el maniquí. Con la implementación de Amazon Nova Sonic podrás controlar cada paso del proceso con total control. El enfoque del ámbito 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 maniquí 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 auténtico 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 ámbito 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 detención nivel como el agente bidireccional Strands, interiormente del mismo entorno seguro y sin servidor.


Sobre los autores

Grapa Zhang es arquitecto senior de soluciones especializado en IA generativa en AWS interiormente de la Estructura Mundial de Especialistas. Se especializa en IA/ML, con peculiar 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 mudar sus soluciones comerciales a través de la IA.

Philipe Fabrés 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 abriles trabajando en el expansión de software, desde monolitos hasta arquitecturas basadas en eventos, con un doctorado. en Teoría de Grafos.

Evandro Franco es un estudiado de datos sénior que trabaja en Amazon Web Services. Es parte del equipo General GTM que ayuda a los clientes de AWS a aventajar los desafíos comerciales relacionados con AI/ML en AWS, principalmente en Amazon Bedrock AgentCore y Strands Agents. Tiene más de 18 abriles de experiencia trabajando con tecnología, desde expansión de software, infraestructura, serverless, hasta estudios automotriz. En su tiempo suelto, a Evandro le gusta juguetear con su hijo, principalmente construir divertidos ladrillos Inculto.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *