Construye tu primer ChatBot en 30 minutos

La inteligencia artificial está cada días un poco más distanciada de HAL nueve mil, acercándose más al término de una incontable miríada de servicios que componen la temible distopía de Skynet.

En estos instantes, se sucede una incruenta carrera tecnológica entre las “grandes” de la industria para desarrollar los servicios cognitivos más adelantados y con más “inteligencia”. Y en el artículo voy a hacer una primera y fácil aproximación a un futuro tan impredecible como irrefrenable.

Lee, escucha, mira, piensa

En mil novecientos cincuenta, Alan Turing se hizo una pregunta fácil, con una exageradamente compleja contestación, que le transformó en el padre de la Inteligencia Artificial:

¿Puede meditar una máquina?

Desde entonces, se comenzó un lento desarrollo basado en la lógica matemática, la filosofía, la neurociencia y la lingüística, hasta el momento en que la computación llegó – sobre los años ochenta – a ofrecer suficiente potencia para aguantar los primeros sistemas especialistas.

Pasadas más de 3 décadas, en nuestros días, la IA se aplica en múltiples campos entre aquéllos que resaltan el reconocimiento visual (tanto de imágenes estáticas como de vídeos), el empleo de lenguaje natural, el reconocimiento de voz, los sistemas de explotación de datos, y la administración del conocimiento, entre otros muchos.

Uno de los segmentos en donde se está estudiando de forma continuada desde aquel lejano ELIZA, son los BotChats. O sea, software que es capaz de sostener conversaciones en lenguaje natural, de forma afín a las personas, que sea capaz – en algún instante de un futuro próximo – superar el test de Turing.

Abriendo, como en toda nueva aplicación tecnológica revolucionaria, novedosas aplicaciones, y generando inconvenientes complejos. Relacionados, por servirnos de un ejemplo, con la substitución de puestos poco especializados, por sistemas informáticos automáticos.

Haciendo un BotChat sin código

Google, Amazon o bien Microsoft son plataformas sobre las que puedo edificar mi ChatBot, aparte de irlo enlazando con otros servicios de Inteligencia Artificial; ganando en profundidad, dificultad y potencia; y asegurando la escalabilidad, desempeño y disponibilidad, al estar implantados en Cloud.

En el artículo, voy a edificar un ChatBot desarrollado para contestar las preguntas usuales, en lenguaje natural, que hacen los usuarios de un blog; y para lo que, y buscando la mayor sencillez, voy a usar un servicio gratis de Microsoft que está publicado en la web de QnAmaker.

Lo cierto es que el sistema difícilmente puede ser más fácil. Me identifico en la página, elijo un nombre para mi nuevo Bot, y lo creo.

Entonces introduzco las preguntas que me pueden hacer los usuarios, y cuál es la contestación conveniente. Siendo esta la parte más difícil de todo el proceso, por el hecho de que es preciso probarlo una y otra vez, agregando, escogiendo y alterando tanto los términos de busca como las contestaciones.

Para esto, la propia plataforma incluye un sistema de pruebas que hace bastante más fácil la depuración y optimización de la base de conocimiento.

En la realidad, no sería suficiente con esto y, más adelante, debería integrar servicios de busca y aprendizaje autónomo. Mas, de momento, me quedo satisfecho y pulso el botón de publicar para hacer perceptible el API Rest de mi ChatBot en Internet. Eso sí, para consumirla, voy a precisar edificar un mensaje http POST, como vamos a ver un tanto más adelante, que incluya las credenciales precisas y un cuerpo del mensaje.

Programando un cliente del servicio básico

Ahora vuelvo a mi área de confort, y voy a edificar un cliente del servicio muy básico que funcione sobre una Web Aplicación de Azure y con ASP.NET MVC Core veinte en C#. De este modo, desde Visual Studio dos mil diecisiete, creo un nuevo proyecto Web en Core del tipo Web Application MVC.

Y la primera cosa que hago es agregar 2 nuevas claves en el appseting.json, en donde guardaré con seguridad la clave de subscripción y el identificador de la base de conocimiento, que son las credenciales de seguridad para acceder a la API.

Como estoy en Core, estás credenciales las doy de alta en el procedimiento ConfigureServices de la clase Start-up, para poder inyectarlas en mi aplicación.

Después me creo mi clase de modelo, con la que transportaré la información hasta la vista.

En el supervisor agrego la clase que edifica el mensaje http preciso para pedir la contestación, mandando el interrogante en una estructura json.

Construyo la vista del formulario, en donde podre redactar las preguntas, llegándome la contestación desde el ChatBot que he dado de alta en QnAMaker.

Para finalizar, publico mi código en una WebApp en Azure, por poner un ejemplo, y ya tengo marchando mi ChatBot, en su primera versión.

Ahora toca nutrirlo, darle más contenido y conectarlo con otros servicios cognitivos y de inteligencia artificial.

Conclusiones

Todavía cuando este es un caso sencillísimo, acá ya se puede intuir la potencia del motor de lenguaje natural, que aguanta las conversaciones. En 3 o bien 4 rondas de optimización de la base de conocimiento, ya le puedo efectuar preguntas de una manera parcialmente compleja para la rigidez normal de un sistema. Por servirnos de un ejemplo, me va a comprender si le pregunto ¿Tienes alguna nueva nueva? o bien si lo escribo como Dime las novedades en Azure.

Mas es en la integración con sistemas de machine learning, de modelos de aprendizaje, así como las capacidades de reconocimiento sensorial, y la ubicuidad del IoT, cuando podemos edificar aplicaciones que, hace nada, eran terreno de la Ciencia Ficción.

De esta forma, por poner un ejemplo, la Wikipedia no sería ni parte de lo que es ahora si no fuese por los incontables bots que efectuar a diario tareas de corrección, escritura y actualización de entradas; empresas por todo el planeta están reemplazando los centros de soporte de primer nivel por ChatBots; y, el empleo más conocido y extendido, la interacción con personas reales en las redes sociales.

Estamos en un instante histórico, y puede que en el futuro se mire cara atrás y, como nos sucede hoy en día con la telefonía móvil o bien los antibióticos, sea bastante difícil imaginarse como pudimos vivir sin ellos (si ya antes no nos han destruido en un holocausto nuclear).

Más información | Bots en turincon.netDev, Bots en Xataka, Tutorial recomendado,