Redegal, agencia Google Partner Premier 2024
La integración y el aprovechamiento de estas capacidades en el software empresarial representa una de las áreas más interesantes del sector IT para los próximos años y promete toda una revolución en digitalización y automatización. Esta revolución no sólo está llegando ya desde un punto de vista funcional, sino que también está cambiando notablemente la forma de construir software.
Por un lado, estas novedosas funcionalidades útiles para la toma de decisiones, automatización y asistencia en procesos empresariales, son también extremadamente útiles en el ámbito del desarrollo de software. Bien integradas en los procesos y herramientas de desarrollo permiten mejorar notablemente las capacidades y la productividad de los equipos de desarrollo, así como descubrir nuevas soluciones a problemas y obtener formación.
Pero en este articulo nos gustaría centrarnos en otros aspectos relativos a la integración de modelos de IA generativa en aplicaciones de software clásicas o de ámbito empresarial. En ellas estamos viendo retos muy relevantes e interesantes. No solo técnicos sino también organizativos y procedimentales. En muchos aspectos la forma de trabajar e integrar estos nuevos sistemas requiere un cambio de paradigma con respecto a las técnicas y metodologías de ingeniería de software actuales.
Te contamos a continuación cuáles son los 5 principales retos a resolver en el desarrollo de software con IA generativa.
Sistemas no deterministas
Los sistemas de Inteligencia Artificial generativa actuales (los modelos de LLM como GPT, Gemini, Claude o Llama) se presentan a los desarrolladores como sencillas APIs REST gestionadas y en la nube. El problema es que bajo esa API realmente simple esconden capacidades a las que nunca antes habíamos tenido acceso y que nos llevan a un cambio de paradigma computacional. Dichas APIs no tienen un comportamiento determinista y por tanto rompen con una de las premisas fundamentales de cualquier sistema computacional actual, el determinismo.
Los modelos de IA generativa ante las mismas entradas (datos y prompt) no devuelven dos respuestas iguales (aunque cada vez más permiten ciertos ajustes para reducir esta problemática). Este comportamiento es deseable para la interacción humana, pero muy problemático para la integración en sistemas computacionales, donde se espera consistencia y predictibilidad.
Además, están diseñados para responder en lenguaje natural y aunque se puede intentar forzar respuestas estructuradas (por ejemplo en JSON), no hay garantía de que esto siempre funcione. Esto añade una capa de complejidad en la validación y el procesamiento de las respuestas.
Diseño para interacción humana, no para máquinas
Los modelos de LLM (Large Language Models) están diseñados y optimizados para interactuar con humanos, produciendo respuestas en lenguaje natural. Aunque esto es ideal para interfaces de usuario de tipo chatbot, plantea problemas cuando se requiere una integración directa en sistemas automatizados.
Las respuestas pueden (y suelen) ser ambiguas o estructuradas de manera inconsistente, lo que dificulta su procesamiento automático. E incluso puede darse el caso (a nosotros nos ha pasado) que en momentos puntuales decidan no responder, devolver respuestas evasivas o responder sobre otras cosas que no tengan nada que ver.
Para abordar esto es necesario desarrollar técnicas de postprocesamiento para analizar las respuestas del modelo. Utilizar mecanismos de validación y filtrado puede ayudar a controlar y corregir las respuestas generadas, asegurando que sean consistentes y adecuadas para su uso en aplicaciones automatizadas.
Rendimiento y escalabilidad
Las LLM pueden requerir tiempos de procesamiento significativos, y además se ejecutan habitualmente en la nube, lo cual afecta a la latencia y la capacidad de respuesta del sistema. Y esto ya lo hemos visto en productos como el AI Pin de Humane, o el Rabbit R1, cuya funcionalidad y propuesta de valor se veía claramente mermada por los tiempos de respuesta.
Por suerte esto es algo que iremos viendo como va mejorando poco a poco, y ya hemos visto recientemente mejoras muy considerables con nuevos modelos como GTP-4o o la introducción de las NPU en los nuevos Copilot+PC de Microsoft, que permitirá ejecutar pequeños modelos de IA directamente en el dispositivo para obtener latencias mucho más bajas.
Cabe también mencionar que este tipo de sistemas requieren una cantidad considerable de recursos computacionales, y por tanto el coste se eleva. Esto puede ser un reto si queremos ejecutar los modelos en nuestra propia infraestructura si los queremos aplicar en ámbitos propios del big data.
Por ejemplo, en Binnacle Data utilizamos IA generativa para procesar y analizar automáticamente anomalías y cambios de tendencia en múltiples métricas de diversos tipos diferentes de elementos (catálogo de productos, búsquedas SEO, campañas publicitarias, etc.). Esto lo hacemos a un nivel de granularidad muy bajo (producto, búsqueda o campaña individual). Con clientes que tienen catálogos que se cuentan en decenas de miles o incluso cientos de miles de productos, a día de hoy seria inviable utilizar IA generativa para procesar toda esa cantidad de datos:
- El tiempo de ejecución seria extremadamente alto.
- El coste seria desorbitado, estaríamos hablando de unos 200 a 400€ al día, por cada cliente, con GPT-3.5, y unas 10 veces más con GPT-4o.
Por ello, en Binnacle combinamos un sistema de detección de anomalías y cambios de tendencia basado en tecnologías de Big Data, que se encarga de hacer el procesado de grandes volúmenes de datos, y reducir a un conjunto mucho más pequeño de casos sobre los que aplicar la IA generativa, para obtener ya la valoración final y un insight de actuación.
Programación en lenguaje natural
Los modelos de IA generativa se ‘programan’ usando ‘prompts’ escritos en lenguaje natural, lo cual introduce ambigüedad y deja las instrucciones abiertas a la interpretación, a diferencia de los lenguajes de programación tradicionales que están diseñados para ser precisos y sin ambigüedades.
Esto plantea un reto significativo, ya que trabajar con IA generativa se asemeja más a colaborar con un humano que a programar un sistema determinista, y en muchos casos se trata más de convencer a la IA para que se comporte como necesitamos, que darle simples instrucciones.
La gestión de versiones y la evolución de los prompts son aspectos cruciales, y deben ser tratados con un enfoque iterativo y colaborativo. Implementar sistemas de control de versiones para gestionar y rastrear cambios en los prompts y configuraciones del modelo es esencial para asegurar la precisión y relevancia de las respuestas. Y vamos a necesitar sistemas específicamente diseñados para ello, ya que los sistemas de control de versiones para código se quedan cortos.
Seguridad y privacidad
Lo primero que debemos tener en cuenta es que si estamos usando una API de terceros, como la de OpenAl o Google Gemini, estaremos enviando todos los datos a un tercero para su procesamiento. Además, la infraestructura puede estar incluso en otro país o continente. Esto implica que deberemos prestar mucha atención, y evaluar a fondo la viabilidad en términos de legalidad y privacidad de los datos que vamos a compartir además de cómo será su tratamiento.
Esto no solo aplica a las APIs para desarrollo, sino también a los productos de tipo chatbot como ChatGTP. De hecho, puede ser incluso más peligroso en ese caso, ya que OpenAl garantiza que la información enviada a través de la API no se utilizará para entrenamiento, pero no es así con la información enviada por usuarios gratuitos de ChatGTP.
Pero es que incluso aunque en términos legales y de privacidad esté todo en orden, también es importante tener en cuenta la opinión pública, en el ámbito empresarial, la de nuestros los clientes. Y es que el hecho de compartir información con OpenAl, Microsoft o Google puede levantar recelos y sospechas, como ya hemos visto recientemente con la funcionalidad de Windows Recall, que por mucho que Microsoft asegure que todo se ejecuta en tu PC, y no hay ningún riesgo, algunos usuarios pueden decidir no usarla por falta de confianza.
Y si queremos utilizar nuestra propia infraestructura, para no depender de terceros, nos encontrarnos con el problema antes mencionado de que estas tecnologías requieren ingentes cantidades de recursos, sobre todo durante la fase desarrollo y entrenamiento.
Además, los modelos LLM pueden generar respuestas inapropiadas o no deseadas. De nuevo tenemos ejemplos recientes con Google y sus sistema de generación de imágenes, o el sistema de Al overview en la búsqueda. Estas respuestas inadecuadas pueden generar problemas de todo tipo, desde legales a empresariales, por una mala recomendación. Por lo que se han necesarios mecanismos de filtrado y control adicionales para asegurar la adecuación de las respuestas generadas.
Conclusión y recomendaciones
Estos son algunos de los principales retos y desafíos que nos podernos encontrar a día de hoy cuando desarrollamos nuevas funcionalidades de software basadas en tecnologías de IA generativa, especialmente cuando tratamos de integrarlas en sistemas de software clásicos.
Pero hay dos buenas noticias, la primera es que esto evoluciona tan rápido que lo que hoy es un problema, mañana puede dejar de serio. La segunda es que el valor que se puede obtener con la integración de estas tecnologías es tan grande, que a su vez existe una gran oportunidad y necesidad de trabajar y desarrollar soluciones para estos retos.
En Redegal llevamos ya un tiempo integrando IA generativa, sobre todo en nuestro producto propio, Binnacle Data. Por el camino nos hemos tenido que enfrentar a algunos de estos problemas, y creemos que hay aspectos clave que es necesario tener muy en cuenta y dedicar importantes esfuerzos a ellos para que la integración sea exitosa.
Estructuración y control de respuestas
- Desarrollar prompts centrados en ‘convencer’ al modelo de responder siguiendo una estructura fija y procesable por máquinas. Apoyar esto con ‘fine tuning’ a través de ejemplos.
- Desarrollar técnicas de preprocesamiento de los datos y postprocesamiento de las respuestas del modelo, para asegurar que sean consistentes y adecuadas para su uso en aplicaciones automatizadas.
Monitorización y validación continua
- Utilizar mecanismos de validación y filtrado para controlar y corregir las respuestas generadas por el modelo. Por ejemplo, utilizando mecanismos de tipo back off para regenerar la respuesta con un sistema reintentos si no está cumpliendo con las especificaciones o tener un fallback a otro modelo o solución no basada en IA.
- Mantener un sistema de monitorización continua que nos permita llevar control sobre el número de respuestas no válidas que está devolviendo el sistema en cada momento, para poder detectar casos de degradación del comportamiento y reaccionar lo antes posible.
- Mantener un sistema de monitorización y control de datos procesados por la IA, para evitar enviar datos masivamente que puedan llevar a un coste desorbitado.
Combinar con técnicas de procesamiento masivo de datos
- En casos de uso con grandes volúmenes de datos (por ejemplo analítica digital), los costes de ejecución hacen inviable aplicar IA generativa de forma directa.
- Combinar un preprocesado inicial de datos utilizando técnicas de big data y procesamiento masivo de datos para aplicar un primer filtrado o preprocesamiento que permita reducir el conjunto de datos a utilizar con la IA generativa. En el caso de Smart Monitoring, en Binnacle, pasamos de un catálogo de 70.000 u 80.000 productos a una media de 10-20 productos potencialmente relevantes que pasan al procesado avanzado con IA generativa.
Seguridad y Privacidad
- Anonimizar los datos, y enviar conjuntos agregados, para evitar la exposición de datos sensibles o personales hacia los modelos de IA generativa.
- Integrar mecanismos de seguridad en los sistemas de validación de respuesta que prevengan la generación de respuestas inapropiadas. Esto puede incluir, por ejemplo, la ejecución en cadena de otros modelos de IA configurados con prompts específicamente diseñados para analizar las respuestas de otros modelos y detectar respuestas inválidas, inadecuadas, o soluciones más simples como el uso de expresiones regulares para garantizar estructuras de respuesta rígidas.
Como conclusión final, el aspecto más fundamental en la integración IA generativa en sistemas de software empresariales es el desarrollo de salvaguardas que protejan al resto de los componentes del sistema (e incluso a los usuarios) de las ‘ocurrencias’ de los componentes basados en inteligencia Artificial generativa.
Esto se vuelve vital cuando integramos componentes basados en IA generativa con otros componentes o módulos de software y no tenemos una IU de tipo chatbot con interacción directa entre la IA generativa y una persona que lo pueda ‘vigilar’ y corregir.
Si quieres integrar este tipo de procesos en tu empresa, contacta con nosotros para ver la forma más adecuada para el proyecto. ¿Hablamos?