Saltar al contenido principal

JEV AI y Asterisk: mejora tu agente IVR con Qwen

Añade JEV AI antes de Qwen en tu agente de voz con Asterisk: decisiones estructuradas, rutas validadas, atención humana y un ciclo de voz más fluido, con tres diagramas.

Ilustración editorial con IA de un agente de voz con auriculares y distintivos de JEV, Qwen y Asterisk.
TechKili · Ilustración editorial generada con IA; las marcas no implican respaldo.
Compartir este artículo:
En este artículo

JEV AI puede aportar una capa de decisión específica a un agente de voz con Asterisk: clasificar cada intervención, resolver las respuestas sencillas por una ruta breve y validada, y recurrir a Qwen para interpretar las difíciles. La máquina de estados sigue decidiendo qué puede hacer la aplicación.

En Cómo crear tu propio agente IVR con IA conectamos telefonía, reconocimiento de voz, un intérprete LLM restringido y un flujo de conversación determinista. Esta continuación desarrolla la siguiente mejora: un diseño que consulta primero a Jev para reducir las intervenciones ordinarias que necesitan el modelo de lenguaje grande.

Piensa en decir «Repita», seleccionar una categoría conocida o pedir atención humana. Esas peticiones necesitan una decisión acotada y una respuesta adecuada. Una frase que mezcla varios datos y una corrección necesita una interpretación más elaborada. La oportunidad consiste en dar a cada recorrido su propia responsabilidad.

Es una guía de implementación de la mejora prevista, con incidencias ficticias y sin referencias a un sector concreto. No es un informe de un despliegue de Jev ya completado en producción ni un benchmark de su latencia.

Qué es JEV AI y por qué situarlo antes del LLM

TypeSafe presentó Jev el 15 de septiembre de 2026 como un modelo System One para decisiones estructuradas. Recibe contexto y preguntas tipadas en lugar de producir una respuesta conversacional abierta. Esa especialización resulta relevante para decidir rutas dentro de un agente de IA. Anuncio de TypeSafe.

En este IVR, «por encima del LLM» significa que Jev ayuda a elegir la ruta de interpretación. No administra los permisos, ejecuta operaciones de negocio ni inventa las frases que escucha la persona. El código combina sus resultados con el estado actual del diálogo.

Tres primitivas de pregunta cubren trabajos distintos: choice selecciona entre alternativas declaradas, noul estima si una proposición es verdadera y score evalúa una escala definida. La propuesta utiliza principalmente las dos primeras. Introducción de TypeSafe.

Una salida tipada acota la forma de la respuesta; el modelo todavía puede elegir una categoría incorrecta. Por eso la aplicación conserva validaciones, una opción ambigua, aclaraciones y atención humana.

Del intérprete LLM a un agente de voz híbrido con Asterisk

El diseño original envía la transcripción y el contexto a su intérprete restringido. El nuevo añade una etapa de decisión y mantiene el intérprete existente como respaldo.

Componente Responsabilidad en la integración propuesta
Asterisk Señalización de llamadas, transporte de medios, reproducción y mecánica de transferencia
Detección de voz y ASR Delimitar la intervención y producir una transcripción
Jev Evaluar preguntas acotadas sobre el texto dentro de su contexto
Política y máquina de estados Validar resultados, elegir la siguiente pregunta y exigir confirmación
Pi con un LLM Qwen Interpretar campos mezclados, referencias difíciles y correcciones complejas
Audio preparado y TTS Reproducir mensajes fijos aprobados o texto variable validado
Adaptador de negocio Realizar una lectura expresamente permitida o preparar una solicitud de prueba

Arquitectura IVR propuesta con JEV AI y Asterisk: ASR, decisiones Jev, política y estados, respaldo Qwen, audio y backend. Etiquetas en inglés.
TechKili · Diagrama original de arquitectura

Figura 1. Arquitectura propuesta. Ambas rutas llegan a la misma validación. El código interpreta el teclado según el menú activo. Etiquetas del diagrama en inglés.

Una petición clara de atención humana puede llegar a la transferencia sin esperar al LLM grande. Seleccionar una categoría sencilla permite pasar al siguiente campo pendiente. Qwen sigue siendo útil si alguien dice: «La incidencia afecta al equipo A; en realidad, al equipo B, y empezó ayer».

El beneficio potencial es invocar menos veces al modelo grande en turnos ordinarios. La petición de decisión también añade trabajo, especialmente cuando hay que recurrir al respaldo. La mejora de la experiencia conjunta debe medirse en ambos recorridos.

Dale a Jev la pregunta que la persona realmente escuchó

Una transcripción aislada no basta. «Dos» puede seleccionar la segunda opción de un menú o formar parte de una referencia. «Sí» puede confirmar un resumen o pedir otra gestión.

Construye un estado compacto con la transcripción original, el estado actual (INTENT, COLLECT, CONFIRM, MORE o HELP), la pregunta que empezó a reproducirse, las opciones ofrecidas, el campo esperado y los datos validados relevantes. Mantén en código la revisión del diálogo y el contador de intentos. Si una consulta utiliza un año, fíjalo al comenzar la llamada según la zona horaria configurada en la aplicación.

Registra también el progreso de reproducción: que el resumen haya empezado no demuestra que la persona haya escuchado lo suficiente para confirmarlo. Una corrección o interrupción debe invalidar una oportunidad de confirmación obsoleta.

TypeSafe documenta estados de texto, incluidos objetos JSON; en este diseño Jev no recibe el audio telefónico original. Su documentación advierte además de que la precisión fuera del inglés requiere especial atención. Evalúa el idioma real de las llamadas, incluido el español, sin asumir que los resultados en inglés se trasladan automáticamente. Documentación de estado.

Selecciona en cada turno solo las preguntas relevantes para ese estado:

Pregunta Primitiva propuesta Uso en el código
¿Continuar, repetir, pedir una persona o terminar? choice Encauzar el control conversacional
¿Nueva incidencia, consulta de estado u otra petición? choice Elegir un procedimiento admitido
¿Qué categoría ofrecida ha seleccionado? choice Validar contra el menú activo
¿Corrige un campo anterior? noul Invalidar la confirmación y revisar el cambio
¿Mezcla varios campos? noul Valorar la extracción con Qwen
¿Expresa una necesidad de atención humana inmediata? noul Aplicar la política de derivación

Incluye una salida explícita de desconocido o ambiguo en las preguntas de categoría. Cada pregunta evalúa la misma entrada de forma independiente; no redactes una que necesite conocer otra respuesta de esa petición. Combina después los resultados en código. Documentación de Choice.

Una respuesta de sí o no no sirve para extraer texto arbitrario. Si la persona aporta una descripción literal sencilla, el código puede conservar la transcripción original tras comprobar que responde al campo esperado. Separar varios campos o resolver una corrección compleja corresponde al intérprete grande.

Encauza cada intervención sin ceder el control

Política de turno: priorizar ayuda humana, cancelación y repetición, validar entradas sencillas o invocar Qwen una vez. Etiquetas en inglés.
TechKili · Diagrama original de arquitectura

Figura 2. Política de decisión propuesta. Las señales contradictorias llevan a aclaración o respaldo; todas las rutas respetan la revisión vigente del diálogo. Etiquetas en inglés.

El orden propuesto es atención humana o riesgo explícito, cancelación, repetición y, después, recogida y corrección de campos. Un resultado ambiguo o contradictorio no debe completar un dato silenciosamente.

Como punto de partida para ajustar la política, proponemos una probabilidad de la primera opción de al menos 0,90 y una diferencia mínima de 0,25 respecto a la segunda para selecciones categóricas ordinarias; 0,95 para clasificar con suficiente certeza una petición fuera de alcance; y un umbral noul de 0,80 para señalar un riesgo explícito que requiera revisión humana. Son políticas iniciales, no garantías medidas de Jev. Un umbral de riesgo inferior prioriza la revisión; no diagnostica una emergencia ni sustituye sus procedimientos.

Las probabilidades de Choice y confidence son campos distintos. TypeSafe describe la confianza como una estadística derivada de la distribución de probabilidades, no como una medida independiente del acierto. Noul devuelve una probabilidad noul, sin un campo separado de confianza. Confianza y Noul.

También hay que acotar los fallos: proponemos un segundo de plazo para Jev, ningún reintento dentro del turno y, como máximo, una interpretación de respaldo. Un timeout, un error de servicio o una respuesta inválida devuelve el trabajo al intérprete actual. Su límite inicial de 20 segundos sigue siendo un máximo que revisar, no un objetivo de latencia conversacional.

Ambas rutas deben producir el mismo contrato interno de intención y campos. Valídalo antes de avanzar la máquina de estados. Mantén el cliente de Jev separado de la interfaz conversacional de Pi y comprueba el contrato real del proveedor: el endpoint de chat de una pasarela local de compatibilidad no es automáticamente la API nativa de Jev.

Qué cambia en una conversación

Estos ejemplos son ficticios y describen un servicio de incidencias genérico; no proceden de grabaciones ni de solicitudes reales.

La persona dice Comportamiento previsto
«Quiero comunicar una incidencia con un equipo» Elegir el procedimiento admitido y preguntar por los datos pendientes
«Equipo B», después del menú de equipos Validar la opción ofrecida y pasar al siguiente campo
«Repita» Reproducir la pregunta vigente sin registrar una respuesta de campo incorrecta
«Sí, pero es el equipo C» Invalidar la confirmación por la corrección y leer otro resumen
«¿Puede pasarme con una persona?» Reproducir el aviso e iniciar la ruta humana configurada
Ruido o una respuesta sin relación Aclarar el campo pendiente; tras tres intentos fallidos, ofrecer ayuda humana

Después de ofrecer ayuda, espera la petición de la persona o una selección válida del teclado. Una cifra solo elige una opción cuando ese menú está activo. Una petición explícita de atención humana no necesita agotar primero los intentos de aclaración.

Durante la confirmación, solo se acepta «sí» para el resumen vigente, sin correcciones pendientes y con evidencia suficiente de reproducción. En MORE, la misma palabra expresa que se desea otra gestión: pregunta cuál y comienza con datos nuevos.

En el prototipo, el mensaje final sigue siendo preciso: «La solicitud de prueba está preparada. No se ha enviado». Una integración real debe comprobar el resultado del backend antes de anunciar el éxito. Consultar el estado también requiere autorización; conocer una referencia no acredita por sí solo el acceso.

Mejora el ciclo de voz además de la ruta del modelo

Ciclo de voz conceptual con ASR, decisiones Jev, locuciones, TTS, aviso de espera a los 800 ms e interrupciones. Etiquetas en inglés.
TechKili · Diagrama original de arquitectura

Figura 3. Ciclo de voz conceptual, no una cronología medida. Los 800 ms representan el disparador propuesto del aviso desde el inicio del procesamiento. Etiquetas en inglés.

Pregenera saludos, menús, aclaraciones y avisos de transferencia. Construye los resúmenes variables con valores validados y sintetízalos durante la llamada. El audio variable con datos de la persona permanece en la memoria aislada de esa llamada, fuera del catálogo compartido.

Programa un aviso breve a los 800 milisegundos del inicio del procesamiento. Cancélalo si la respuesta está lista antes. Si el audio definitivo termina de prepararse mientras suena el aviso, interrúmpelo y empieza la respuesta útil. El aviso no debe retrasar una consulta ya autorizada. Reserva la música de espera para una consulta real al backend, no para cada inferencia.

La interrupción por voz debe detener el audio en cola e invalidar el trabajo antiguo. Asterisk documenta FLUSH_MEDIA para descartar medios encolados; la aplicación sigue necesitando señales de cancelación y comprobaciones de revisión para respuestas de modelos y audio generado. WebSocket de Asterisk.

Al colgar, cancela tareas y temporizadores pendientes. Cuando cambia un campo, rechaza resultados de la revisión anterior. En una transferencia, distingue la respuesta del destino y el puente completado de la atención por una persona: el saludo automático de una cola no demuestra contacto humano.

Cómo introducir la mejora y medir el resultado

Utiliza tres modos explícitos. En off, conserva el intérprete existente. En shadow, recoge decisiones para evaluarlas mientras la ruta original controla la conversación. En enforce, permite que las decisiones validadas seleccionen la ruta breve, manteniendo el respaldo. Versiona preguntas, umbrales y catálogo de audio junto al código; crea el intérprete más pesado solo cuando sea necesario.

Prueba correcciones, selecciones ambiguas, peticiones mezcladas, modelos no disponibles, resultados inválidos, silencio, interrupciones, respuestas tardías y cuelgues. Incluye cifras habladas, teclado y expresiones como «sí, pero…» en el idioma de las llamadas. La finalización funcional y la calidad de transcripción necesitan resultados separados.

Mide estos elementos antes de afirmar que el agente telefónico es más rápido:

Medición Por qué importa
Final del habla hasta la primera respuesta útil audible Refleja la espera real de la persona
Duraciones de ASR, decisión, respaldo, backend y TTS Localiza el cuello de botella sin atribuírselo a un solo modelo
Cobertura y errores de la ruta breve Indica cuándo es seguro prescindir del LLM
Frecuencia y latencia total del respaldo Expone el coste de añadir la etapa de decisión
Correcciones, confirmaciones inválidas y transferencias Comprueba la corrección conversacional
Distribuciones de cancelaciones, timeouts y carga Revela el comportamiento fuera de demostraciones satisfactorias

El artículo anterior midió reconocimiento de voz e interpretación por separado; esos datos no acreditan la velocidad de esta arquitectura con Jev. Tampoco presentamos mediciones de otro modelo de decisión como resultados de Jev. Evalúalo con una versión fija, el mismo corpus y las condiciones del servicio registradas; repite después con telefonía real. Incluye también los trabajos fallidos y cancelados.

Un encargo práctico para integrar JEV

Adapta estas instrucciones a un agente existente cuyos servicios de ASR, Qwen y TTS ya funcionan:

Añade un cliente de decisión Jev antes del intérprete restringido.
Conserva la máquina de estados como responsable del diálogo y acciones.
Usa incidencias genéricas ficticias en ejemplos y pruebas.

Construye el estado con transcripción, estado activo, pregunta
reproducida, opciones, campo esperado, datos y revisión del diálogo.
Selecciona preguntas Choice/Noul independientes según ese estado.
Verifica la API; no supongas compatibilidad con chat completions.

Valida todos los resultados. Incluye salidas de desconocido y umbrales
ajustables por categoría. La probabilidad no equivale a autorización.
Conserva una interpretación de respaldo para entradas complejas o
inciertas. Plazo de decisión: 1 segundo, sin reintentos en el turno.

Conserva correcciones, confirmación del resumen vigente, DTMF según
contexto, cancelación, limpieza al colgar y atención humana.
Usa audio fijo preparado y TTS para respuestas variables validadas.
El aviso a los 800 ms debe poder cancelarse y no bloquear el flujo.

Añade modos off, shadow y enforce. Registra ruta y tiempos sin guardar
por defecto texto o audio del llamante. Prueba ambas rutas, sus fallos
y revisiones obsoletas. Explica exactamente qué se ha probado.
Separa la preparación de prueba de las escrituras autorizadas reales.

El entregable útil es un adaptador y una política comprobable, no un prompt más largo que entregue la llamada al modelo.

¿Puede ejecutarse en local? KEV y Qwen

Para explorar el autoalojamiento, Kev es una familia independiente de modelos de decisión de código abierto, similares a Jev y construidos sobre Qwen3.5. Su repositorio ofrece modelos, código de entrenamiento e instrucciones de servicio, con variantes de 0.8B, 4B y 9B. No es Jev con otro nombre; la similitud de API no demuestra precisión, calibración o latencia equivalentes.

La parte portable del diseño es el contrato de la aplicación: las decisiones estructuradas atraviesan las mismas validaciones y máquina de estados. Una alternativa local necesita su propia evaluación multilingüe, dimensionamiento de hardware y adaptador. Comprueba su licencia y las condiciones del modelo elegido para el despliegue previsto.

JEV AI y Asterisk: preguntas frecuentes

¿Sustituye Jev a Qwen en un IVR con IA?

En este diseño, Jev toma decisiones de encaminamiento acotadas. Qwen conserva la interpretación de intervenciones complejas y la aplicación elige qué recorrido utilizar.

¿Escucha Jev las llamadas o genera la voz?

La integración entrega texto a Jev después del ASR. Las locuciones preparadas y un servicio TTS independiente producen la respuesta; Asterisk la transporta y reproduce.

¿Será más rápida cada llamada?

No está demostrado. Un turno sencillo puede evitar una petición al modelo grande, mientras el respaldo añade una etapa de decisión. Las esperas de ASR, backend y audio siguen contando.

¿Qué debe permanecer fuera del control del modelo?

La autorización, la confirmación del resumen vigente, la ejecución del backend, el aislamiento de llamadas y las reglas de cancelación y transferencia. La siguiente versión debe facilitar la prueba de esos límites y hacer menos engorrosas las conversaciones habituales.