Ejemplo: Habilidad imagen del día
Podemos llevar a un siguiente nivel nuestras habilidades potenciándolas con pasos que utilicen un servicio LLM consiguiendo así un entendimiento y compresión mucho mayores. En Ainhoa podemos hacerlo con la insercción de pasos de tipo Llamar LLM.
En este ejemplo mostraremos la imagen del día de la NASA obteniendo los datos mediante una llamada HTTP y posteriormente pidiendole a nuestro servicio LLM que interprete el resultado y nos proporcione la imagen e información asociada como respuesta.
Crear la habilidad
Lo primero que debemos hacer es crear la habilidad. Proporcionaremos los siguientes datos en la ventana de creación:
Campo | Descripción | Valor |
---|---|---|
Título | Nombre de la habilidad. Preferiblemente en minúsculas y sin espacios. | nasa_picture_of_the_day |
Descripción | Breve descripción de la habilidad. Debe ser proporcionada en cada uno de los idiomas soportados. | Usa esta función cuando el usuario quiera saber cual es la imagen astronómica del día de la NASA. |
Tipo | Tipo de habilidad. Búsqueda o diálogo. | Diálogo |
Idiomas | Lista de idiomas soportados por la habilidad. | Inglés y español |
Etiquetas | Lista de etiquetas relacionadas con la habilidad. | |
Modo de acceso | Selecciona el modo de acceso a la habilidad. Acceso público o lo miembros. | Acceso público |
Miembros | Lista de miembros que tienen acceso a la habilidad y sus privilegios asociados. |
Podemos ver mas información de como crear una habilidad en éste enlace: Como crear una habilidad.
Configurar las intenciones
Para que nuestra habilidad pueda identificar la intención del usuario debemos proporcionarle una lista de frases de ejemplo que el usuario podría utilizar para que la habilidad aprenda a identificar la intención.
Para ello iremos a la tarjeta de Intenciones de arranque en la barra lateral y agregaremos algunas frases. Cuantas mas frases diferentes agregemos mejor podrá nuestro bot identificar la intención. Debemos proporcionar frases en todos los idiomas que tengamos habilitados.
En nuestro caso hemos agregado las siguientes intenciones:
Tienes más información sobre la barra lateral en el siguiente enlace: Barra lateral.
Definir variables
A veces en nuestras integraciones con otros sistemas necesitaremos proporcionar información adicional como pueden ser claves de acceso, api keys, etc. Esta información la podemos especificar utilizando las variables. En este ejemplo haremos una llamada a una API que proporciona la NASA para poder obtener información sobre la imagen del día pero necesitamos proporcionar una API KEY.
En la barra lateral disponemos la tarjeta Variables que nos permitirá poder almacenar todas las variables que necesitemos en nuestra habilidad simplemente proporcionando un nombre y su valor.
Dichas variables podrán ser utilizadas en nuestros pasos con la siguiente sintaxis: {{variables.name}}
.
Disponemos de más información sobre variables en el siguiente enlace: Barra lateral.
Puedes obtener tu Api Key para poder utilizar las APIs de la NASA y revisar el catálogo de APIs disponibles en el siguiente enlace: NASA Open APIs.
Definir los pasos
A continuación definiremos los pasos necesarios para poder obtener la información procedente de la API y proporcionarla como respuesta en el chat. En este ejemplo, necesitaremos realizar una llamada HTTP para obtener la información en formato Json y posteriormente le proporcionaremos dicha respuesta a nuestro servicio LLM para que la procese y nos cree una respuesta que podamos enviar al usuario.
Por tanto necesitaremos los siguientes pasos:
- Enviar un evento para informar que estamos obteniendo la información.
- Realizar la llamada HTTP para obtener la información.
- Llamar al servicio LLM para que interprete los resultados y cree una respuesta.
Toda la información sobre como crear los diferentes pasos está en el siguiente enlace: Pasos.
Agregaremos dichos pasos en la pestaña Conversación de la siguiente manera:
1. Evento de información
Creamos un paso de tipo Evento para informar al usuario que vamos a pedir la información que nos está solicitando. Debemos proporcionar el texto del evento en todos los idiomas disponibles.
Este paso es opcional, podríamos pasar directamente a hacer la consulta sobre la información pero es una buena práctica mantener al usuario informado de qué se está haciendo en cada momento.
2. Hacer la petición al servicio externo
A continuación hacemos la llamada al servicio externo que nos va a proporcioner la información que necesitamos. Para ello añadimos un paso de tipo Llamar API e indicamos que la petición es de tipo GET. Proporcionamos la url del servicio y añadimos nuestra variable que guardamos anteriormente y que contiene la Api Key necesaria. En este caso no necesitamos agregar ninguna cabecera adicional.
https://api.nasa.gov/planetary/apod?api_key={{variables.apikey}}
Indicamos por último que el resultado de la petición lo almacene en una entidad llamada response.
3. Llamar al servicio LLM para generar la respuesta
Este servicio nos proporciona una respuesta de tipo Json que contiene diferentes campos con información asociada a la imagen como el título, descripción, copyright, etc.
En nuestro ejemplo, vamos a usar un servicio LLM para que procese dicha respuesta Json y extraiga la información que queramos mostrarle al usuario. Para ello debemos agregar un paso de tipo Llamar LLM.
En este paso debemos seleccionar nuestro servicio de tipo LLM que queremos usar, éste debe estar registrado previamente en Ainhoa. Estableceremos el número de tokens máximo que queremos utilizar en la respuesta y la temperatura.
La respuesta del paso anterior la tenemos disponible utilizando la siguiente sintaxis: {{@response:body.value}}
. Con ésta respuesta debemos generar un prompt para darle las instrucciones a nuestro servicio LLM para que interprete la respuesta Json y nos proporcione otra en formato texto que podamos enviar al usuario.
Utilizaremos el siguiente prompt:
Usa el siguiente json para contestar.
Menciona el título utilizando el campo title.
Comenta la descripción de la imagen utilizando la información del campo explication.
Proporciona la imagen poniendo lo siguiente: ![Titulo de la imagen](url de la imagen).
Menciona también el copyright si aparece en el json.
Proporciona el enlace de la foto en alta definición utilizando el campo hdurl.
json:
{{@response:body.value}}
Como puedes ver, le proporcionamos instrucciones claras y sencillas y además le adjuntamos el Json utlizando la entidad que guardamos en el paso anterior.
Por último guardamos la respuesta que nos proporcione el servicio LLM en una nueva entidad llamada llmresponse.
Ahora vamos a agregar un nuevo paso para poder enviarle la respuesta del servicio LLM al usuario. Creamos un paso de tipo Decir y escribirmos directamente la respuesta que guardamos anteriormente de la siguente manera: {{@llmresponse.value}}
.
Toda la información sobre el paso Llamar a LLM está en el siguiente enlace: Llamar LLM.
Asegúrate que has guardado tus cambios haciendo click en el botón Guardar.
Probar habilidad
Ya podemos probar nuestra habilidad, lo podemos hacer utilizando la pestaña Probar habilidad.
Toda la información sobre la pestaña de Probar habilidad está en el siguiente enlace: Probar habilidad.
También podemos probar la habilidad asignandola a uno de nuestros bots y usar la pestaña Probar bot o directamente utilizando el chat de nuestro bot.
Listo!, ya tenemos una hablidad nueva para nuestros bots que nos muestre cual es la imagen del día proporcionada por la NASA. 🪐