Guia de Creacion de Apps de IA para Developers
Guia de Creacion de Apps de IA para Developers
Guia de Creacion de Apps de IA para Developers
de aplicaciones
de IA para
desarrolladores
Segunda edición
Crea tu primera aplicación
conver asacional con Microsoft
Azure AI
Elaine Chang y Darren Jeford
INFORME
SEGUNDA EDICIÓN
Guía de creación de
aplicaciones de IA
para desarrolladores
Crea tu primera aplicación
conversacional con Microsof Azure AI
978-1-492-08058-9
[LSI]
Índice
iii
Prueba la
Inteligencia Artificial
Presta un mejor servicio
a tus clientes con
soluciones dotadas de
Inteligencia Artificial.
Crea un chatbot.
Entrena e implementa
modelos de machine
learning. Extrae
conocimientos de tu
contenido. Crea
aplicaciones
inteligentes.
Explora gratis
12 servicios de
Inteligencia Artificial
durante 12 meses
con tu cuenta.
Empieza gratis >
Obtén ayuda
con tu proyecto
Habla con un
especialista en ventas >
v
Agradecimientos
viii | Prólogo
Guía de creación
de aplicaciones de IA
para desarrolladores
Introducción
En este libro analizamos los requisitos para aplicar soluciones de
Inteligencia Artificial debidamente probadas a los problemas
cotidianos. Para ayudarte a conocer las posibilidades de la
Inteligencia Artificial, te enseñaremos a crear un asistente virtual: una
aplicación de IA conversacional capaz de entender el lenguaje,
percibir grandes cantidades de información y responder de forma
inteligente. Durante el proceso, compartiremos los numerosos
recursos y funcionalidades de la IA que están disponibles para los
desarrolladores.
A continuación ofrecemos un resumen del contenido de este libro:
«La intersección de los datos, la IA y el cloud»
En esta sección se explica la base tecnológica de este libro y por
qué estas tecnologías se ofrecen cada vez más en el cloud.
«Microsof Azure AI»
En esta sección se presenta la plataforma Microsoft Azure IA con
una variedad de servicios, infraestructura y herramientas que
permiten a los desarrolladores crear aplicaciones y agentes de IA
y añadir funciones de minería del conocimiento y machine
learning. Este libro se centra en las aplicaciones de IA
conversacional y proporciona referencias a recursos adicionales
para otros ámbitos de Azure IA.
«IA conversacional»
En esta sección se explica la evolución del procesamiento del
lenguaje natural, el servicio Language Understanding de
Microsoft (anteriormente denominado LUIS) y el ecosistema Bot
Framework, casos de uso comunes de la IA conversacional y el
ciclo de vida de desarrollo de las aplicaciones de
IA conversacional.
IA conversacional
El procesamiento del lenguaje natural (PNL) ofrece a los equipos la
capacidad de leer, comprender e inferir el significado del lenguaje
humano. Desde la década de los 50, los científicos informáticos han
estado trabajando en los desafíos del PLN, pero las limitaciones de
potencia informática y tamaños de los datos obstaculizaron los
avances en el procesamiento y análisis de componentes textuales,
sentimientos, partes del discurso y las distintas entidades que
conforman la comunicación en lenguaje natural.
Eso cambió en la década de 2010. Los avances en computación en el
cloud y machine learning, y la disponibilidad de grandes cantidades
de datos textuales y conversacionales de sistemas de mensajería,
redes sociales y webchats nos han permitido hacer grandes progresos
en PLN. Los avances en PNL han hecho posible que los equipos no
solo identifiquen las palabras en el texto, sino que también entiendan
el significado que hay detrás de esas palabras y las relaciones
entre ellas.
6 | IA conversacional
El PLN funciona analizando un gran cuerpo de texto generado por
una persona y transformándolo en datos legibles para una máquina.
El PLN identifica y extrae los principales metadatos del texto,
incluidos los siguientes:
Entidades
El PLN identifica entidades en el texto como personas, lugares
y cosas. Las entidades también pueden ser piezas de información
que requieran una extracción especial, como fechas y horas.
Relaciones
El PLN identifica cómo se relacionan las entidades a través de
información semántica.
Conceptos
El PLN extrae conceptos generales del cuerpo de texto que no
aparecen explícitamente. Por ejemplo, la palabra «excel» puede
devolver conceptos como «herramientas de productividad»
y «números», aunque estos términos no aparezcan en el texto. Se
trata de una herramienta muy potente para establecer conexiones
que pueden no parecer obvias a primera vista.
Sentimiento
El PLN puntúa el nivel de positividad o negatividad del texto.
Esto resulta útil, por ejemplo, para evaluar la opinión acerca de
un producto o servicio. O, en el contexto de atención al cliente,
esta funcionalidad sirve para determinar si la conversación se
debe pasar a una persona, tras detectar un valor de negatividad.
Emociones
Este es el análisis de sentimiento con mayor detalle. En este caso,
el PNL clasifica no solo lo «positivo» y lo «negativo, sino el
«enfado», la «tristeza» y la «alegría».
Palabras clave
El PLN extrae palabras clave y frases para usarlas como base
para la indexación, la búsqueda y la clasificación.
Categorías
El PLN crea una taxonomía jerárquica para el asunto de los datos
y coloca esta taxonomía en una categoría de alto nivel
(clasificación de texto). Esto es útil para aplicaciones como
recomendar contenido relevante, generar anuncios, ordenar
correos electrónicos y determinar la intención de un usuario.
En el pasado, es posible que hayas intentado simular las
funcionalidades del PLN mediante enfoques basados en reglas, como
expresiones regulares o
IA conversacional | 7
árboles de decisión, con los que resultaba muy difícil entender la
intención de las preguntas realizadas por una persona. O es posible
que utilizaras modelos de machine learning, que requerían acceso
a conocimientos especializados, grandes conjuntos de datos
y herramientas complejas, lo que limitaba su implementación
a únicamente empresas de gran tamaño que pudieran afrontar el
gasto.
Consideremos ahora dónde estamos hoy. Las API fáciles de usar en
el cloud proporcionan funcionalidades de PNL que permiten el uso
generalizado de la IA conversacional. Desde la aparición de las
herramientas de código abierto hasta la llegada de las API del cloud,
las funcionalidades de PLN que anteriormente estaban limitadas
a círculos académicos y la comunidad de investigación ahora están
disponibles para un público más amplio en todos los sectores.
Language Understanding
(llamado anteriormente LUIS)
Language Understanding, un servicio desarrollado por Microsoft,
permite a los desarrolladores crear aplicaciones que pueden tomar la
entrada del usuario en lenguaje natural y extraer información
estructurada, incluido el significado y la intención. Language
Understanding es un servicio basado en machine learning para crear
experiencias en lenguaje natural, que permite crear rápidamente
modelos personalizados listos para la empresa que mejoren
continuamente.
Con Language Understanding, puedes utilizar un modelo
preconfigurado (por ejemplo, el tiempo o el calendario), personalizar
uno existente o crear el tuyo propio desde cero. Un modelo empieza
con una lista de intenciones generales del usuario que representan las
tareas o las acciones que el usuario desea realizar, como «reservar un
vuelo», «programar una reunión» o «contactar con atención al
cliente». Después de identificar la intención, deberás proporcionar
frases, denominadas «enunciados», para la intención.
Posteriormente, tendrás que etiquetar los enunciados con detalles
específicos que desees que Language Understanding extraiga del
enunciado. Los datos que se extraen del enunciado son una entidad.
Una entidad representa información detallada que es relevante para
la conversación. Language Understanding reconoce y etiqueta las
entidades que se mencionan en la entrada del usuario para que puedas
escoger la acción específica que deseas realizar para responder a la
solicitud del usuario. Puedes definir tus propias entidades, como la
terminología específica del dominio, o extraer entidades comunes
preconfiguradas, como fechas y horas, nombres propios, mediciones
y números. Con los dominios preconfigurados, tendrás un amplio
conjunto de entidades y enunciados para categorías comunes como
calendario, ocio, comunicación, domótica, etc.
8 | IA conversacional
Language Understanding también permite a los desarrolladores
mejorar de forma continua la aplicación a través del aprendizaje
activo. Language Understanding almacena las consultas del usuario
y selecciona los enunciados de los que no está seguro.
A continuación, puedes revisar los enunciados, seleccionar la
intención y marcar las entidades para enunciados del mundo real.
De esta forma, el modelo de lenguaje se reentrena con más datos.
El servicio se integra con otras herramientas de IA en el cloud para
llevar el procesamiento del lenguaje natural y la comprensión
a aplicaciones, bots y servicios del Internet de las cosas (IoT).
A través de su Bot Framework, Microsoft incorpora Language
Understanding y otros servicios cognitivos para el desarrollo de bots.
IA conversacional | 9
de tus datos. Los desarrolladores pueden registrar y conectar sus bots
a los usuarios de Microsoft Teams y Web Chat, Facebook
Messenger, etc.
Para añadir más inteligencia a una aplicación de IA conversacional,
puedes añadir y personalizar modelos de API y servicios cognitivos
previamente entrenados, incluidas funciones de lenguaje, habla,
conocimiento y visión.
Bot Framework también proporciona un conjunto de aceleradores de
soluciones y plantillas para ayudar a crear experiencias de
conversación sofisticadas. El acelerador de soluciones de asistente
virtual reúne todos los componentes auxiliares y simplifica
enormemente la creación de un nuevo proyecto que incluya
intenciones de conversación básicas, integración de envíos, QnA
Maker, Application Insights y una implementación automatizada.
La solución Power Virtual Agents se basa en la plataforma Bot
Framework y proporciona una interfaz gráfica sin código para crear
experiencias conversacionales.
IA conversacional | 11
Asistente de voz en el vehículo
Los asistentes activados por voz integrados en los automóviles
proporcionan a los conductores y a los pasajeros la capacidad de
realizar operaciones comunes (como la navegación o la radio),
así como escenarios centrados en la productividad, como
cambiar la hora de una reunión si vas a llegar tarde, añadir
elementos a la lista de tareas y experiencias proactivas en las que
el automóvil puede sugerir tareas que se deben realizar en
función de eventos como arrancar el motor, volver a casa
o activar el piloto automático. Otros casos prácticos incluyen el
servicio de programación de un vehículo en función de las
preferencias del usuario para los proveedores de servicio, la
ubicación del vehículo, la disponibilidad de programación del
proveedor, la gravedad del problema, la preferencia de préstamo,
los horarios personales y de trabajo y otras muchas variables.
Esto es lo que se consigue cuando se incorporan los datos de un
proveedor de automoción e ilustra la experiencia totalmente
integrada posible gracias a la solución de asistente virtual.
Asistente para la hostelería
Un asistente virtual integrado en el dispositivo de una habitación
de hotel puede ofrecer una amplia selección de escenarios
centrados en la hostelería: ampliar una estancia, retrasar la salida
del hotel, servicio de habitaciones, servicios de conserjería
y búsqueda de restaurantes y lugares de interés. La aplicación se
puede vincular a una cuenta de productividad, lo que permite
ofrecer experiencias más sofisticadas, como servicio de
despertador, advertencias meteorológicas y patrones de
aprendizaje en todas las estancias.
Estos son algunos ejemplos de los tipos de aplicaciones de
IA conversacional en los que nos centraremos en este libro. Veamos
ahora el flujo de trabajo típico para desarrollar una aplicación de
IA conversacional.
12 | IA conversacional
Figura 2. Flujo de trabajo típico para desarrollar una
aplicación de IA conversacional
Diseñar
El desarrollo de un bot, como el desarrollo de sitios web
y aplicaciones, debe comenzar con un diseño que ofrezca una gran
experiencia. Cuando las personas interactuamos con los bots,
esperamos que entiendan lo que decimos, que la respuesta que
recibimos sea adecuada y que recibamos un servicio impecable.
Esperamos que, si dejamos a medias la conversación, el bot se
acuerde de dónde lo dejamos.
Tu bot representa tu marca, tus productos y los servicios de tus
clientes y empleados, por lo que es imprescindible empezar con un
enfoque centrado en el diseño que garantice que el objetivo del bot
satisfaga la necesidad explícita o latente de la persona a la que presta
servicio. Para diseñar una experiencia excelente, sugerimos las
siguientes prácticas recomendadas: investigar a los usuarios objetivo,
definir las identidades de los bots, crear los guiones de los escenarios
de bots, diseñar el flujo de la conversación y definir un plan de
evaluación, sin especificar los detalles de desarrollo técnico.
Para cada una de estas actividades de diseño, estas son las principales
preguntas que hay que plantearse:
Investigar a los usuarios objetivo
¿Quiénes son tus usuarios? ¿Cuáles son sus objetivos,
necesidades y expectativas? ¿Cuál es el contexto de su
interacción con el bot? ¿Cómo es su entorno? ¿Cómo les ayudará
el bot? ¿Qué servicios debe proporcionar el bot?
Definición de las identidades de los bots
¿Cómo debería ser tu bot (por ejemplo, un avatar)? ¿Cómo se
debería llamar? ¿Transmite el bot los valores de tu organización?
¿Cuál es la personalidad de tu bot? ¿Tu bot es un hombre o una
mujer? ¿Puede responder a preguntas no relacionadas con el
tema? ¿Qué tono de voz debe utilizar el bot? ¿Cómo gestionaría
el bot diferentes situaciones? ¿Cómo debe responder el bot (con
gestión proactiva, reactiva o basada en excepciones)?
IA conversacional | 13
Escenarios de guiones de bot
¿Cuál es el recorrido de los usuarios a los que se dirige el bot?
¿Qué debe hacer el bot y qué no? ¿Cuáles son los objetivos y las
prioridades de los casos de uso de tu bot?
Diseño del flujo de conversación
¿Qué flujos de conversación puedes esperar de tus casos de uso
principales? ¿Simples preguntas y respuestas, notificaciones
push, instrucciones paso a paso o interacciones más complejas?
Definición de un plan de evaluación
¿Cómo medirás el éxito? ¿Qué medidas deseas utilizar para
mejorar tu servicio y dónde debes insertar la instrumentación?
Antes de escribir el código, revisa las directrices de diseño de bots en
la documentación de Bot Framework de Microsoft para conocer las
prácticas recomendadas.
Bot Framework proporciona un conjunto de herramientas para la fase
de diseño, incluidas las siguientes:
14 | IA conversacional
Figura 3. Vista de un archivo .transcript en Bot Framework Emulator
Crear
Un bot es un servicio web de transferencia de estado representacional
(REST) que se comunica con el usuario enviando y recibiendo
mensajes y eventos desde interfaces de conversación como salas de
chat o widgets de Web Chat. Con Azure Bot Service y Bot
Framework de Microsoft, puedes crear bots en una gran variedad de
entornos de desarrollo y lenguajes. Puedes iniciar el desarrollo de tu
bot en el portal de Azure o usar una de las plantillas del SDK de Bot
Framework para el desarrollo local. Las plantillas admiten los
lenguajes C#, JavaScript y Python, y son compatibles con Java en la
versión preview inicial en el momento de escribir este documento.
Después de crear el bot básico, amplía su funcionalidad de la forma
que requiera tu diseño. Puedes añadir funcionalidades de PNL
mediante Language Understanding, añadir una base de conocimiento
para responder preguntas comunes mediante QnA Maker, añadir
funcionalidades para administrar flujos de conversación complejos y
varios dominios de conocimiento mediante la herramienta Dispatch
y añadir gráficos o menús mediante Tarjetas adaptables. Asimismo,
Microsoft proporciona herramientas de línea de comandos que te
ayudarán a crear, administrar y probar estos recursos de bot como
parte de un proceso de DevOps.
Puedes acceder a una gran variedad de ejemplos que muestran las
funciones conversacionales disponibles a través del SDK, incluidas
funciones de diálogo básicas
IA conversacional | 15
como los diálogos con varios turnos y funciones más avanzadas como
la mensajería proactiva y la autenticación.
Además, Microsoft proporciona una plantilla de asistente virtual más
avanzada, que se recomienda como punto de partida para crear una
experiencia conversacional más sofisticada. Reúne muchas prácticas
recomendadas para crear experiencias de conversación y automatiza
la integración de componentes que los desarrolladores de Bot
Framework han encontrado muy beneficiosos.
Por ejemplo, una experiencia conversacional basada en la plantilla de
asistente virtual permite a los desarrolladores trabajar con varios
lenguajes, modelos de PNL para intenciones de conversación básicas,
personalidades adaptadas para responder a preguntas más generales,
generación de lenguaje integrada para respuestas más naturales, una
experiencia de introducción para nuevos usuarios, cambio de
contexto y compatibilidad con las aptitudes.
En la siguiente sección de este libro, utilizaremos la plantilla de
asistente virtual para crear una aplicación de IA conversacional.
Probar
Para probar la aplicación de IA conversacional, Microsoft
proporciona Bot Framework Emulator, que permite a los
desarrolladores probar las conversaciones de forma rápida y sencilla.
También puedes escribir pruebas unitarias mediante el SDK de Bot
Framework, para centrarte en las pruebas de funcionalidad de
diálogos específicos. Una vez configurado a través del portal de
Azure, se puede acceder a tu bot a través de una interfaz de chat web,
lo que permite a los usuarios realizar pruebas más amplias al principio
del proceso de desarrollo.
Publicar
Cuando estés listo para que tu bot esté disponible en la Web, publica
tu bot en Azure o en tu propio servicio web o centro de datos:
(dondequiera que se alojaría una aplicación web normal).
Conectar
Azure Bot Service se encarga de la mayor parte del trabajo necesario
para conectar tus bots a una amplia variedad de canales
y dispositivos. A través del portal de Azure, puedes conectar tus bots
a Facebook Messenger, Slack, Microsoft Teams, Cortana, correo
electrónico, Telegram, Twilio, LINE y otros canales. También
puedes utilizar widgets de Web Chat para insertar los bots en tus
sitios web o aplicaciones móviles.
16 | IA conversacional
Puedes utilizar el canal Direct Line para conectar el bot a tu propia
aplicación cliente o el canal Direct Line Speech que permite
interfaces de voz de baja latencia con aplicaciones cliente mediante
el SDK de Microsoft Speech. Esto te permite incluir experiencias de
texto y voz en aplicaciones de escritorio, aplicaciones móviles
y dispositivos como automóviles, altavoces y despertadores.
Bot Framework y los miembros de la comunidad de código abierto
también proporcionan adaptadores basados en código para conectar
tus bots a otros canales, como Google Assistant, Amazon Alexa,
Webex Teams, sockets web y webhooks.
Evaluar
Las grabaciones de las conversaciones entre los bots y los usuarios
proporcionan información valiosa sobre el negocio que te ayuda
a evaluar el rendimiento de tu bot. En esta fase, las prácticas
recomendadas incluyen la evaluación de las métricas de éxito que has
definido durante la fase de diseño, la revisión de los registros de
instrumentación, la recopilación de comentarios de los usuarios, los
ajustes y la iteración. Bot Framework proporciona consultas de
Application Insights de ejemplo y un panel de Power BI para ayudarte
a captar toda el espectro de conversaciones de tu bot con los usuarios
y obtener conocimientos clave sobre el estado y el comportamiento
de tu bot.
Entrada multimodal
El asistente virtual proporciona una serie de mecanismos de entrada:
texto, toques en la pantalla y voz. Estos se puede ampliar según sea
necesario para incluir la visión a través de la integración de los
servicios cognitivos de visión. Los tipos de entrada adicionales se
pueden integrar fácilmente en función de las prestaciones del
dispositivo o de la plataforma. Una experiencia conversacional
basada en Bot Framework también se puede ampliar para que admita
gestos (si están disponibles en el dispositivo del usuario final) y, de
ese modo, permitir a los usuarios cambiar de un tipo de entrada a otro
según sea necesario.
20 | Características principales de los asistentes virtuales
El asistente virtual también se integra estrechamente con el servicio
Speech, parte de la familia Cognitive Services, junto con PNL
y gestión de diálogos, que permite el reconocimiento contextual de
las conversaciones. El streaming en tiempo real del audio de los
usuarios permite que el procesamiento del lenguaje natural y los
diálogos comiencen en cuanto el usuario deje de hablar, con lo que
se ofrece una experiencia más natural de baja latencia.
La funcionalidad de voz neuronal personalizada en el servicio
Speech permite a los clientes desarrollar voces personalizadas muy
realistas para interfaces de conversación naturales, con solo 30
minutos de audio.
Tarjetas adaptables
Las tarjetas adaptables proporcionan funciones gráficas como
tarjetas, imágenes y botones dentro del asistente. Las tarjetas son
partes de la interfaz de usuario independientes de la plataforma,
creadas en JSON, que se pueden intercambiar entre las aplicaciones
y los servicios compatibles. Cuando se incorpora en una aplicación
específica, el código JSON se transforma en una interfaz de usuario
nativa que se adapta automáticamente a su entorno. Te permite
diseñar e integrar interfaces de usuario ligeras para todas las
plataformas y marcos principales.
Si la plataforma de conversación tiene una pantalla, estas tarjetas se
pueden mostrar en una amplia gama de dispositivos y plataformas, lo
que proporciona una experiencia de usuario coherente con el servicio
o el contexto en el que se inserta la tarjeta. Los dispositivos que no
tienen pantallas pueden utilizar las respuestas habladas
proporcionadas junto con las tarjetas adaptables o cualquier
combinación de mecanismos de entrega apropiados para el contexto.
El asistente virtual y las aptitudes relacionadas funcionan a la
perfección con las tarjetas adaptables, y su diseño e información de
marca se pueden personalizar totalmente en función del escenario.
En la figura 6 se muestran algunos ejemplos.
6 Puedes encontrar información detallada sobre cómo conectar tu asistente a los canales
en la documentación de los canales de Bot Framework, que contiene un índice a la
izquierda con enlaces a instrucciones adicionales específicas del canal. Además,
tienes la opción de conectar tu asistente a Amazon Alexa, Google Home y otras
plataformas a través de la integración realizada por la comunidad de código abierto de
Bot Builder.