Dialfire Agente IA - Guía

Dialfire Agente IA - La guía: Unos pocos pasos hacia un Agente AI listo para usar - simple, flexible, fascinante.

Inicio rápido: Cómo poner en marcha tu agente IA en Dialfire

¡Bienvenido al mundo de los agentes IA de Dialfire!🎉

No te preocupes, no hace falta ser un ninja de la tecnología para poner en marcha tu propio agente de IA inteligente. Con solo unos clics, tu agente estará listo para funcionar y esperando para atender tus llamadas.

Es así de fácil:
  • Abre el menú Dialfire Voice Automation aquí se crean y gestionan todos los agentes de IA.
  • Haz clic en Basic IVR en la esquina superior derecha y seleccione su agente de IA. Con un solo clic, estará creado.
  • ¡Voilà!: Tu agente de IA comienza con una plantilla de ejemplo que está lista para usar. Esta plantilla ya contiene todos los componentes importantes para empezar, perfecta para crear tus propios ajustes sobre ella.

El ABC del prompting: empezar de forma sencilla, crecer de forma inteligente 🎓

Lo más importante del prompting: Empieza con poco y ve ampliando paso a paso.

Así se consigue un buen comienzo:
  • Comienza con una variante mínima que solo explique al agente de forma aproximada lo que pretendes hacer con él. En sentido figurado: Dile al agente adónde debe ir, no cómo debe mover los pies.
    Prueba lo que el agente ya domina con ello: te sorprenderás.
  • A continuación, crea una variante que sea apenas suficiente para ponerla en marcha.
  • Pónlo en marcha con un volumen de llamadas manejable que le permita ver cada llamada individualmente.
  • Soluciona los problemas que detectes durante el funcionamiento en vivo, ya que a menudo son muy diferentes de los que te causaron problemas en la "prueba de funcionamiento". Esta es la parte en la que debes invertir la mayor parte de tu tiempo.

☝️Menos es a veces más:
  • Establece expectativas realistas: las personas cometen errores, la IA también; no existe la precisión al 100 %.
  • Redáctalo de forma clara y sencilla.
  • Evita las instrucciones contradictorias.
  • Cuando digas lo que el bot no debe hacer, di también lo que debe hacer en su lugar.
  • Utiliza el discurso directo solo cuando sea necesario (por ejemplo, en materia de cumplimiento normativo). Es mejor describir "qué" debe decir el agente, no el "cómo".
  • Evita información que no sea necesaria.
  • No te obsesiones en errores individuales e intentes compensarlos.
  • Las instrucciones adicionales suelen empeorar el rendimiento en otros aspectos que antes funcionaban bien. En su lugar, busca instrucciones que puedas eliminar, lo cual suele ser mucho más eficaz.
  • Describe tu proyecto a tu agente para que comprenda el sentido de las instrucciones individuales y pueda tomar mejores decisiones.
  • El agente de IA no es un extraterrestre👽: Antes de explicarle el mundo al agente, comprueba si ya conoce el concepto.
    Ejemplo: "Eres un robot de servicio en una empresa de alquiler de coches" en lugar de "Te llaman clientes que tienen problemas con un coche".

Con estas sencillas reglas ya puede crear agentes de IA útiles para su uso práctico.

💡Atención: A medida que añadas más y más tareas, en algún momento notarás que tu agente parece más tonto, pierde espontaneidad y comete errores. Esto es totalmente natural y se debe a que, al igual que los humanos, la IA tiene una capacidad de atención limitada.

La buena noticia: Existen soluciones para ello, que te presentamos más adelante. Con ellas, ya no tendrás límites. 🎉

El primer prompt: el corazón de tu agente

El prompt es el cerebro de su agente de IA; aquí define quién es, cómo habla y qué sabe hacer.

☝️Importante: La estructura no es fija; la creatividad y la experiencia marcan la diferencia. Todo lo que ya sabe sobre el manejo de la IA sigue siendo válido.

☝️Regla básica: Escribe la indicación tal y como se la darías a un nuevo empleado antes de dejarlo atender el teléfono. Si sigues este consejo, podrás saltarte muchos tutoriales.

Estructura aproximada del prompt:

Contiene las descripciones básicas de cómo debe comportarse el bot:

  • Rol y propósito: ¿quién habla? ¿Cuál es el objetivo del agente?
  • Tarea: ¿qué debe hacer el agente en la conversación?
  • Límites: ¿qué no debe hacer el agente en la conversación bajo ningún concepto?
  • Preguntas frecuentes / Plantillas de respuesta: frases de muestra cortas y claras para el LLM

Contiene instrucciones de control que se incorporan directamente en el texto y le dan aún más dinamismo al conjunto.

A excepción de las instrucciones de control opcionales, no hay ningún formato específico que debas seguir. Recomendamos utilizar Markdown para el formato, ya que la IA lo entiende especialmente bien.

Ejemplo de un prompt de inicio sencillo:

# Your Role
You are Helena Fisher, a friendly AI phone agent from GreatProducts. You always speak politely, confidently, and in a natural tone.
 
# Your Task
Greet the customer and ask them to briefly explain their request.
$customer_request Customer's inquiry
 
Answer questions from the FAQ. For unknown requests, transfer the call using function "connect_agent". If resolved, say goodbye and use function "hangup".
 
@connect_agent Transfers the call to a human agent.
@hangup Ends the call.
 
# FAQ
Q: Wants to return product  
A: They can return products within 30 days if unused and in original packaging. 
  
Q: Delivery times  
A: Standard: 3–5 business days. Express: 1–2 business days.  
 
Q: Opening hours  
A: Mon–Fri: 8:00–18:00, Sat: 9:00–14:00. 
 

En el ejemplo, puede ver # Your Task como encabezado de sección en formato Markdown, así como $customer_request y @connect_agent como instrucciones de control. En breve profundizaremos en estos dos elementos... ¡no se lo pierda! 😉

Probar el prompt: probar, experimentar y optimizar 🧪

Antes de que su agente de IA brille en el uso real, pruebe su prompt directamente en el menú Voice Automation. Aquí puede comprobar fácilmente cómo reacciona su agente, ya sea mediante una llamada o en el chat.  

Así se hace:
  • Abre el menú: Ve a Voice AutomationTest.
  • Elige el modo de prueba: Decide entre Llamada (llamada simulada) o Chat (interacción de texto).
  • Inicia la interacción: Di o escribe tus preguntas de prueba, tal y como lo harían tus clientes.
  • Observar los resultados: comprueba si el agente rellena correctamente las variables y ejecuta de forma fiable las invocaciones de función.

💡Consejo: Pequeños cambios en un punto pueden tener un gran efecto en todo el proceso. Vuelve a probar directamente.

¡Ya está, tu agente de IA está listo para empezar! 🚀

🎉 ¡Enhorabuena!

¡Lo has conseguido!: tu agente de IA configurado, probado y ahora está listo para llevar la experiencia de atención al cliente ¡a un nuevo nivel! Sin embargo, antes de que tu agente pueda empezar a trabajar, debes asignarle la línea entrante correcta:

1️⃣ En el menú Voice Automation, ve al área de prueba y activa la versión final de tu bot.

2️⃣ Activar en tu línea entrante:

  • Abre el menú Números de teléfono y selecciona la línea deseada.
  • En Configuración del IVR, selecciona el título de tu bot en el menú desplegable IVR.
  • Marque la casilla Activado y guarde. ¡Listo!

Y voilà: tu agente de IA está en funcionamiento y listo para deleitar a tus clientes. Siéntate, disfruta del espectáculo y observa cómo tu nuevo compañero virtual revoluciona tu servicio de atención al cliente. 🤘

La facturación de su agente de IA es sencilla y transparente:
  • Todos los minutos de conexión del agente de IA se facturan con la tarifa Conversational AI C, además de las tarifas de conexión habituales.
  • Además, la duración de las locuciones generadas también se factura según la tarifa Conversational AI C.
  • 💡Ahorro inteligente: Las locuciones que se repiten exactamente se almacenan automáticamente en caché. En la siguiente llamada, no se generarán costos adicionales por ellas.

Lo que aún no hemos explicado... 🤔

En el prompt de ejemplo aparecen dos elementos que no queremos dejar sin comentar:

  • Marcadores de posición de variables como $customer_request
  • Invocaciones a funciones como @connect_agent

Ambas son herramientas centrales que hacen a tu agente aún más poderoso.

En el siguiente paso, te mostraremos cómo funcionan los marcadores de posición de variables y las invocaciones a funciones, y por qué son la clave para conversaciones realmente inteligentes.

Marcadores de posición de variables

 Con marcadores de posición de variables insertados, tu agente se convertirá en un profesional de las notas: guardará automáticamente la información de la conversación directamente en los datos, que luego podrás procesar en Dialfire.

Sintaxis:

$nombre_del_campo Descripción del campo → define un campo esperado

Ejemplo:

$customer_request Solicitud del cliente → registra la solicitud que menciona el cliente.

☝️Importante:
  • Coloca el campo con un $ delante, en una línea separada, cerca del tema al que se refiere el campo. De esta manera, el agente sabrá por el contexto cuándo debe rellenarse el campo. Por el contrario, no hagas referencia a la variable en el resto del texto del prompt, es decir, no escribas: «No olvides rellenar la variable XYZ».
  • Nombra la variable de manera que tenga sentido para el agente, por ejemplo, "Nombre" en lugar de "Campo15" y escribe una pequeña descripción detrás del nombre del campo; así funcionará de forma mucho más fiable.

Variable con opciones de selección

Escribe directamente debajo de la variable otra línea options: con los valores permitidos, separados por comas. El agente solo podrá utilizar estos valores. Se vería, por ejemplo, así:

$quiere_recibir_newsletter El cliente acepta recibir el boletín (newsletter)
options: sí, no

Invocaciones a funciones: ejecutar acciones

Las invocaciones a funciones son los botones de acción de tu agente. Activan acciones directas cuando hay que hacer algo de inmediato.

Las funciones reales se pueden ver en la pestaña Script. Se trata de funciones de Javascript que puedes ampliar como quieras.

Para poder utilizar estas funciones, deben comunicarse al agente en el prompt. Esto se hace en una nueva línea con @ seguido del nombre de la función y una subsiguiente descripción. A diferencia de las variables, la posición en el prompt no tiene importancia.

Básicamente, el agente decide por sí mismo, a partir del contexto de la conversación, cuándo usar las funciones. Pero puedes influir en esto en el prompt y hacer que el agente avise también que lo va a usar. Esto crea transiciones de conversación muy naturales.

Ejemplo:

  • En la pestaña Script, existe la función:

    function connect_agent​(){
    ...
    }

  • En el prompt, das a conocer esta función con:

    @connect_agent Conectar a la persona que llama con un humano.

  • Y en el texto escribes, por ejemplo:

    Si no sabes la respuesta a la pregunta, di que ahora vas a conectar con un empleado que seguro podrá ayudar y, al mismo tiempo, utiliza la función "connect_agent".

Avanzado: salir de la caja

¡Bienvenido al siguiente nivel! 🎮

Tus primeros agentes de IA ya están en funcionamiento; ahora te mostraremos los secretos para dar a conocer tu agente al mundo exterior. No te preocupes: aunque se llame "Avanzado", no necesitas un doctorado en informática para ello, aunque, por supuesto, tampoco te vendría mal.  🙂 Considérelo como una caja de herramientas repleta de recursos que solo espera poder crear cosas increíbles.

💡 ¿Puedes guardar un secreto?

Lo que hasta ahora hemos llamado "prompt" no es en realidad un prompt estático. Es una plantilla dinámica que se recompone en cada turno.

Para el informático, esto suena familiar de inmediato: no es un fragmento de texto rígido, sino un sistema de renderizado flexible, similar a VueJS o Angular, pero para agentes de IA.

Y aquí es exactamente donde entran en juego las funciones avanzadas de las plantillas...

Funciones avanzadas de las plantillas: los superpoderes de su prompt 🦸‍♂️

La plantilla de prompt puede hacer mucho más que simples sustituciones de valores. Domina una sintaxis de plantilla compleja que puede anidar a su gusto. Esto convierte su prompt en un sistema modular flexible que representa limpiamente incluso lógicas de conversación complejas.

Sustituciones de valores con {{expresión}}

El caso más simple: {{data.nombre_del_campo}}

Pero atención: detrás de esto hay más que solo nombres de campos; también son posibles las llamadas a funciones. Así es como puedes traer contenido dinámico directamente a la plantilla.

Bloques condicionales con IF

Con la directiva IF, controlas qué contenido llega realmente al prompt. Ya sea en medio del texto:

({{#if condicion}} Aquí va un texto opcional {{/if}})

o con varias alternativas, abarcando grandes bloques:

{{#if condicion}}
{{#elif condicion_alternativa}}
{{#else}}
{{/if}}

Uso: Mostrar componentes de prompt alternativos/opcionales

Bucles con EACH

Para elementos repetitivos, utilice EACH:

{{#each variable_item @ expresion_array}}
{{/each}}

Perfecto cuando las cosas se repiten con cualquier frecuencia, por ejemplo, una lista de productos o contratos.

Con estas funciones avanzadas en las plantillas, aportas dinamismo a tus agentes.

💡¿Ya te has dado cuenta? En los Logs, junto a las respuestas del agente, también encontrará un pequeño enlace a next prompt. Así podrá controlar sin problemas si el prompt generado fue realmente correcto.

Definir funciones propias

Ya hemos hablado de las funciones, pero todavía no de la sintaxis completa. En la pestaña Script, define una función en Javascript, más o menos así:

function nombre_de_la_funcion(args){
}

El objeto args contiene entonces los parámetros que el agente ha pasado en la llamada.

En el prompt real, declara la función, más o menos así:

@nombre_de_la_funcion Descripción del propósito de la función
-argumento1: Descripción del parámetro
options: valor1,valor2
optional: true
-argumento2: Descripción del 2.º parámetro

Con options especifica los valores permitidos si solo quiere permitir ciertas posibilidades. Y con optional establece que este parámetro no tiene por qué estar presente.

¿Y qué nos devuelve la función?

El valor que se devuelve no tiene que seguir ningún formato especial. Se pueden devolver estructuras de objetos arbitrarias o incluso una simple cadena (string) con una instrucción sobre cómo debe proceder el agente.
Lo único importante es que el agente pueda entender el significado.  

💡Consejos

  • Los nombres de funciones y parámetros bien elegidos con una descripción adecuada son fundamentales para que el agente pueda utilizarlos de forma fiable.
  • Utiliza las funciones con moderación. Si el agente tiene muchas funciones entre las que elegir, esto requiere mucho presupuesto de atención.

Marcadores de posición de variables vs. invocaciones a funciones: ¿qué, cuándo y por qué? 🤔

Los marcadores de posición de variables funcionan silenciosamente en segundo plano y escriben los valores reconocidos (por ejemplo, nombre, código postal) en el objeto data.

  • Ventaja: ahorra el presupuesto de atención del LLM.
  • Desventaja: el valor no se puede verificar antes de que el bot responda.

Las invocaciones a funciones son los jugadores activos: el LLM invoca una función que realiza comprobaciones o validaciones en tiempo real.  

  • Uso previsto: en cualquier lugar donde necesite resultados inmediatos, p. ej., validaciones o consultas de CRM.

💡Regla práctica:

  • Marcadores de posición de variables → para campos no críticos
  • Invocaciones a funciones → para todo lo que deba ser validado o procesado de inmediato

El entorno Javascript 💻

Con Javascript, tienes a tu disposición un entorno de bajo código con el que puedes implementar funciones avanzadas.

Objetos globales

En el entorno Javascript encontrarás algunos objetos globales que puedes usar desde cualquier función.

data {} - el objeto central cuyos campos se transfieren directamente al registro de datos de contacto para su posterior procesamiento.

temp {} - un objeto temporal en el que puede almacenar datos serializables entre turnos.

  • actions [] - para desencadenar comandos de control
  • tts_translation {} - un mapa de expresiones regulares en formato de cadena (string) a sustituciones fonéticas para forzar la pronunciación correcta de ciertos términos.
  • LOG () - una función para salidas de registro que luego puede ver en el registro de la conversación.

Desencadenar llamadas a la API por HTTP

Para las llamadas API a sistemas externos, hay funciones globales disponibles:

GET​(url, options)
POST​(url, payload, options)
PUT​(url, payload, options)
DELETE​(url, options)

El resultado es siempre un objeto de respuesta con las siguientes funciones:
status(), text(), json()

La solicitud funciona de forma asíncrona. Por lo tanto, puede iniciar varias solicitudes en paralelo y el script esperará a que finalice la solicitud solo cuando acceda a una de las funciones en la respuesta.

Uso de Script-Hooks

Puede implementar los siguientes ganchos (hooks) como una función para poder reaccionar a ciertos eventos:

  • onLoad() - al iniciar el agente
  • onUpdate()→ después de cada turno
  • onClose() → al final de la conversación (p. ej., tareas de cierre, operaciones de escritura)
  • onFieldUpdate(nombre_del_campo,valor)) - si está definido, los marcadores de posición de variables no se añaden simplemente al objeto de datos, sino que se procesan a través de esta función
  • onFunctionCall(nombre,argumentos)) → cuando el agente invoca una función no definida... así se pueden implementar funciones dinámicas

Ayuda, mi agente se está volviendo más tonto... o para qué sirve un dedo índice 🤔

¿No has empezado bien con tu agente? ¿Y ahora ya no hace lo que debería?

Ya has puesto en práctica todos nuestros consejos y, aun así, ¡es para desesperarse!

Entonces, probablemente estés en el punto en el que necesitas nuestra solución prometida para agentes realmente grandes.

Por qué los prompts estáticos tienen sus límites

Los agentes de IA, al igual que las personas, tienen una capacidad de atención limitada. Pero un nuevo empleado podría trabajar muy bien con su indicación, ¿no? ¿Es la IA realmente tan tonta? ¿Por qué entonces puede escribir textos interminables, pero falla en una conversación como esta?

💡 Respuesta sencilla: ¡Su empleado tiene un dedo índice, pero la IA actual no!

Una persona puede recordar (o señalar con el dedo índice) dónde se encuentra exactamente en la conversación, pero la IA tiene que volver a averiguarlo con cada respuesta basándose en el curso de la conversación. Esto requiere mucha atención y deja poco margen para la respuesta en sí.

¡Bienvenido a la ingeniería de contexto!

Estás en el umbral de pasar de ingeniero de prompts a ingeniero de contexto. La idea es adaptar dinámicamente el contexto (prompt) para que solo queden las partes relevantes para la siguiente respuesta. Y este es el gran momento de las plantillas de prompt.

Todo lo que pueda ser útil para la siguiente respuesta en la situación actual de la conversación debe entrar; todo lo demás, fuera.

Agentes de información

Si estás trabajando en un agente que solo debe proporcionar información, tiene sentido poner a disposición únicamente la parte realmente relevante de la base de conocimientos. Por lo tanto, primero haz que el agente inicie una llamada a una función en la que se recupere la parte correspondiente de la base de conocimientos.

Con bases de conocimientos más pequeñas, podrías simplemente permitir la selección de una lista de temas; con bases de conocimientos muy grandes, necesitas un sistema RAG.

Luego, incluye el documento sobre el tema en el prompt a través de la plantilla. Y así, el agente puede concentrarse completamente en la pregunta real.

Agentes transaccionales

Si tu agente debe seguir un proceso complejo, deberías dividirlo en fases. Cambia entre las fases individuales mediante llamadas a funciones.

💡Esto resuelve muchos problemas de una vez:
  • atención total en las fases individuales
  • muy alta fidelidad al proceso: se ciñe exactamente a las instrucciones
  • el proceso puede ser controlado de forma determinista: el agente no puede simplemente saltarse fases
  • las fases individuales se pueden optimizar y probar de forma independiente, sin influir en otras fases
  • no solo mejores respuestas sino también más rápidas gracias a un contexto más pequeño
  • su agente puede crecer sin límites

Ejemplo de plantilla de prompt

# Rol
Eres un bot de pedidos telefónicos en GreatProducts.
 
# Proceso general
Guías al cliente a través del proceso de pedido:
- Saludo
- Registro de la cesta de la compra
- Registro de los datos del cliente
- Registro de los datos de pago
- Despedida
Concéntrate completamente en la tarea actual.
 
# Tarea actual
{{#if !temp.fase}}
Saluda al cliente.
Dile al cliente que primero tomaremos nota de los artículos deseados y, al mismo tiempo, activa la función "Nueva_cesta_compra"
@Nueva_cesta_compra Crea una nueva cesta de la compra para el registro del pedido
{{#elif temp.fase===10}}
Pregunta al cliente por los artículos deseados
….
Cuando se hayan registrado todos los artículos, di que ahora necesitas los datos del cliente y, al mismo tiempo, activa la función "Registrar_datos"
@Registrar_datos Prepara el registro de los datos del cliente.
{{#elif temp.fase===20}}

{{#elif temp.fase===30}}
….
{{#elif temp.fase===40}}
Despide al cliente y finaliza la conversación.
{{/if}}
 
#FAQ
P: ¿Por qué?
R: ¡Porque sí!
 
@colgar finaliza la conversación

Explicación

Tu defines en cada fase una función que lleva al agente a la siguiente fase. Dentro de esta función, estableces el campo temp.fase al valor de la siguiente fase.

¿No se crea así un hueco extraño entre las fases? No, en absoluto.

El agente prepara verbalmente al cliente para la nueva fase. Después de eso, el agente no espera una reacción del cliente, sino que reacciona inmediatamente al resultado de la llamada a la función con el prompt modificado, de modo que comienza sin problemas en la siguiente fase, sin que se produzca una pausa en la conversación.

Las declaraciones de funciones también se muestran y ocultan a través de la plantilla, de modo que el agente solo ve las funciones relevantes en cada momento. Eso marca una gran diferencia.

Dado que cambias dinámicamente el prompt durante la conversación, asegúrate de que se mantenga suficiente contexto alrededor de las fases para que el historial de la conversación siga teniendo sentido con el nuevo prompt. En el ejemplo, solo se cambia dinámicamente la sección # Tarea actual. La descripción general del proceso y las preguntas frecuentes, sin embargo, permanecen igual.