Function calling en asistentes de voz: cómo la gestión de estado reduce las alucinaciones


André Martin
André Martin
28 de agosto de 2025  - 6 min de lectura
Function calling en asistentes de voz: cómo la gestión de estado reduce las alucinaciones

Resumen

Los modelos de lenguaje grandes pueden alucinar parámetros técnicos como IDs de productos o tarifas durante las llamadas de función, especialmente cuando deben enviarse varios valores a la vez. En flujos de pedido complejos, esto puede provocar solicitudes backend incorrectas o inválidas. Un enfoque mucho más fiable consiste en recopilar las decisiones del usuario paso a paso y guardar cada selección en un estado persistente antes de ejecutar la transacción final. VoiceBooker apoya este enfoque con una gestión de estado integrada y permite así construir bots de servicio robustos, muy fiables y con una baja tasa de error.

Introducción

Los asistentes telefónicos complejos para líneas de soporte a menudo necesitan recuperar datos de sistemas backend, identificar información de clientes o ejecutar transacciones en una cuenta de usuario. Los asistentes de voz modernos basados en LLM permiten una conversación natural y pueden interactuar con sistemas externos mediante function calling.

En la práctica, sin embargo, aparece pronto un desafío: la fiabilidad de las llamadas de función depende en gran medida de cómo se recopila y procesa la información durante el diálogo.

El problema: parámetros e IDs alucinados

Tomemos un ejemplo típico del sector de las telecomunicaciones. Un cliente quiere contratar una tarifa móvil. El proceso de pedido consta de varias decisiones:

  1. Elegir entre prepago y pospago
  2. Si se elige prepago: seleccionar un paquete de minutos
  3. Elegir un paquete de SMS

Cada una de estas opciones tiene un ID técnico único en el backend. Por ejemplo, los productos disponibles podrían modelarse así:

Opción ID
Prepago 101
Pospago 102
100 minutos 201
500 minutos 202
100 SMS 301
500 SMS 302

Un enfoque ingenuo consiste en dejar que el asistente de voz recopile primero toda la información necesaria y luego ejecute una sola llamada de función:

{
  "product_type_id": 101,
  "minutes_package_id": 202,
  "sms_package_id": 302
}

A primera vista, este enfoque parece razonable. En la práctica, sin embargo, suele causar problemas.

Los modelos de lenguaje grandes tienden a alucinar. Eso significa que pueden inventar información que no existe realmente. Esto se vuelve especialmente crítico cuando intervienen IDs técnicos. Si un modelo debe rellenar varios parámetros al mismo tiempo, aumenta la probabilidad de confundir valores o incluso inventar uno por completo.

En lugar de usar el ID válido 202, por ejemplo, el modelo podría generar de repente un ID inexistente como 205. Cuantas más opciones y parámetros haya que procesar a la vez, mayor será este riesgo.

Por qué la complejidad crece de forma exponencial

El problema de fondo es el tamaño del espacio de búsqueda.

Si, por ejemplo, existen dos tipos de producto, cinco paquetes de minutos y cuatro paquetes de SMS, ya obtenemos:

2 × 5 × 4 = 40

combinaciones posibles.

En productos reales, pueden surgir rápidamente cientos o miles de combinaciones válidas. Entonces el modelo no solo tiene que identificar la opción correcta, sino también seleccionar varios IDs correctos y combinarlos de forma consistente.

Este tipo de complejidad combinatoria aumenta significativamente la probabilidad de errores.

El mejor enfoque: recopilación de información basada en estado

Una estrategia mucho más robusta consiste en recopilar la información paso a paso y almacenarla en un estado central.

El diálogo podría desarrollarse así:

Paso 1: elegir el tipo de producto

{
  "product_type_id": 101
}

El valor se guarda en el estado.

Paso 2: elegir el paquete de minutos

{
  "minutes_package_id": 202
}

El nuevo valor también se guarda en el estado.

Paso 3: elegir el paquete de SMS

{
  "sms_package_id": 302
}

Este valor también queda almacenado en el estado.

En cada paso, el asistente de voz solo tiene que tomar una decisión. En lugar de elegir entre todas las combinaciones posibles a la vez, se concentra en un conjunto limitado de opciones por paso.

Solo cuando se ha recopilado toda la información se ejecuta la confirmación final:

{
  "product_type_id": 101,
  "minutes_package_id": 202,
  "sms_package_id": 302
}

Como todos los IDs ya han sido validados y almacenados previamente, el riesgo de alucinaciones se reduce drásticamente.

Por qué este enfoque es más fiable

La ventaja decisiva es la reducción de la carga cognitiva para el modelo.

Con una sola llamada de función con muchos parámetros, el LLM tiene que:

  • tomar varias decisiones a la vez
  • recordar los IDs correctos
  • formar la combinación correcta
  • devolver todos los valores en un solo paso

Con el enfoque basado en estado, en cambio, el modelo solo tiene que:

  • tomar una decisión
  • seleccionar un ID
  • guardarlo en el estado

Esto reduce considerablemente la probabilidad de errores. En lugar de un gran problema combinatorio, se crean varias tareas pequeñas y mucho más sencillas.

VoiceBooker y la gestión de estado integrada

VoiceBooker apoya este paradigma mediante una gestión de estado integrada.

A lo largo de toda la conversación, hay disponible un objeto JSON que puede leerse y actualizarse en cada paso del diálogo. De este modo, la información ya recopilada permanece disponible de forma persistente y no tiene que reconstruirla el modelo.

Un estado típico podría verse así:

{
  "customer_id": "12345",
  "product_type_id": 101,
  "minutes_package_id": 202,
  "sms_package_id": 302
}

Cada nueva decisión del usuario simplemente amplía el estado existente. Solo cuando toda la información necesaria está disponible se activa la transacción real.

Este patrón conduce a llamadas de función mucho más fiables y minimiza las alucinaciones en parámetros técnicos.

Conclusión

Function calling es una tecnología central para los asistentes de voz y soporte modernos. Sin embargo, el mayor desafío no es la llamada a la función en sí, sino la obtención fiable de los parámetros necesarios.

Cuando se procesan varios IDs y decisiones al mismo tiempo, la probabilidad de alucinaciones y llamadas de función incorrectas aumenta significativamente. Un enfoque basado en estado, en el que la información se recopila y almacena paso a paso, reduce enormemente la complejidad.

Con la gestión de estado integrada de VoiceBooker, exactamente este tipo de diálogos puede implementarse de forma eficiente. Los IDs y otros parámetros técnicos se almacenan de forma segura en el estado durante la conversación y luego pueden utilizarse con fiabilidad para la transacción final. El resultado son bots de servicio robustos, escalables y de alta calidad que pueden modelar de forma fiable incluso procesos empresariales complejos.

Etiquetas
Voice AILlamadas de funciónGestión de estadoAlucinacionesDiseño de conversaciónTécnico