Mostrando entradas con la etiqueta Robots software. Mostrar todas las entradas
Mostrando entradas con la etiqueta Robots software. Mostrar todas las entradas

viernes, 7 de febrero de 2025

La hibridación de los robots software: agentes frente a RPA y robots conversacionales

En el post anterior de este blog, hablaba del nacimiento de una nueva especie robótica, un nuevo tipo de robots software: los agentes de la Agentic AI

Le pongo el apellido 'de Agentic AI' a la espera de que la industria genere algún nuevo nombre, porque el término agente, como expliqué en ese último post, es demasiado genérico y denomina a muchos entes ya existentes incluyendo a las propias personas.

En este artículo pretendo mostrar cómo, desde un punto de vista funcional, no tanto tecnológico, estos agentes, al menos lo que de ellos se nos ha mostrado hasta la fecha, son una suerte de hibridación y evolución de las dos especies de robótica software anteriores: los robots RPA y los robots conversacionales.

Esas dos especies robóticas, robots RPA y robots conversacionales o chatbots, son las que yo identificaba y explicaba en mi libro 'Robots en la sombra'.

Antes de hablar los agentes, pues, recordemos brevemente las ideas principales sobre robots RPA y robots conversacionales.


Los robots RPA


Esquematizo la idea de RPA en la siguiente figura


Robots RPA


Los robots RPA ('Robotic Process Automation') son un tipo de módulos software orientados a interaccionar con recursos IT ya existentes, tanto en la propia empresa como en Internet. Entre esos recursos se encuentran las aplicaciones (a las que acceden ya sea vía conectores o interactuando directamente con su interfaz de usuarios) los documentos recogidos en todo tipo de ficheros, y otros recursos y protocolos con que se interactúa fundamentalmente usando APIs y conectores.

En ese sentido, los robots RPA suelen automatizar orquestando recursos digitales ya existentes, coordinando lecturas, escrituras y solicitud de acciones. 

La lógica de estos robots se basa en reglas, o mejor, en flujos o workflows que define el desarrollador... en tiempo de desarrollo.


Los robots conversacionales


Por su parte, los robots conversacionales, fundamentalmente los chatbots y voicebots tradicionales se ajustan a la siguiente figura:


Robots conversacionales tradicionales

Para los robots conversacionales, su entorno natural son las personas, ya que están diseñados, precisamente, para una interacción natural con ellas mediante conversaciones. En ese sentido, suelen actuar como front-end de una aplicación o de un conjunto de ellas de las que obtienen información o a las que solicitan acciones. Por eso, aunque su entorno principal son las personas, interaccionan también, un poco en back-office, con aplicaciones y recursos haciendo uso, al igual que los robots RPA, de conectores y APIs.

Presentan en su entrada capacidades de procesamiento de voz y lenguaje natural que son entrenadas, en realidad ajustadas, en tiempo de desarrollo, para reconocer intenciones y entidades en lo que el usuario transmite. A partir de ahí, las respuestas y la interacción con el back-office se define con base en reglas claras y en tiempo de desarrollo. 

El planteamiento de los chatbots y su construcción cambia con la llegada de los chatbots basados en modelos generativos, pero prefiero dejar como está la descripción de los robots conversacionales, en parte por claridad de discurso, pero en parte también porque podría no ser descabellado considerar un chatbot basado en modelo generativo como una forma muy simple, quizá un poco degradada, de agente.


¿Y qué son los agentes?


Y llegamos a los agentes.

Los agentes (los de la Agentic AI, me refiero) son módulos software cuyo 'cerebro', por decirlo de alguna manera, es un modelo generativo (podríamos decir que un gran modelo de lenguaje, pero creo que el nombre empieza a resultar inadecuado dada su misión y su probable evolución tecnológica). 

Siguen siendo módulos software autónomos (como los anteriores), y por tanto robots software, en mi opinión. La gran diferencia, la grandísima diferencia, es que ellos mismos deciden la lógica de actuación y lo hacen en tiempo de ejecución, no en tiempo de desarrollo.

Los agentes reciben una solicitud o indicación mediante un prompt que les fija un objetivo y, a partir de ahí, deducen ellos mismos, o al menos esa es la promesa, las acciones a llevar a cabo... y las ejecutan, hasta conseguir los resultados deseados.

Aunque todavía son una idea naciente y que debe evolucionar, concretarse y consolidarse, podemos hacernos una idea de 'por dónde van los tiros', viendo este vídeo reciente de OpenAI mostrando su 'Operator'.



Vemos que el usuario hace una petición de viva voz al agente (y por tanto genera un prompt) lo que quiere y, a partir de ahí, el agente decide lo que tiene que hacer y, en ese lo que tiene que hacer se incluye interaccionar con sitios web a través de sus pantallas. Es decir, el agente interacciona con una persona pero, además, interacciona con aplicaciones.

Yendo ligeramente más allá de lo que se ve en esta demostración, pero reflejando algunas cosas que ya se hacen en frameworks como LangChain y alguna evolución casi evidente y que creo que inminente, el esquema de un agente de la Agentic AI como el que se ve en el vídeo podría ser el ue se muestra en la figura:

Agente

Respecto a lo que se ve en el vídeo, esta figura añade la posibilidad de interactuar con ficheros y la invocación a conectores y APIs, pero no tengo ninguna duda de que, si eso no está disponible ya, lo estará prontísimo, tanto por su utilidad como porque tecnológicamente no supone un desafío ni dificultad adicionales.


Agentic AI como hibridación y evolución de RPA y robots conversacionales


La figura anterior en que esquematizo la idea de un agente, se parece mucho a la que utilizo para RPA o para robots conversacionales. Y eso no es casual. Es intencionado para mostrar los paralelismos que, para mí, son evidentes.

De hecho, para cualquiera que sea conocedor de RPA, lo que muestra la demostración de Operator recuerda muchísimo a RPA, casi lo podríamos considerar RPA: ese interactuar con pantallas de aplicaciones para obtener datos y pedir acciones es lo que supuso el nacimiento de RPA como tipología de solución diferenciada, y lo que todavía hoy en día más la caracteriza, aunque no necesariamente sea como más su utiliza.  Si a eso le añadimos el trabajo con ficheros y el uso de conectores y APIs, tendríamos lo mismo que RPA

Y, es evidente, que estos agentes pueden, si así se desea (aunque es muy probable que en muchas realizaciones prácticas no se utilice) interactuar con usuarios, con personas, mediante texto o de viva voz...de la misma manera que que hacen los robots conversacionales y como se muestra en el video.

Es por ello que considero que los agentes de la Agentic AI no es sólo que sean robots software es que reúnen y fusionan las capacidades de RPA y de los robots conversacionales, las dos 'especies' anteriores, como se ve en la figura que ya auna las tres figuras de cada una de las especies de robot software.


Las tres especies de robot software

La diferencia, la gran diferencia, tanto para lo bueno como para lo malo, frente al caso del RPA que hemos tenido hasta ahora, y a los robots conversacionales que han dominado el panorama hasta la aparición de los chatbots generativos, está en el 'cerebro' y en la lógica de actuación de los agentes.

En el caso de los robots RPA hablamos de flujos o workflows definidos por un desarrollador. Aunque es cierto que hoy en día se pueden enriquecer con elementos de inteligencia artificial y de decisión en tiempo de ejecución, en esencia se basan en reglas y flujos conocidos y establecidos en tiempo de desarrollo.

En el caso de los robots conversacionales tradicionales, aunque interviene un poco de inteligencia artificial en la entrada, a partir de ahí trabajamos con reglas y lógicas definidas por el desarrollador y también en tiempo de desarrollo.

Sin embargo, los agentes, que se basan en modelos generativos, no sólo es que generen una respuesta textual o de voz no predefinida sino que, muchísimo más importante, define el plan de acción de manera autónoma y en tiempo de ejecución. Por decirlo de alguna forma, son muchísimo más inteligentes y mucho más autónomos. Al menos esa es la promesa.


El arma de doble filo


Si los agentes 'cumplen su promesa', si están a la altura no de lo que ya se puede hacer con LangChain hoy en día sino que realmente son capaces de crear planes de actuación de manera autónoma como se muestra en el vídeo y en lo que se está publicando, las posibilidades son inmensas, casi revolucionarias.

Sin embargo, hablo de un arma de doble filo porque, en según qué entornos, por ejemplo la automatización industrial o procesos uniformes y masivos, podemos preferir las reglas claras, conocidas y predecibles de los robots y sistemas tradicionales, antes que unos planes que podrían hacer cosas extrañas (la versión de 'alucinación' llevada a un plan de acción), inesperadas o poco eficientes

Habrá que, por un lado, ver lo que los agentes sean capaces de ofrecer realmente, y por otro aplicar el sentido común.


Conclusiones


Creo haber mostrado, no sólo que los agentes de la Agentic AI son un tipo de robot software sino que, además, al menos en lo que se está prometiendo, aúnan las capacidades tanto de RPA como de robots conversacionales, pero de una forma mucho más inteligente y autónoma y, eso sí, algo más impredecible.

Va a ser interesantísimo ver a dónde se llega realmente en las próximas semanas y meses.


miércoles, 5 de febrero de 2025

Una nueva especie robótica: los agentes

El título puede parecer, la verdad, algo grandilocuente, pero tras algunas semanas pensando en ello, y tras haberlo adelantado en alguna charla y clase, creo poder afirmar que estamos atendiendo al nacimiento de una nueva especie robótica, entendiendo como tal a un nuevo tipo de entidades a las que se le puede aplicar el calificativo de 'robot'.

Me refiero a la AgenticAI y, claro, a los módulos que la tangibilizan: los así denominados  agentes.

Y digo que ha nacido una nueva especie robótica pero, además, y según consultoras como Gartner, y según el típico 'hype' tecnológico, ha nacido también una estrella, aunque este último extremo, el estrellato, los logros reales que puedan alcanzar estos agentes, las capacidades reales que puedan lograr, y su impacto real en el mercado y la sociedad aún está por demostrar... una demostración o refutación que creo que veremos este mismo año, y, caso de tratarse de un éxito, seguramente en el primer semestre.

Pero antes de comentar algo más, vamos a ver de qué hablamos cuando hablamos de robot.


Recordando lo que es un robot


Como diría 'el otro', el concepto de robot es un concepto discutido y discutible. No hay una definición abarcadora, y a la vez, aceptada, de lo que es un robot. Y hemos aplicado históricamente el nombre de robot a entidades artificiales bastante diferenciadas.

Comenté los conceptos de robot en uno de los primeros vídeos de mi proyecto 'The robot notes'. En concreto, en el siguiente vídeo expongo algunas de las concepciones y definiciones existentes.




Y seleccionando la concepción que mejor explica la esencia de un robot, hablaba tanto en el vídeo como en mi libro 'Robots en la sombra' de los agentes inteligentes, una idea que se ilustra en la siguiente figura extraída de mi libro.



Un agente, un robot si llega el caso, sería una entidad que se comunica con el exterior, con el entorno obteniendo información del mismo mediante alguna forma de sensores para, a continuación, y con base en sus objetivos, seleccionar las acciones más convenientes y trasladarlas a ese entorno mediante actuadores.

Es muy importante esa relación con el entorno, incluyendo esa capacidad de actuar sobre el mismo mediante actuadores que es lo que le confiere esa naturaleza de agente, puesto que agente significa aquello que hace, que actúa. La inteligencia, que no necesariamente implica sofisticación ni el uso de inteligencia artificial, supone la coherencia entre la situación del entorno, según se percibe por los sensores, con las acciones efectuadas conforme a los objetivos del agente.

Para que un agente sea un robot, aparte de la caracterización propia como agente, se precisa, evidentemente, que se trate de una entidad artificial (un ser humano es también un agente, pero no un robot).


El debate sobre si el software puede ser un robot


Para muchos autores e instituciones, además, el robot debe tratarse de un ente con realidad física, con cuerpo y, de hecho, esa corporeidad, ese 'embodyment', tiene serias implicaciones, incluidas las éticas, en sus resultados y condicionantes. 

Sin embargo, dentro del término 'robot' se mencionan con frecuencia agentes que son esencialmente lógicos o, por entendernos, software.

En mi libro 'Robots en la sombra', que habla de robots software, explico que, por un lado, los robots que denominados software, realmente si que tienen un 'cuerpo', lo que ocurre es que, en lugar de tratarse de un cuerpo físico especializado, se trata de un hardware de propósito general, típicamente un ordenador o un smartphone y que, además, el entorno con el que interactúan es especial puesto que, con frecuencia, es un entorno digital, no físico.

Intentando identificar las características de los robots en general, incluyendo los que denominamos robots software, llegaba a una propuesta de seis características, a saber:


  • Artificiales
  • Adaptables
  • Actuadores sobre su entorno
  • Autónomos
  • Sustitutivos de personas
  • Similares a personas


Algunas de estas características, como la de la artificialidad, parecen indiscutibles. Más laxas y discutibles son, sin embargo, las que hacen mención al papel sustitutivo de personas o su similitud pero que son muy relevantes en el caso de los robots software. Y también hay que reconocer que se aplica muy comúnmente y sin casi discusión término robot a entes que, por su falta de autonomía, e incluso de inteligencia, cabría excluir de la idea de robot, como son los así llamados robots quirúrgicos.

El tema da para mucho debate, pero lo voy a dejar ahí.

Sólo decir, antes de conocer a la nueva especie robótica, que en mi libro hablaba de dos familias o especies de robots software: los robots RPA ('Robotic Process Automation') por un lado, y los robots conversacionales, o chatbots para simplificar, por otro.


Los agentes de la AgenticAI como robots


Bueno, pues creo que ahora hay que unir una tercera especie o familia: los agentes de la denominada 'AgenticAI'. El propio nombre ya nos avisa: estamos hablando de agentes.

En efecto, se trata de unos módulos software, regidos, en este caso, por un 'cerebro' basado en modelos generativos de inteligencia artificial. Se trata de unos módulos que también perciben un entorno (aunque un entorno especial) y que generan acciones sobre él. Y se trata de unos módulos en que las actuaciones son coherentes con el estado del entorno y los objetivos del módulo. El término agente, pues, es absolutamente apropiado para estos módulos,  aunque quizá resulte desafortunado que se apropien de es término que es muy anterior a la existencia de estos nuevos robots, y que es aplicable a otras muchas entidades. En cualquier caso, sí que son agentes y agentes inteligentes.

Y cumplen las seis condiciones que en mi libro 'Robots en la sombra', atribuía a los robots en general, y a los robots software en particular: son artificiales, adaptables, actuadores sobre su entorno, autónomos, sustitutivos de personas y, en cierto sentido, similares en su comportamiento a ellas. Son, por tanto, robots, robots software.

En algún próximo artículo, intentaré explicar que, no sólo es que se trate de robots software, es que, además, y según se ve en sus primeras realizaciones, tienen importantes solapes con las dos anteriores especies robóticas software que había identificado: los robots RPA y los robots conversacionales, convirtiéndose en una suerte de evolución, e incluso convergencia, de sus 'antepasados' robóticos.


Conclusiones


A despecho del debate existente, y justificado en realidad, acerca de lo que realmente significa el término 'robot' y del otro debate, también existente y también justificado, acerca de si un robot software es realmente un robot, creo que, si sigo mi propia doctrina respecto a lo que es un robot, estamos asistiendo al nacimiento de una nueva especie robótica: los agentes de la AgenticAI.

Una especie 'joven' y que habrá que ir viendo cómo se desarrolla. 

Todo apunta a que tendremos muchos noticias al respecto en las próximos meses e incluso semanas.


miércoles, 20 de abril de 2022

Cinco tipos de agentes conversacionales

Cuando hablamos de agentes conversacionales, estamos utilizando un término más o menos genérico en el cual, normalmente, estamos pensando en chatbots y su variante con voz, los 'voicebots'.

Y no es mala aproximación práctica, pero en realidad, hay algo más.


Sobre agentes conversacionales


Sin pretender proporcionar una definición rigurosa ni académica, cuando hablamos de agentes conversacionales, estamos pensando en un tipo de entes artificiales que son capaces de mantener una conversación razonablemente natural con seres humanos.

Esta conversación puede ser llevada a cabo, y en los chatbots más tradicionales es así, mediante texto y algunos otros elementos propios de las interfaces de usuario más o menos tradicionales (menús, imágenes, 'emojis', etc), pero crecientemente se usa el puro lenguaje natural y, muy especialmente, la comunicación de 'viva voz'.

Con frecuencia, este tipo de agentes son robots software, tal y como detallo en mi libro 'Robots en la sombra' pero en algunos casos, como el de los altavoces inteligentes, tienen un soporte hardware más especializado.

Y como sustrato tecnológico de este tipo de soluciones, encontramos fuertes dosis de inteligencia artificial, muy especialmente del campo del procesamiento de lenguaje natural (NPL, 'Natural Language Processing') y del reconocimiento de voz (ASR, 'Automatic Speech Recognition').

Y, en ocasiones, las más avanzadas, también utilizan inteligencia artificial para la gestión de la conversación propiamente dicha o para detalles como el análisis de sentimiento.


Los tipos de sistemas dialógicos de Michael McTear


En realidad, esas habilidades conversacionales o dialógicas (capacidad de dialogar) se pueden, con la misma base tecnológica, embeber en una gran variedad de productos y soluciones finales lo que nos puede llevar a buscar algún tipo de identificación o clasificación de estos agentes conversacionales.

Leyendo el libro 'Conversational AI. Dialogue systems, conversational agents and chatbots' de Michael McTear me encuentro, precisamente, con una suerte de clasificación de ese tipo. Bien es cierto que, el propio autor declara que no pretende una verdadera clasificación sino, más bien, y con una perspectiva de evolución histórica, identificar líneas y comunidades de trabajo que han evolucionado de manera bastante paralela e independiente. Además, estrictamente hablando, él no usa en este caso el término agente conversacional ('conversational agent'), sino lo que he traducido como sistema dialógico ('dialogue system'), pero creo que no es erróneo usar ambos términos como sinónimos.

Pues bien, en esa especie de clasificación, McTear identifica cinco categorías o, más bien, etapas o comunidades:

  • Sistemas dialógicos hablados y basados en texto: que recoge los primeros trabajos, realizados principalmente en laboratorios de universidades y empresas, y que son sistemas dialógicos frecuentemente textuales (a veces puro texto sin más 'adorno') pero también incluyendo diálogos mediante voz. En este apartado habría realizaciones incluso desde los años sesenta y setenta.

  • Interfaces de usuario de voz: Sistemas basados en voz y con una vocación mucho más comercial que los anteriores (que estaban más centrados en la investigación), con unas capacidades de conversación bastante limitadas y orientadas a soporte telefónico o tareas muy rutinarias.

  • Chatbots: Desde el mítico ELIZA hasta la actualidad, unos agentes con capacidades conversacionales más avanzadas y, sobre todo, naturales.

  • Agentes conversacionales personificados (ECA, 'embodied conversational agents'): Estaríamos en este caso hablando de unos agentes que yo suelo denominar avatares y que lo que añaden, más que capacidades lingüísticas, es una representación visual humana realista, mediante animación por ordenador,  y que incluye elementos que apoyan la conversación como la expresión facial, gestos con las manos, etc que enriquecen la conversación con elementos no verbales.

  • Robots sociales y agentes ubicados ('situated agents'): Se trata de robots físicos, normalmente de aspecto humanoide o zoomórfico, orientados a la interacción social con humanos y que, además de las capacidades de gestionar el lenguaje natural y la voz, añaden ahora posibilidades de reconocimiento del interlocutor y sus emociones y también del uso del lenguaje no verbal (gestos, movimiento, distancia) de una forma cada vez más similar a lo que haría un humano.


En conclusión


Ya se aprecia que, en realidad, lo que ofrece McTear no es exactamente una taxonomía de agentes conversacionales. Aún así, me ha resultado interesante en dos aspectos.

En primer lugar, me ha llamado la atención, y estoy plenamente de acuerdo, el que incluya ya a los robots sociales como un caso de agente conversacional.

En segundo, me resulta interesante constatar cómo, a las capacidades lingüísticas basadas en el lenguaje verbal con el soporte tecnológico del procesamiento del lenguaje natural y la voz, se une en el caso de los dos últimos grupos, avatares y robots sociales, el uso del lenguaje no verbal para lo cual se usa un cuerpo físico real, en el caso de los robots sociales y otro simulado o animado en el caso de los avatares. En cualquier caso, se intenta el enriquecimiento de la conversación mediante el lenguaje no verbal.

Por lo demás, creo que las capacidades conversacionales en todo tipo de agentes y dispositivos, se van a generalizar cada vez más, como parte de esa explosión robótica de la que ya he hablado con anterioridad y que quizá, quizá, en el futuro pueda ir perdiendo relevancia la idea del agente conversacional...porque casi todos los agentes lo serán.


viernes, 3 de septiembre de 2021

Los robots software según... Ignacio G.R. Gavilán

'Robots en la sombra' es un libro dedicado a los robots software, un concepto en el que el autor engloba lo que el subtítulo anuncia, a saber, 'RPA, robots conversacionales y otras formas de automatización cognitiva'. Quizá, el mayor foco se pone en la Automatización Robótica de Procesos (RPA por sus siglas en inglés). También tienen mucho peso los robots conversacionales, categoría que incluye los chatbots, los voicebots, los asistentes virtuales o los altavoces inteligentes y que el autor suele agrupar bajo el término general de chatbot por simplificación. El resto de formas robóticas se tratan ligeramente pero sin ocupar mucha extensión.

El tratamiento que se hace de los robots software es de mirada amplia, explicándolos desde una triple perspectiva:
  • Funcional, es decir, explicando lo que son capaces de hacer.
  • Tecnológica, aportando una explicación de las tecnologías que subyacen a estos robots.
  • Empresarial, poniendo a los robots software en el contexto de la automatización de procesos y explicando sus implicaciones de gestión y en el negocio.
El libro se estructura en dieciséis capítulos agrupados en tres partes que se corresponden con las perspectivas antes indicadas.
  • 'PARTE I: ENTENDIENDO LOS ROBOTS SOFTWARE:' Aporta la visión funcional y conceptual de los robots software e incluye cuatro capítulos:

    • '1. Los habitantes de las sombras: ¿Qué es un robot software?:' Pone en contexto la temática de los robots software intentando acotar primero el concepto de robot, revisando a continuación otro tipo de robots como los robots industriales o los vehículos robóticos, para finalizar con una explicación de lo que es un robot software.

    • '2. Robots en la oficina: Automatización Robótica de Procesos:' Un capítulo bastante extenso que explica lo que es la Automatización Robótica de Procesos (RPA) y qué capacidades podemos esperar de este tipo de soluciones. Además, ejemplifica el tipo de tareas y escenarios en que se emplea. Finalmente, cuenta cómo se enfoca el desarrollo y explotación de los robots y aporta algún concepto adicional como el de robot atendido o no atendido.

    • '3. Robots parlanchines: chatbots, voicebots y asistentes virtuales:' Trata de la otra gran categoría de robots objeto del libro: los robots conversacionales. Explica lo que es un chatbot entendido en sentido amplio, sus bloques funcionales y los elementos que componen una conversación así como escenarios típicos de aplicación.

    • '4. Otras especies robóticas:' Revisa otro tipo de robots como los financieros o los usados en medios sociales pero, sobre todo, explica el concepto de trabajador digital que el autor entiende como una convergencia de RPA y chatbots.

  • 'PARTE II: LA TECNOLOGÍA QUE ANIMA A LOS ROBOTS:' Se centra en la visión tecnológica, desgranando cada una de las tecnologías en que se apoyan los robots software a lo largo de los siguientes siete capítulos:

    • '5. Aplicaciones en la chistera. Screen scraping, teclado y ratón:' Explica los mecanismos por los que los robots de tipo RPA interactúan con las interfaces de usuario de aplicacienes mediante la técnica del screen scraping para obtener información y cómo simular el comportamniento humano ante dispositivos de entrada como el teclado y el ratón.

    • '6. Papeleo robótico. Ineracción con ficheros y documentos:' Detalla cómo se manejan documentos y ficheros, principalmente en los robots RPA.

    • '7. Hasta las nubes y más allá: Computación en la nuve e integración' Tras aportar alguna idea básica sobre cloud computing y web services, se explica la forma en que los robots software pueden utilizar estas tecnologíaas para integrarse con otras solucuiones empresariales o para acceder a servicios en la nube, especialmente servicios con capacidades cognitivas.

    • '8. En el cerebro del robot. Inteligencia artificial y machine learning:' Un largo capítulo para explicar, primero, los conceptos básicos sobre algoritmos, inteligencia artificial y machine learning y para luego entrar en algo más de detalle en las redes neuronales y el 'deep learning.'

    • '9. ¿Cómo ven los robots? Visión artificial y OCR:' Un capítulo cortito donde, de una forma muy ligera, se explican ideas sobre visión artificial y reconocimiento óptico de caracteres (OCR) y cómo lo emplean los robots software para acceder a información.

    • '10. ¿Cómo hablan, escuchan y leen los robots? Lenguaje natural y tratamiento de la voz:' Otro capítulo sencillo que explica los rudimentos del procesamiento de lenguaje natural y de la voz y cómo esto se emplea para la comunicación con personas o el procesamiento de texto libre.

    • '11. A lo grande. Escalabilidad y seguridad:' Se abordan dos conceptos técnicos importantes para el despliegue masivo en entornos empresariales. Por un lado, se aportan conceptos de escalabilidad, es decir, como tener soluciones robustas para uso intensivo`en usuarios, datos y transacciones. Por otro, se revisan aspectos de ciberseguridad y cómo se enfocan en los robots software.

  • 'PARTE III: EL NEGOCIO DE LOS ROBOTS:' Constituye la visión de negocio e incluso social, explicando cómo gestionar la robotización en la empresa y estudiando el impacto de los robots software en el negocio y en la sociedad. Y a ello dedica los últimos cinco capítulos:

    • '12. Los robots software en el contexto de la automatización:' Se pone a los robots software dentro de un mapa general de automatización de procesos de negocio. Primero se hace un repaso del concepto de proceso de negocio y se describe bastante detalladamente el mapa de soluciones existentes para su automatización, de las cuales los robots software son sólo una opción más. Se finaliza explicando, precisamente, cuál es el lugar de los robots software en ese mapa de automatización.

    • '13. Criterios de aplicación de robots software:' Se proponen una serie de criterios acerca de cuándo se deben aplicar, tanto los robots RPA como los robots conversacionales.

    • '14. En marcha: gestión de iniciativas de robotización:' Consiste en una explicación metodológica sobre la gestión de iniciativas de robotización enmarcadas en una gestión de procesos de negocio (BPM).

    • '15. Modelos de negocio robóticos:' Es una visión de carácter más estratégico explorando cómo puede afectar la robotización a los modelos de negocio. Primero se explica el concepto de modelo de negocio y su representación mediante el famoso 'business model canvas' y luego indica impactos de los robots en los distintos elementos de ese canvas para terminar explorando modelos de negocio basados en robots.

    • '16. Robots y sociedad:' Una visión final mas social y humanista y, en cierto sentido, más de opinión. Se trata la problemática del impacto en el empleo y la idea de la renta básica universal. También se habla de la eventual fiscalidad sobre los robots, posicionándose el autor en contra. Se trata asimismo el complejo asunto de las decisiones autónomas en los robots, la explicabilidad de esa decisiones y su impacto real en el caso de los robots software. Y se finaliza con unas breves consideraciones éticas.

Enmarcando todo lo anterior, el libro se abre con un prefacio titulado 'Una noche en la oficina' y cierra con un posfacio denominado 'Amanecer' que aportan una visión más ligera y levemente literaria mediante el desarrollo de una pequeña historia centrada en los robots software.

'Robots en la sombra' es, en resumen, una visión abarcadora del mundo de los robots software que, si bien aporta una base tecnológica clara, no está orientado tanto al mundo del desarrollo o la arquitectura técnica, sino a entender el fenómeno en su conjunto y emplearlo luego para la decisión empresarial o como un paso inicial de aprendizaje técnico.
 
Ignacio G.R. Gavilán

(Fuente: Elaboración propia)

Ignacio G.R. Gavilán
Ignacio G.R. Gavilán (Ignacio González de los Reyes-Gavilán) es asesor empresarial, profesor, escritor y conferenciante, especializado en innovación y transformación digital de procesos y modelos de negocio con especial foco en la automatización inteligente y la robotización de procesos.

Desde 2018 dirige su propia firma de asesoría y formación, Reingeniería Digital, especializada en la definición de planes de transformación digital de compañías y de mejora de procesos de negocio mediante la aplicación de tecnología digital. Además, es profesor y mentor de proyectos en EOI (Escuela de Organización Industrial) y colabora con otras instituciones como OBS (Online Business School) o UNIR (Universidad Internacional de La Rioja).

Ha publicado, hasta la fecha, dos libros: 'La Carrera Digital' (ExLibric, 2019) sobre transformación digital y 'Robots en la sombra' (Anaya Multimedia 2021) sobre robots software.

Ignacio es, ademas, fundador y líder del Foro de Humanismo Digital EOI y es, además, socio de OdiseIA (Observatorio del Impacto Social y Ético de la Inteligencia Artificial) donde ejerce el doble rol de ser Director de Operaciones y Director del Área de Relación Robots-Personas.

Anteriormente, entre 1992 y 2018, prestó servicios como mando en diversas unidades de Telefónica.

Allí estuvo más de doce años (1992 a 2005) en Telefónica Investigación y Desarrollo, donde tuvo responsabilidad en proyectos de desarrollo de sistemas de CRM, gestión de red, provisión y trouble ticketing de servicios de telecomunicación y donde participó activamente en el plan de innovación, trabajando en los ámbitos de historia clínica electrónica y soluciones de colaboración P2P desarrolladas con metodología agile.

Posteriormente, y encuadrado en Telefónica Soluciones de Informática y Comunicaciones (2005 a 2012), fue responsable del desarrollo de negocio y ejecución de proyectos y servicios para grandes clientes, fundamentalmente en el ámbito del puesto de trabajo digital y soluciones de conectividad LAN.

Desde 2012 a 2018, ya en Telefónica de España, coordinó los trabajos de la unidad de Operaciones y Red, tanto en el lanzamiento del servicio Movistar Fusión Empresas como, posteriormente, en una ambiciosa iniciativa de compañía en materia de reingeniería de procesos y sistemas.

Anteriormente a su ingreso en Telefónica, entre 1990 y 1992, prestó servicios en GADD S.A., donde participó en proyectos de desarrollo de sistemas de gestión documental y receta electrónica.

Ignacio G.R. Gavilán es ingeniero superior industrial por la Universidad de Oviedo, con especialidad en Electrónica y Automática. Tiene un Executive MBA en 2000 por IE Business School y mantiene las certificaciones PMP (Project Management Professional) en dirección de proyectos y OCEB2 (Object Management Group Certificate Expert in Business Process Management) en gestión de procesos de negocio.

Nació en Oviedo (Asturias), pero actualmente, y desde hace más de veinticinco años, reside en Madrid. Está casado y es padre de dos hijas.

Entre sus aficiones se cuentan la literatura y el deporte, habiendo sido practicante en su juventud del baloncesto, estando más enfocado en la actualidad a golf, pádel y sobre todo, y modestamente, al atletismo, formando parte del Club Corredores de Alcobendas (Madrid).

Ignacio es muy activo en medios sociales y le puedes encontrar en su página oficial (ignaciogavilan.com), en su blog Blue Chip (ignaciogavilan.com/blue-chip), Twitter (@igrgavilan) y YouTube.


viernes, 23 de abril de 2021

En este día del libro ¿Por qué no "Robots en la sombra"?

Si, ya sé que es una proposición interesada. Ya sé que, como reza la famosísima frase lanzada al estrellato por Francisco Umbral, estoy hablando de mi libro. Pero precisamente por eso, porque es mi libro y mi obra, y porque, como amante de los libros, de ficción y de ensayo, de entretenimiento y profesionales, el día del libro es un día especial, no puedo dejar pasar este día para sugerirte que te hagas con "Robots en la sombra", mi último libro, y, sobre todo que lo leas y, ya que el día va también de eso, que lo regales.

Se trata de un libro, sí, de carácter profesional y aproximadamente técnico aunque toca aspectos de negocio e incluso éticos y sociales. Un libro que aborda la temática de los robots software con foco en la Automatización robótica de Procesos (RPA) y los robots conversacionales como chatbots, voicebots, agentes virtuales y altavoces inteligentes.

Un  libro en que he intentado que se entiendan muy bien las ideas expuestas, que se encuentren al alcance de cualquiera que se interese por la materia, aunque no atesore conocimientos previos y aunque no tenga un perfil técnico. 

Un libro, por tanto, que aunque en esencia es profesional, he procurado que tenga también un cierto carácter divulgativo.

Y por si te ayuda a hacerte una idea del contenido y por si, mejor aún, te anima a adquirirlo, aquí te dejo un breve vídeo que explica el contenido:



Y esta es mi proposición, una proposición interesada, claro, una proposición que habla de mi libro. Pero si, para mi desgracia, esta proposición no te convence, al menos no te olvides de que es el día del libro y no dejes de regalar un libro, regalar una rosa y, sobre todo, leer.


lunes, 13 de julio de 2020

Dos paradojas y media del término Robotic Process Automation


Robotic Process Automation, también conocida por sus siglas, RPA recoge un conjunto de soluciones de automatización que, reuniendo técnicas y tecnologías como el screen scraping, reconocimiento óptico de caracteres, procesamiento de lenguaje natural, visión artificial, desarrollo low-code, etc, consiguen ofrecer unas alternativas relativamente ligeras para la interacción con aplicaciones y documentos y, con ello, la automatización parcial de procesos de negocio. 

El término Robotic Process Automation, un término acuñado hacia 2012 por el evangelista de Blue Prism Pat Geary es, sin embargo, aunque probablemente acertado desde un punto de vista de marketing, no tanto desde el punto de vista conceptual y de caracterización de las soluciones que denomina.

Estoy leyendo el libro 'The Robotic Process Automation Handbook' de Tom Taulli y en su primer capítulo este autor identifica dos paradojas en ese término, dos paradojas que pueden confundir a las personas no duchas en la materia.

La primera se refiere a la palabra robótica ('robotic'). Esta expresión puede conducir a pensar en robots industriales o androides, robots en cualquier caso con un hardware y una clara realidad física. Y no, en el caso de RPA no hablamos de robots físicos sino lógicos, es decir de robots software o, simplemente, bots. Los robots de RPA son, pues, módulos software invisibles  a nuestros ojos si no fuera por los efectos que consiguen.

La segunda paradoja se refiere a la palabra proceso ('process'). Un proceso de negocio denomina una serie de tareas que, realizadas de forma coordinada, consiguen un resultado de interés para un negocio. Lo cierto es que los robots RPA, a despecho de lo que su nombre indica, no se centran habitualmente en automatizar procesos de negocio extremo-a-extremo sino, únicamente, en automatizar tareas, tareas concretas, tareas que forman parte, eso sí, de un proceso de negocio, pero que son sólo una parte de él.

Sólo nos queda pues, libre de paradoja la tercera palabra del término Robotic Process Automation, la palabra automatización ('automation'). Tom Taulli no dice nada de ésta, pero aquí voy a añadir de mi propia cosecha, la  media paradoja adicional. En realidad no hay nada incorrecto en usar la palabra 'automatización' para referirnos a los robots RPA. Sí, estamos hablando de automatización. Pero en cierta literatura algo superficial que he tenido ocasión de leer, parece que se llega a identificar esa palabra automatización con RPA y eso sí sería un error. Tecnologías de automatización de procesos de negocio y de tareas de procesos de negocio hay muchas, como suelo explicar en los cursos que imparto sobre RPA y robotización de procesos. Y RPA es sólo una de ellas. Cuidado con eso, especialmente quien pueda estar en disposición de decidir sobre un programa de automatización o de tranformación digital.

Tres palabras en un término  y dos paradojas y media en ese término. ¡Menuda proporción!

Como ocurre cada vez más en el campo tecnológico (y en el no tecnológico), se peca con frecuencia de superficialidad, de exceso de marketing y de un cierto, permítaseme la expresión, 'postureo tecnológico'. Es por eso importante estar avisados y esforzarse en comprender la verdadera naturaleza de las tecnologías y soluciones más allá de sus nombres y de la propaganda que las pueda rodear.

lunes, 20 de abril de 2020

Software, robotización y sentido común


Aunque las tecnologías avancen, aunque las velocidades de computación se multipliquen y aunque aparezcan algoritmos cada vez más sofisticados, en el mundo del software, probablemente como en cualquier otra disciplina humana, al final existen una serie de criterios comunes, una serie de principios o buenas prácticas que son aplicables de forma generalizada y que muchas veces, al final son casi mera experiencia y mero sentido común.

Por motivos profesionales que no vienen al caso, estoy revisitando la teoría referente a la Ingeniería del Software, una disciplina que ya podemos considerar veterana y sobre la que, de hecho, poco se publica ya, si no es en su vertiente Agile. Y en esa labor estoy leyendo el voluminoso libro 'Software Engineering. Global Edition' de Ian Sommerville, bien organizado y escrito, pero que aporta pocas sorpresas porque, en efecto, la Ingeniería de Software, no sé si disfruta o sufre ya de una cierta estabilidad.


Ocho buenas prácticas de Ingeniería Software


Y me voy a detener en un punto del libro en que señala ocho líneas maestras o buenas prácticas de diseño y desarrollo para conseguir la fiabilidad ('reliability') de un sistema software. Son estas:

  • Control de la visibilidad de la información: Nos aconseja que la información, es decir, las variables, tengan la menor visibilidad posible, primando las variables locales antes que las globales, y dentro de las locales, que su ámbito sea lo más limitado posible. Una buena práctica tradicional donde las haya, que elimina acoplamientos entre componentes favoreciendo la modularidad y que, además, disminuye la probabilidad de que un componente, inadvertidamente, altere el valor de una de forma perjudicial para otra parte del software.

  • Chequear la validez de todas las entradas: Es decir, nunca suponer que los datos van a tener el formato o rango correctos. Si un dato debe ser numérico o fecha, comprobar que es así antes de trabajar con ese dato. Si un dato debe estar comprendido en un cierto rango, por ejemplo, ser mayor que cero, comprobar que es así antes de utilizarlo. Esto es farragoso y aumenta, es cierto, el tiempo de desarrollo e incluso, ligeramente, el de ejecución, pero convierte al software en mucho más robusto y vale la pena sin dudarlo.

  • Proporcionar un manejador para todas las excepciones: Una regla fundamental de robustez es capturar todos los errores y excepciones y darles un tratamiento, lo más específico posible pero, en cualquier caso, algún tipo de tratamiento que evite que el sistema, simplemente 'se caiga' o que el usuario o un administrador no puedan saber lo que ha ocurrido.

  • Minimizar el uso de construcciones propensas a error: En software, como en muchas otras actividades humanas, quizá mucho más que en otras actividades humanas, lo más sencillo funciona mejor. Esta recomendación, algo ambigua, va en el sentido, precisamente, de utilizar los tipos de datos, estructuras, algoritmos, etc más sencillos posible y con menor probabilidad de error. Se nos proporciona como ejemplo la recomendación de, en lo posible, usar números enteros en lugar de números decimales en coma flotante, ya que estos segundos generan muchos errores, por ejemplo, por redondeos. Otra construcción que se desaconseja es el uso explícito de memoria dinámica, algo que ha dado muchísimos quebraderos de cabeza, por ejemplo, a los programadores en C o C++.

  • Proporcionar capacidades de rearranque: Se trata de que, ya que a pesar de todas las precauciones, en ocasiones el software falla, quizá en medio de una transacción o procesamiento largo, al menos dar la capacidad de rearrancar y retomar el trabajo donde se encontraba, para lo cual es necesario de alguna forma registrar la información intermedia y tener medios para recuperarla tras el rearranque.

  • Comprobar las fronteras de matrices: Se trata de, cada vez que trabajemos con un matriz o vector, comprobar que cualquier índice de acceso a un elemento concreto, está dentro de los límites previstos. Si tenemos un vector de 100 elementos, no podemos acceder al elemento 200 ni, por supuesto a un índice negativo. Particularmente peligroso es el acceso al primer y último elemento de la matriz porque, según el lenguaje de programación, el primer elemento puede tener como índice  0 o 1 y es fácil equivocarse. Un acceso fuera del rango puede llevar a acceder a zonas de memoria no permitidas provocando errores serios.

  • Incluir 'timeouts' en llamadas a componentes externos: En ocasiones, los sistemas externos fallan, tardan demasiado o son las propias comunicaciones las que fallan o van lentas. Y pueden fallar sin dar un error explícito. Por eso, no conviene esperar indefinidamente a que se complete la invocación a un servicio o sistema externo sino que se debe introducir un temporizador que, caso de vencerse, eleve la excepción correspondiente o provoque el tratamiento de error que proceda.

  • Nominar a todas las constantes que representan valores reales: La idea es doble. Por un lado, no incluir 'a fuego' un valor en el código, sino ponerlo en función de una variable o constante y usarlo referenciando a esa variable o constante. Pero además, la directriz lo que sugiere es que cualquier elemento de la vida real, incluso aunque no preveamos que vaya a cambiar, lo convirtamos en una variable o constante. Así, por ejemplo, podríamos incluir como constante el tipo básico del IVA. De esta forma,ningún valor queda en piedra en el código sino que es siempre una constante o variable. Y además, si a pesar de nuestras expectativas, el valor de ese elemento de la vida real, en este caso el tipo básico del IVA, cambia, el software puede modificarse por una simple configuración, sin actualizar el código.

Para cualquier que haya trabajado en el mundo del software, todos o la mayor parte de estos consejos le resultan familiares y bien conocidos. El libro del que los recojo está impreso en 2016, hace cuatro años, y es una décima edición, así que el cuerpo de doctrina principal lleva muchos más años escrito. Es más, su autor, es un profesor ya retirado.

Y, sin embargo, las ocho directrices están plenamente vigentes.


Buenas prácticas en robotización software


De hecho, ahora que personalmente dedico bastante energías al mundo de la robotización software y, específicamente, al RPA (Robotic Process Automation), incluyendo ya muchas horas de formación a alumnos de empresas o jóvenes en busca de primer empleo, comparo estas directrices con las que se aplican en el mundo de la robotización...y hay una enorme, casi total, coincidencia.

También disponemos de ámbitos de variables que se aconseja sean locales, también se capturan excepciones, también se insta a procesar todos los errores y protegerse ante datos con formato incorrecto o fuera de rango (aunque en el caso de RPA esa labor con frecuencia viene dada ya desde sistemas externos), también se dispone de rearranque, también hay constantes en ficheros de configuración... Incluso, el líder del mercado UiPath, dispone de una plantilla, el Robotic Enterprise Framework una de cuyas misiones es, precisamente, ayudar a crear robots que ya traen de serie algunos de estos elementos como el tratamiento de ciertas excepciones, el rearranque o un trazado básico).

Y es que los robots software son, eso, software.

Y software llevamos ya muchos años construyéndolo, y algo hemos aprendido.


El sentido común


Al final, aunque la tecnología evoluciona, aunque hay nuevos sistemas, nuevas herramientas y nuevos algoritmos, la experiencia es la experiencia y el sentido común es el sentido común.

Y el sentido común es, o debería ser, universal y casi eterno.

lunes, 17 de febrero de 2020

Dos definiciones de chatbot


Me encuentro leyendo el libro  'Practical Bot Development' de Szymon Rozga, un libro dedicado al mundo de los chatbots, especialmente en el entorno de Microsoft Bot Framework / Azure Bot Service, pero que también pone unas buenas bases conceptuales incluyendo, por ejemplo, fundamentos de Machine Learning y de Procesamiento de Lenguaje Natural. Un libro del que, en su momento, haré una reseña en este blog pero que, de momento, me está gustando mucho.

Bastante al principio del libro y, como es natural, el autor propone una definición de chat bot, más que nada para centrar cuál es el tema del libro. En próximos artículos, comentaré algún tema interesante adicional en relación con los contenidos de este libro, pero de momento consigno aquí la definición práctica que propone:

chat bot [] is a computer program that can take user input in natural language and return text or rich media to the user.

Una definición bastante simple y, al tiempo, bastante acertada aunque debo mencionar que, en mi opinión, se autolimita un poco en esta definición en dos aspectos:

  • Por un lado, porque supone que en la entrada se va a encontrar lenguaje natural. Es cierto que con muchísima frecuencia es así y que, además, es probablemente la forma de entrada más característica y útil en un chatbot, pero creo que también se puede considerar como chatbot un robot software que mantiene conversaciones usando algunos elementos más convencionales como opciones de menú, imágenes, etc. No me parece una limitación grave, no es demasiado importante en la práctica, pero no quería dejar de reseñarla.

  • Más limitante, quizá, es entender que la salida, lo que se ofrece al usuario, sea 'rich media'. En realidad, quizá, conviene aclarar qué se entiende exactamente por 'rich media'. A mi ese término me parece que excluye la voz sintetizada y me parece que se queda más en texto, imágenes, etc. Si es así, es una limitación porque, desde ya y cada vez más, los chatbots nos  'hablan de viva voz'.

Por establecer un punto de comparación, recojo la definición que ofrezco en mi libro "La Carrera Digital" del término interfaz conversacional, término que, aunque más rebuscado, pero también más descriptivo, considero equivalente a chatbot, . Reza así:

Un robot conversacional es un módulo software cuya misión es interaccionar con personas de forma abierta y natural mediante conversaciones.

En mi definición, pongo más foco en el establecimiento de conversaciones naturales, que en el canal o medios usados para ello. Creo que, con ello, consigo una definición más generalista y que, al tiempo, capta mejor la naturaleza de lo que es un chatbot (una interfaz conversacional).

Sin embargo, y a efectos prácticos, la propuesta de Szymon Rozga, me parece razonablemente atinada y que, en el fondo, ambas definiciones son muy convergentes a efectos prácticos.