# Configuración del agente de IA
## Comportamiento adaptativo
### Temas de conversación
Es posible definir varios temas de conversación para los que se proporcione información de contexto adicional al agente.
Por cada tema de conversación podrá definir:
- Id. Un identificador del tema que puede usarse para indicarle al agente que inicie con un tema en específico
dependiendo del canal desde el cuál se empiece la conversación.
- Título. Es el título descriptivo del tema, que le servirá al agente para automáticamente determinar si corresponde al contexto de la conversación.
- Contexto. Información adicional específica al tema que el agente podrá usar para responder mejor, puede insertar contenido web indicando la ```{{url}}```entre llaves o información desde documentos en pdf.
#### Saludos del tema
Una vez creado un tema, también es posible definir varios saludos que pueden incluir preguntas preparadas para cada uno de ellos.
Los saludos y sus preguntas preparadas solo están disponibles en la interfaz de chat web y widget.
Para definir un saludo, solo escríbalo y pulse "Agregar", luego para administrar las preguntas preparadas de ese saludo presione "Opciones".
Podrá definir: Pregunta y su correspondiente respuesta.
#### Comentarios
Cuando a través de la interfaz Web se inicie una conversación a la que se le ha indicado un determinado Id de tema,
se le mostrará al usuario alguno de los saludos configurados al tema, y si para ese saludo además preparó preguntas,
estas aparecerán como "botones", si el usuario presiona alguno de ellos obtendrá la respuesta que hubiese preparado.
Si solo definió preguntas, pero no respuestas, el agente responderá usando la IA.
Ejemplo:
Suponga una empresa que vende maquinaria agrícola, podría definir temas de conversación como "tractores" o "sistemas de riego".
Para cada tema, sería también posible definir contexto adicional (para que el agente esté mejor preparado para responder) y
saludos (en el caso de sistemas de riego) como: "¿Qué tipo de sistema de riego buscas?"
Del mismo modo, podría configurar una respuesta preparada para la pregunta "¿Qué tipo de sistema de riego buscas?"
que se le entregaría al usuario sin consumir créditos IA.
### Detección de intención
Puede definir varias intenciones posibles que el usuario podría tener al interactuar
con el agente para que por cada una de ellas se utilice una herramienta externa.
Ejemplos de intenciones: Consultar información, agendar una cita, buscar un producto, etc.
El agente evaluará el contexto y memoria conversacional para determinar si hay definida
alguna intención que corresponda con la interacción del usuario y de ser así, ejecutará la herramienta apropiada
y devolverá una respuesta al usuario.
Al agregar una intención encontrará los siguientes campos:
#### Detección
Esta información le servirá al agente para determinar si es la intención correcta y para recabar
la información en la conversación que deberá enviar a la herramienta configurada.
- Id. Una clave o identificador para que el agente distinga con menor ambiguedad entre intenciones.
- Descripción. La descripción de lo que el usuario quiere o necesita para que el agente pueda evaluar.
- Instrucciones. Contexto adicional necesario y sobretodo los datos que deben recopilarse.
---
Ejemplo de una configuración de id, descripción e instrucciones para agendar citas en un calendario de V12:
| Campo | Valor |
|--------------|-----------------------------------------------------------------------|
| Id: | agendar-cita |
| Descripción: | Agendar una cita médica |
| Instrucciones: | Incluir los siguientes datos:
|
| | - **calendar_id**: 0122542125964ABC (valor constante)
|
| | - **type**: "Video conferencia"
|
| | - **start**: Fecha y hora solicitados por el usuario (formato yyyy-MM-dd HH:mm)
|
| | - **caption**: Nombre completo, edad, teléfono, correo y cualquier información relevante
|
| | - **event_id**: Identificador de una cita médica agendada previamente para actualizarla si está disponible
|
No puedes agendar una cita si no tienes el nombre completo y edad del usuario.
---
#### Herramienta
Una vez que el agente ha identificado la intención, ejecutará la herramienta indicada según
el [Protocolo de integración](https://docs.induxsoft.net/es/iae/agentes/protocolo-integracion.md), para lo que requiere los siguientes datos:
- Punto final (endpoint). Es la Url que expone la herramienta y a la que se realizará una solicitud POST a través de HTTP
- Encabezado (Authorization). Aquí puede establecer un token o en general cualquier dato secreto
de autenticación que requiera el servicio web de la herramienta. Por ejemplo: ```Bearer ```
- Parámetros. Puede establecer una lista de pares (clave/valor) que serán incluidos en la solicitud a la herramienta.
- Requerir inicio de sesión. Si habilita este control (true), la herramienta solo se ejecutará en caso de que se haya integrado la identificación del usuario (sesión) y podrá definir el mensaje que el agente responderá si no se cumple esta condición (en el cual usualmente se invita a iniciar sesión).
#### Respuesta
Tras la invocación HTTP, la respuesta puede ser procesada de las siguientes maneras:
- Procesar con la IA. La respuesta será procesada por la IA, pudiendo configurarse lo siguiente:
- Prompt. Estructura y contenido del prompt que usa la IA para procesar la respuesta de la herramienta.
- Modelo subyacente. Permite elegir el LLM que mejor se ajuste a sus requerimientos.
- Ejecutar intención (una sola vez o varias veces). Define si la herramienta solo puede ejecutarse una vez o varias.
- Agregar a memoria de trabajo y etiqueta. Si habilita este control (true), el resultado proporcionado en la herramienta se
guardará como parte de la memoria junto al texto indicado en etiqueta, esto permite por ejemplo preservar detalles que el LLM
no considera relevantes en este momento para dar una respuesta al usuario, pero que en el futuro de la conversación podrían ser útiles.
- Responder el texto sin cambios. Cualquier respuesta del servicio HTTP será entregada al usuario tal cual, esto es útil cuando por ejemplo el sistema al que se ha enviado la solicitud responde de manera textual.
- Continuar el hilo de la conversación. El agente seguirá conversando sin considerar la respuesta obtenida de la herramienta ni informar nada al usuario. Este escenario es útil cuando por ejemplo se han recabado los datos necesarios para dar de alta un lead y no es necesario informar al usuario nada.
### Identificación del usuario
Este mecanismo permite validar un token (que podría representar una sesión) recibido por el agente a
través de la solicitud HTTP a un punto final (url) preparado para efectuar esta tarea según el [protocolo de integración](https://docs.induxsoft.net/es/iae/agentes/protocolo-integracion.md)
Campos:
- Punto final de validación de sesión de usuario. Aquí debe indicar una url que cumpla con lo previsto por el [protocolo de integración](https://docs.induxsoft.net/es/iae/agentes/protocolo-integracion.md)
- Encabezado (Authorization). Indique aquí el contenido del encabezado tal como se enviará al punto final
- Habilitar opción de inicio de sesión. Si activa este switch, la interfaz web proporcionará un vínculo para iniciar sesión
- Url de inicio de sesión. Es el destino al que se dirigirá al usuario cuando intente iniciar sesión. Es indispensable que la página indicada aquí redirija nuevamente a la url del agente incluyendo el parámetro ```user_sid```
- Punto final de cierre de sesión. Es la url que recibirá una solicitud (post) si el usuario presiona en el vínculo de cierre de sesión