Saltar al contenido principal

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.

Nasta skillNasta skill

Crear la habilidad

Lo primero que debemos hacer es crear la habilidad. Proporcionaremos los siguientes datos en la ventana de creación:

CampoDescripciónValor
TítuloNombre de la habilidad. Preferiblemente en minúsculas y sin espacios.nasa_picture_of_the_day
DescripciónBreve 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.
TipoTipo de habilidad. Búsqueda o diálogo.Diálogo
IdiomasLista de idiomas soportados por la habilidad.Inglés y español
EtiquetasLista de etiquetas relacionadas con la habilidad.
Modo de accesoSelecciona el modo de acceso a la habilidad. Acceso público o lo miembros.Acceso público
MiembrosLista de miembros que tienen acceso a la habilidad y sus privilegios asociados.
info

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:

Nasa skill bootstrap intentsNasa skill bootstrap intents

info

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.

Nasa skill variablesNasa skill variables

Dichas variables podrán ser utilizadas en nuestros pasos con la siguiente sintaxis: {{variables.name}}.

info

Disponemos de más información sobre variables en el siguiente enlace: Barra lateral.

tip

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:

  1. Enviar un evento para informar que estamos obteniendo la información.
  2. Realizar la llamada HTTP para obtener la información.
  3. Llamar al servicio LLM para que interprete los resultados y cree una respuesta.
info

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.

Nasa skill step 1Nasa skill step 1

tip

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.

Nasa skill step 2Nasa skill step 2

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}}.

Nasa skill step 3 and 4Nasa skill step 3 and 4

info

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.

info

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. 🪐

Nasta skill testNasta skill test