# Funciones Inteligentes

> Las herramientas que un agente de IA puede ejecutar

## Vista general del módulo

Un agente de IA, por sí solo, únicamente conversa. Las funciones inteligentes son las **herramientas** que le entregas para que además haga cosas: llevarse un dato de la conversación, mover al usuario a otro punto del flujo, consultar a un asistente especializado o llamar a un servicio externo. El modelo decide cuándo llamar cada función leyendo la descripción que tú escribes; por eso esa descripción es la parte más importante de la configuración.

El módulo está en **Configuración > Agentes IA > Funciones**.

![Lista de funciones inteligentes](https://docs.audara.io/funciones-inteligentes/imagenes/funciones-lista.jpg)

- **1.** Crea una función nueva con el botón (+) del encabezado.
- **2.** Busca una función por su nombre.
- **3.** Filtra por categoría.
- **4.** Filtra por tipo.
- **5.** Cada fila lleva el ícono y el color de su tipo. Haz clic en el nombre para abrir la función.
- **6.** El menú de más opciones (⋮) de cada fila permite editarla o eliminarla.

A la derecha de cada nombre verás **Tipo / Categoría**, que es como se organiza el módulo cuando ya tienes muchas funciones.

## Los tipos de función

El tipo define qué pasa cuando el modelo llama la función. Se elige al crearla y cada uno tiene su propio color en la lista.

- **Acción**: No recibe ni devuelve datos: le sirve al bot para avisar que algo ocurrió. Es la que usas para mover la conversación, por ejemplo pasar a un asesor humano, ir a otro paso del flujo o terminar el chat. Lo que ocurre después lo defines en el flujo del agente.
- **Captura**: Le pide al modelo datos concretos de la conversación (un documento, una fecha, una sede) y los guarda en variables del chat para usarlos más adelante.
- **Asistente**: Le pasa la pregunta de la persona a un asistente de OpenAI que tú ya configuraste, y devuelve su respuesta al bot para que la comunique.
- **MCP**: Le ofrece al bot una o varias herramientas de un servidor MCP conectado en Integraciones, con los parámetros que ese servidor declara.
- **Conocimiento**: Busca la respuesta en una base de conocimiento tuya y le devuelve al bot los fragmentos que más se parecen a lo que preguntó la persona.

> **Nota**
> Las funciones inteligentes no reemplazan al prompt del agente: lo complementan. El prompt dice cómo se comporta el bot; las funciones dicen qué puede hacer.

> **Importante**
> Si en tu lista aparece una función de tipo **Respuesta**, es de una versión anterior. Ese tipo ya no se ofrece al crear funciones y el modelo nunca la llama, así que la puedes eliminar sin afectar nada.

## Crear una función

Presiona el botón (+) en el encabezado de la lista. Los campos obligatorios están marcados con un asterisco (*).

![Nueva función](https://docs.audara.io/funciones-inteligentes/imagenes/funciones-nueva.jpg)

*Nueva función*

- **1.** Nombre con el que el bot va a conocer la función.
- **2.** Categoría a la que pertenece.
- **3.** Tipo de función. Según lo que elijas aparecen abajo los campos propios de ese tipo.
- **4.** Descripción que lee el modelo para decidir cuándo llamarla.
- **5.** Crea una categoría nueva sin salir del formulario.
- **Nombre***: Solo acepta letras, números y guion bajo, sin espacios ni tildes: es el nombre técnico con el que el modelo llama la función. No puede repetirse; si el nombre ya existe, el formulario te lo avisa. Escoge nombres que se entiendan solos, como `agendar_cita` o `escalar_a_humano`.
- **Categoría***: Sirve para organizar la lista. No cambia el comportamiento de la función.
- **Tipo***: Qué hace la función cuando el bot la llama. Ver [Los tipos de función](https://docs.audara.io/funciones-inteligentes/#tipos).
- **Qué hace esta función (prompt)**: La descripción que lee el modelo. Ver [Cómo escribir el prompt](https://docs.audara.io/funciones-inteligentes/#prompt). Las funciones de tipo MCP no tienen este campo, porque ahí cada herramienta lleva su propia descripción.

## Categorías

Las categorías agrupan las funciones para poder filtrarlas. Se administran desde el botón (+) que está al lado del campo **Categoría**.

![Lista de categorías](https://docs.audara.io/funciones-inteligentes/imagenes/funciones-categorias.jpg)

*Lista de categorías*

- **1.** Busca una categoría por su nombre.
- **2.** El menú (⋮) de cada categoría permite renombrarla o eliminarla.
- **3.** Escribe el nombre de la categoría nueva.
- **4.** Créala.

La categoría predeterminada del sistema no tiene menú (⋮): no se puede renombrar ni eliminar, porque es la que se asigna a toda función nueva.

## Cómo escribir el prompt

El campo **Qué hace esta función (prompt)** no es una nota interna: es el texto que el modelo lee, junto con el de todas las demás funciones, para decidir cuál llamar en cada turno. Si el bot no llama una función cuando debería, o la llama de más, este texto es lo primero que hay que corregir.

> - **Buenas prácticas**
>   Escribe **cuándo** llamarla, no qué hace por dentro: "Llama esta función cuando la persona pida hablar con un asesor humano".
> - Di también cuándo **no** llamarla. Una sola frase de exclusión evita la mayoría de las llamadas de más.
> - Si la función necesita datos, pide que los confirme antes: "Confirma los datos con la persona antes de llamarla".
> - Una función por intención. Dos funciones con descripciones parecidas se confunden entre sí.

## Funciones de captura

Una función de captura le dice al modelo qué datos extraer de la conversación. Al elegir el tipo **Captura** aparece la sección **Campos de captura**.

![Función de tipo Captura](https://docs.audara.io/funciones-inteligentes/imagenes/funciones-tipo-captura.jpg)

- **1.** Tipo **Captura**.
- **2.** Los campos que ya definiste aparecen listados aquí.
- **3.** Abre el editor de campos con **Editar capturas**.

Cada campo se configura por separado:

![Campos de captura](https://docs.audara.io/funciones-inteligentes/imagenes/funciones-campos-captura.jpg)

*Campos de captura*

- **1.** Nombre del dato.
- **2.** Descripción del dato para el modelo.
- **3.** Opciones permitidas, si el dato solo puede tomar ciertos valores.
- **4.** Limpieza del valor antes de guardarlo.
- **5.** Expresión regular con la que se valida el dato.
- **Nombre***: Nombre del dato, con las mismas reglas que el de la función: letras, números y guion bajo. No puede repetirse dentro de la misma función.
- **Descripción***: Qué es este dato, en palabras que el modelo pueda seguir. Es lo que lee para saber qué debe extraer de la conversación.
- **Opciones**: Lista cerrada de valores válidos. Si la llenas, el modelo solo puede responder con uno de esos valores. Útil para sedes, tipos de servicio o categorías de un caso.
- **Omitir espacios**: Le pide al modelo que entregue el valor sin espacios. Útil para documentos o placas.
- **Convertir en mayúscula**: Le pide al modelo que entregue el valor en mayúsculas.
- **Regex**: Expresión regular con la que se valida el dato. Viene con `^.+$`, que solo exige que no esté vacío. Cámbiala cuando el dato tenga un formato fijo, por ejemplo `^[0-9]{6,12}$` para un documento.

> **Nota**
> Todos los campos de captura se le piden al modelo como obligatorios y se guardan como texto. El valor de cada campo se conecta con una variable del chat en el flujo del agente, no aquí: eso se hace en el nodo **Smart Function**, en el campo **Nombre de la variable**.

## Funciones de asistente

Una función de asistente le pasa la pregunta de la persona a un asistente de OpenAI que ya tienes creado, y le devuelve la respuesta al bot para que la comunique con sus propias palabras. Sirve para separar un tema que necesita su propio conocimiento, como el catálogo de productos, sin cargarlo todo en el prompt del agente.

![Función de tipo Asistente](https://docs.audara.io/funciones-inteligentes/imagenes/funciones-tipo-asistente.jpg)

- **1.** Integración de OpenAI que se va a usar.
- **2.** Asistente de esa cuenta al que se le hará la consulta.
- **Integración OpenAI***: La integración con OpenAI configurada en **[Integraciones](https://docs.audara.io/integraciones/)**. Al elegirla se cargan los asistentes de esa cuenta.
- **Asistente OpenAI***: El asistente que responderá. Se recibe la pregunta tal como la escribió la persona.

## Funciones MCP

Una función MCP le entrega al bot herramientas de un servidor MCP que hayas conectado en **Integraciones > MCP**. Una sola función puede llevar varias herramientas, y todas se ejecutan en el mismo paso del flujo.

![Función de tipo MCP](https://docs.audara.io/funciones-inteligentes/imagenes/funciones-tipo-mcp.jpg)

- **1.** Servidor MCP del que se toman las herramientas.
- **2.** Herramientas seleccionadas. Se agregan buscándolas por nombre y se quitan desde la (x) de cada etiqueta.
- **3.** Cada herramienta seleccionada tiene su propio panel, que se abre con la flecha.

Dentro del panel de una herramienta:

![Herramienta MCP](https://docs.audara.io/funciones-inteligentes/imagenes/funciones-mcp-herramienta.jpg)

*Herramienta MCP*

- **1.** Parámetros que el modelo tendrá que llenar al llamar la herramienta, con su tipo y si son obligatorios.
- **2.** Descripción que lee el bot para decidir cuándo llamarla.
- **Servidor MCP***: El servidor configurado en Integraciones. Si lo cambias, se borra la selección de herramientas, porque los nombres pertenecían al servidor anterior.
- **Herramientas***: Las herramientas que esta función le ofrece al bot. Si el servidor no tiene herramientas cargadas, hay que cargarlas primero desde **Integraciones > MCP**.
- **Parámetros**: Los declara el servidor MCP, no se editan aquí. Su descripción viene del servidor, así que puede estar en otro idioma.
- **Descripción para el bot**: Viene rellena con la descripción del servidor, escrita para otro asistente. Reescríbela en tus palabras y con tus reglas si el bot no está llamando la herramienta cuando debería.

> **Importante**
> Si el servidor deja de ofrecer una herramienta que ya tenías seleccionada, esta se queda en la lista marcada como no disponible en vez de desaparecer. Quítala de la selección o vuelve a cargar las herramientas del servidor: mientras esté ahí, el bot la sigue viendo y falla al llamarla.

## Funciones de conocimiento

Una función de conocimiento conecta al bot con una de tus bases de **Configuración > Agentes IA > Conocimiento**. Cuando el modelo la llama, la función busca en esa base y le devuelve los fragmentos que más se parecen a la pregunta; con eso el bot arma su respuesta. Es la forma de que el bot conteste sobre tus manuales, tus políticas o tus preguntas frecuentes sin que tengas que meter todo eso en el prompt.

![Función de tipo Conocimiento](https://docs.audara.io/funciones-inteligentes/imagenes/funciones-tipo-conocimiento.jpg)

- **1.** Base en la que se va a buscar.
- **2.** Cuántos fragmentos recibe la IA en cada consulta.
- **Base de conocimiento***: Solo aparecen las bases que tengan activada la búsqueda con IA. Si la lista sale vacía, primero crea una en **Conocimiento**; si la opción te aparece bloqueada ahí, escríbele a soporte.
- **Fragmentos por consulta**: Cuántos pedazos de la base recibe el modelo cada vez que consulta. Vienen en 3. Más fragmentos le dan más contexto, pero se quedan en la conversación y se suman al costo de todos los turnos siguientes, así que súbelo solo si notas que le falta información para responder.

> **Buena práctica**
> En el prompt de la función dile al bot que le pase la pregunta tal como la escribió la persona. La búsqueda funciona mejor con las palabras originales que con un resumen.

## Cómo se usan en un agente de IA

Crear una función no la pone a funcionar. Una función existe para el bot solo cuando se la asignas al nodo **[Smart Agent](https://docs.audara.io/smart-agent/)** de un agente de IA, en **Agentes IA**.

![Nodo Smart Agent](https://docs.audara.io/funciones-inteligentes/imagenes/funciones-smartagent.jpg)

*Nodo Smart Agent*

- **1.** **Funciones**: las que este agente puede llamar. Son las únicas que el modelo ve.

Por cada función que asignas, el flujo dibuja debajo del Smart Agent un nodo **Smart Function**. Ese nodo es el camino que toma la conversación cuando el modelo llama esa función, y desde ahí sigues armando el flujo con normalidad.

![Smart Agent y sus funciones en el flujo](https://docs.audara.io/funciones-inteligentes/imagenes/funciones-flujo.jpg)

*Smart Agent y sus funciones en el flujo*

- **1.** El nodo **Smart Agent**, del que cuelgan todas sus funciones.
- **2.** Un nodo **Smart Function** por cada función asignada.
- **3.** El ícono del nodo es el del tipo de la función, en el color de ese tipo, para saber de un vistazo qué hace ese paso. Un nodo al que todavía no le has elegido función no muestra ninguno.

Al abrir un nodo Smart Function configuras cómo se comporta esa función dentro de este agente:

![Nodo Smart Function](https://docs.audara.io/funciones-inteligentes/imagenes/funciones-nodo-funcion.jpg)

*Nodo Smart Function*

- **1.** Función a la que corresponde este nodo, entre las asignadas al Smart Agent.
- **2.** Otras funciones que deben haberse llamado antes que esta.
- **3.** La descripción de la función, solo de lectura. Se edita en el módulo Funciones.
- **4.** Mensaje que el bot envía mientras ejecuta la función.

Si la función es de tipo **Captura**, este nodo muestra además cada campo de captura con un campo **Nombre de la variable**: ahí escribes en qué variable del chat queda guardado ese dato. También aparece un interruptor para pedirle al modelo que confirme los datos con la persona antes de llamar la función.

> **Nota**
> Las mismas funciones sirven para agentes de chat y de voz. Un agente solo puede llamar las funciones que tenga asignadas en su nodo Smart Agent.

## Editar o eliminar una función

Haz clic en el nombre de la función para abrirla, o usa el menú (⋮) de su fila. Ten en cuenta que la misma función puede estar asignada a varios agentes de IA: al cambiar su descripción, cambia el comportamiento de todos ellos. Si eliminas una función que un agente está usando, revisa ese flujo antes de publicarlo.
