¿Te gustaría profundizar en cómo probar las aplicaciones potenciadas con Inteligencia Artificial Generativa (IAG)? Te invitamos a explorar este tema, a descubrir las oportunidades y desafíos que se vienen, y comprender cómo todo esto puede agregar valor a tus proyectos.
![Ilustración - Probando aplicaciones potenciadas con el uso de la Inteligencia Artificial Generativa](https://es.abstracta.us/wp-content/uploads/2024/04/probar-aplicaciones-potenciadas-uso-inteligencia-artificial-generativa.png)
Las aplicaciones que integran GPT y otros LLMs están remodelando campos como la atención al cliente, medicina, educación, finanzas, generación de contenidos, y mucho más.
Se trata de avances que traen consigo desafíos únicos, especialmente en calidad de software. En plena transformación digital acelerada, la calidad de los sistemas tiene impacto en la mayoría de las áreas de la vida de las personas. Asimismo, la naturaleza dinámica de las aplicaciones demanda un enfoque novedoso y adaptable para asegurar su eficacia.
Tal como expresó el Chief Quality Officer de Abstracta, Federico Toledo en una charla que brindó en el Global Quality Summit, organizado por Globant, existe un gran ecosistema. “Estamos hablando de una Inteligencia Artificial Generativa que nos hace replantear hasta la forma de probar las cosas”, expresó.
En este sentido, explicó que por un lado contamos con ChatGPT, que es la plataforma que la mayoría de las personas interesadas en el tema han probado hasta ahora, para generar desde contenido hasta código, con un enfoque conversacional. Pero el sistema también ofrece una API, que podemos utilizar de múltiples y novedosas maneras en el desarrollo de productos.
Para poder utilizar la API, es necesario contar con una cuenta Plus, es decir paga. “Para simplificar, podríamos decir que al usar la API de OpenAI es como que los programas ejecutaran un prompt sobre ChatGPT, el cual se va a armar con información de contexto del programa que se esté probando, como datos de sesión o inputs de usuario”, introdujo Federico.
En el ámbito del testing de aplicaciones que utilizan Modelos de Lenguaje de Gran Escala como GPT, los hiperparámetros juegan un papel crucial, y es fundamental conocer cómo afectan el comportamiento para guiar nuestras pruebas de la mejor manera.
![Ilustración - Pruebas en aplicaciones que utilizan Modelos de Lenguaje de Gran Escala como GPT](https://es.abstracta.us/wp-content/uploads/2024/04/testing-aplicaciones-uso-modelo-lenguaje-gran-escala-gpt.png)
Hiperparámetros
Los hiperparámetros son configuraciones externas de un modelo de aprendizaje automático que se establecen antes del entrenamiento y que el modelo no puede aprender por sí mismo luego a partir de los datos.
A diferencia de los parámetros del modelo, que se aprenden de los datos durante el entrenamiento, los hiperparámetros son determinados por el equipo de desarrollo y son cruciales para controlar el comportamiento y rendimiento del algoritmo.
Para ilustrar, consideremos un videojuego en desarrollo: los hiperparámetros serían como los ajustes de dificultad configurados antes de iniciar una sesión de prueba. Estos ajustes, como el poder de los personajes enemigos o la frecuencia con la que aparecen, no cambian durante el juego pero pueden tener un gran impacto en cómo se siente el juego y en su dificultad.
En la Inteligencia Artificial Generativa, la elección adecuada de hiperparámetros es clave para optimizar la precisión y eficacia del modelo. Ejemplos comunes incluyen la tasa de aprendizaje, el número de capas en una red neuronal, y el tamaño del batch.
Temperatura y semilla
Aunque estos términos no encajan en la definición clásica de hiperparámetros (como la tasa de aprendizaje o el tamaño del batch, que se usan en el entrenamiento de modelos de aprendizaje automático), en la práctica de modelos generativos, cumplen una función similar y son fundamentales para la realización de pruebas con apoyo de la IAG.
Su importancia en la configuración de modelos generativos y su impacto en los resultados los hace similares a los hiperparámetros en términos prácticos. Es por esto que en algunos contextos, particularmente en la descripción de modelos generativos, se les puede referir como hiperparámetros, aunque con la aclaración de que son un tipo especial de configuraciones.
Afectan cómo se comporta el modelo (en términos de aleatoriedad o reproducibilidad), pero no son aprendidos por el modelo a través de los datos. Son configurados antes de utilizar el modelo para la generación.
Temperatura
Al utilizar la API, es importante tener en cuenta la temperatura que elegimos, la cual determina el equilibrio entre precisión y creatividad en las respuestas del modelo. Puede variar entre 0 y 2: cuanto más baja la temperatura que seleccionemos, más precisa y determinista será la respuesta. Cuanto más elevada, más creativa, o aleatoria.
![Imagen - Elección de temperatura en las respuestas del modelo de Inteligencia Artificial Generativa](https://es.abstracta.us/wp-content/uploads/2024/04/temperatura-respuestas-modelo-inteligencia-artificial-generativa-1024x571.png)
Semilla
Se trata de un valor inicial utilizado en algoritmos para garantizar la reproducibilidad de resultados aleatorios. Al utilizar una semilla específica, la IA puede ayudar a que, bajo las mismas condiciones y entradas, el modelo genere respuestas consistentes. Esto es fundamental para las pruebas, ya que aumenta la reproducibilidad de los resultados y permite evaluar de manera más precisa y confiable el comportamiento del modelo en diferentes escenarios y tras cambios en el código o los datos.
La reproducibilidad es especialmente valiosa en entornos de testing donde controlar y predecir la salida del modelo es vital para asegurar la calidad y eficiencia de las aplicaciones basadas en Inteligencia Artificial Generativa.
Tokens
En modelos de lenguaje o generativos, los tokens son unidades básicas de procesamiento de texto, como palabras o partes de ellas. Cada token puede ser una palabra, parte de una palabra, o un símbolo. El proceso de dividir el texto en tokens se llama tokenización, y es crucial para que el modelo entienda y genere lenguaje.
En esencia, son bloques de construcción que el modelo utiliza para interpretar y producir lenguaje. Si te interesa saber más sobre el proceso de tokenización, te recomendamos visitar el Tokenizer de Open AI.
Es importante destacar que los modelos tienen un límite en la cantidad de tokens que pueden procesar en un solo paso. Al alcanzar este límite, pueden empezar a “olvidar” información previa para incorporar nuevos tokens, lo cual es un aspecto crucial en la gestión de la memoria del modelo.
Parámetro max_tokens y costo
Límite de tokens y costo: la cantidad de tokens procesados no solo afecta el rendimiento del modelo, sino que también tiene implicaciones directas en términos de costo. En servicios basados en la nube, el uso de tokens es un factor clave en la facturación: se cobra por la cantidad de tokens procesados. Esto significa que procesar más tokens incrementa el costo del servicio.
Uso del parámetro max_tokens: es esencial en la configuración de la API. Actúa como un controlador que determina cuándo se corta la respuesta del modelo para evitar consumir más tokens de los necesarios o deseados. En la práctica, establece un límite superior en la cantidad de tokens que el modelo generará en respuesta a una entrada dada, y permite gestionar el equilibrio entre la exhaustividad de la respuesta y el costo asociado.
Aunque los tokens no son hiperparámetros, forman parte integral del diseño y funcionamiento del modelo. La cantidad de tokens procesados y el ajuste del parámetro max_tokens son críticos tanto para el rendimiento como para la gestión de costos en aplicaciones basadas en Inteligencia Artificial Generativa.
Por todo esto, Federico enfatizó que es necesario encontrar un balance adecuado entre costo y resultado a la hora de proporcionar la cantidad de tokens que la API puede utilizar.
Enfoques de testing aplicables en Inteligencia Artificial Generativa
El testing de aplicaciones que usan la Inteligencia Artificial Generativa como los LLMs presenta desafíos únicos. A continuación, exploramos diferentes enfoques que pueden aplicarse en este contexto, cada uno con sus propias ventajas y consideraciones.
Para agrupar y ordenar estos distintos enfoques, comencemos repasando la categorización de enfoques más conocida, mediante la separación en caja negra y caja blanca.
Caja negra
![Imagen - Enfoque de testing de caja negra aplicable en Inteligencia Artificial Generativa](https://es.abstracta.us/wp-content/uploads/2024/04/enfoque-testing-caja-negra-inteligencia-artificial-generativa.png)
Estos enfoques se centran en las entradas y salidas del sistema bajo prueba, independientemente del código subyacente. La clave aquí es entender el dominio, el sistema y cómo las personas interactúan con el mismo, sin necesidad de comprender cómo está implementado internamente.
La mayor limitación es que no ofrece una visión de lo que sucede dentro del sistema, es decir cómo está implementado. Esto puede llevar a una menor cobertura de pruebas y a la redundancia de casos, ya que no podemos tener control sobre los aspectos internos del sistema. Además, solo podemos comenzar a probar una vez que el sistema está medianamente completo.
Caja blanca
![Imagen - Enfoque de testing de caja blanca aplicable en Inteligencia Artificial Generativa](https://es.abstracta.us/wp-content/uploads/2024/04/enfoque-testing-caja-blanca-inteligencia-artificial-generativa.png)
En contraste con el enfoque de caja negra, este método implica una comprensión profunda del interior del sistema.
Tenemos la posibilidad de analizar cómo se configuran y utilizan los parámetros y prompts, y hasta cómo el sistema procesa las respuestas. Todo esto es viable dado que podemos mirar hacia adentro de la caja y aprovechar la información que tenemos para diseñar las pruebas.
Los enfoques de caja blanca nos permiten lograr un análisis más detallado, evitar la ejecución de pruebas que resulten redundantes, y crear pruebas con mayor cobertura.
Sin embargo, también presentan desventajas: es necesario contar con conocimiento en programación y manejo de APIs, lo cual a su vez puede implicar un sesgo, justamente debido al conocimiento de cómo fue construido.
Esto podría limitar nuestra creatividad en la generación de pruebas y traer como consecuencia la pérdida de foco en la experiencia y desafíos reales de las personas que utilizan los sistemas.
Si te gustaría seguir profundizando sobre conceptos de testing, te recomendamos descargar el libro “Introducción a las Pruebas de Sistemas de Información”, de Federico Toledo.
Enfoque basado en factores de calidad
![Imagen - Enfoque de testing basado en factores de calidad de software](https://es.abstracta.us/wp-content/uploads/2024/04/enfoque-testing-factores-calidad-software-1024x573.png)
Otro enfoque que se podría tomar de alto nivel implica formular preguntas guiadas por diferentes factores de calidad del software, como fiabilidad, usabilidad, accesibilidad y seguridad, entre otros. En cada uno de estos aspectos, es importante considerar preguntas tanto generales como específicas para sistemas basados en Inteligencia Artificial Generativa.
- Usabilidad y accesibilidad
Dado que las aplicaciones tendrán cada vez más interfaces conversacionales, nos enfrentamos aquí al gran desafío de lograr que sean inclusivas y adaptables.
Es importante lograr que sean intuitivas y útiles para todas las personas, que sean capaces de comprender diferentes voces, con diferentes condiciones, y brinden respuestas comprensibles en distintos contextos y necesidades. La accesibilidad aquí va más allá de la simple compatibilidad con herramientas asistivas, busca una comunicación efectiva y accesible.
- Mantenibilidad
En este aspecto, buscaremos comprender la facilidad con la que se pueden realizar actualizaciones y cambios en el sistema.
¿Cómo se pueden automatizar pruebas para un sistema con resultados no deterministas (es decir que no arrojan siempre los mismos resultados)? ¿Se manejan de manera eficiente las pruebas de regresión para que los cambios no afecten negativamente las funcionalidades existentes? ¿Los prompts se están gestionando como código, son fáciles de entender, están bien modularizados y se están versionando?
- Seguridad
Dentro del marco de seguridad, la IAG introdujo un nuevo tipo de vulnerabilidad que es conocido como “Prompt Injection”.
Similar al concepto de SQL Injection, un atacante podría querer alterar el comportamiento esperado del sistema manipulando las entradas de manera maliciosa, y sabiendo que si esas entradas no son procesadas con cuidado y se están concatenando a un prompt preestablecido, podrá terminar explotando esa vulnerabilidad.
Al realizar pruebas, tendremos que considerar este tipo de ataques y revisar cómo el sistema maneja entradas inesperadas o malintencionadas que podrían alterar su funcionamiento.
¿Cómo responde el sistema a entradas diseñadas para provocar errores o respuestas no deseadas? Esta evaluación es esencial para lograr que las aplicaciones basadas en Inteligencia Artificial Generativa sean seguras y resistentes a intentos de manipulación.
Te invitamos a leer este artículo para seguir aprendiendo sobre temas relacionados: Tips para utilizar ChatGPT de manera segura en tu organización.
En este punto, nos centraremos en cómo el sistema maneja la carga y la eficiencia bajo diferentes condiciones. En el contexto de IAG, pueden surgir múltiples preguntas.
¿Cómo se comporta nuestro sistema cuando el servicio de OpenAI, que es utilizado a través de la API, experimenta lentitud o alta demanda? Esto incluye evaluar la capacidad del sistema para manejar un número elevado de solicitudes por segundo y cómo esto afecta la calidad y velocidad de las respuestas.
Además, es necesario considerar la gestión eficiente de los recursos computacionales, especialmente en relación con el uso de tokens y su impacto en el rendimiento y los costos operativos. Analizar el rendimiento bajo estas circunstancias es crucial para asegurar que las aplicaciones basadas en IAG sean no solo funcionales y seguras, sino también escalables y eficientes en un entorno de uso real.
¿Qué son los Evals y por qué recomendamos su uso?
![Imagen - Definición y recomendación de uso de framework Evals de Open AI en pruebas de software](https://es.abstracta.us/wp-content/uploads/2024/04/definicion-uso-framework-evals-open-ai-pruebas-software.png)
En Abstracta, reconocemos la importancia del uso responsable y eficiente de los LLMs y de las herramientas que construyamos basadas en ellos. Para poder acompañar el desarrollo de forma ágil, nos enfrentamos al desafío de probar automáticamente sistemas no determinísticos, donde la variabilidad sobre el resultado esperado hace más compleja la creación de pruebas eficaces.
Ante esta dificultad, recomendamos adoptar el uso del framework de OpenAI conocido como ‘Evals’ para realizar pruebas de regresión, el cual funciona de distintos mecanismos, y para resolver el no-determinismo de las respuestas permite emplear un LLM como un ‘juez’ o ‘oráculo’.
Este método, integrado en nuestras pruebas de regresión, nos permite evaluar los resultados obtenidos contra un criterio adaptable y avanzado, con el fin de lograr pruebas más efectivas y precisas.
¿Qué son los Evals de OpenAI?
Es un framework desarrollado específicamente para evaluar LLMs o herramientas que utilizan LLMs. Este framework es valioso por varias razones:
- Registro Open-Source de pruebas: incluye una colección de casos de prueba desafiantes y rigurosos, en un repositorio open-source, lo cual facilita su acceso y uso.
- Facilidad de creación: los Evals son sencillos de crear y no requieren la escritura de código complejo. Esto los hace accesibles para una mayor diversidad de personas y contextos.
- Templates básicos y avanzados: OpenAI proporciona templates tanto básicos como avanzados, que se pueden utilizar y personalizar según las necesidades de cada proyecto.
La incorporación de Evals en nuestro proceso de testing fortalece nuestra capacidad de asegurar que los LLMs y las herramientas relacionadas funcionen según lo previsto, y nos permite mantener altos estándares de calidad y eficacia.
Si te interesa este tema, te recomendamos leer el artículo “Decoding OpenAI Evals”, que ofrece una visión detallada de este framework y su aplicación en diferentes contextos.
Desafíos a futuro
Nos encontramos con múltiples desafíos todos los días. La tecnología avanza a pasos impactantes y por eso es vital construir equipo y compartir conocimientos mientras seguimos experimentando.
En referencia a la calidad de software, posiblemente, uno de los aspectos más desafiantes en el testing de Inteligencia Artificial Generativa es la creación de sets de pruebas efectivos. Esta área, llena de complejidades y matices, requiere una combinación de creatividad, comprensión técnica profunda, y un enfoque meticuloso.
Si bien esto representa un reto significativo, también ofrece una oportunidad única para explorar nuevas fronteras en la calidad del software.
La creación de sets de pruebas efectivos para la Inteligencia Artificial Generativa presenta grandes desafíos significativos debido a varias razones:
- Complejidad y variabilidad de las respuestas
Los sistemas basados en IAG, como los LLMs, pueden producir una amplia gama de respuestas diferentes para el mismo input. Esta variabilidad hace que sea difícil predecir y verificar las respuestas correctas o esperadas, complicando la creación de un set de pruebas que cubra adecuadamente todos los posibles escenarios.
- Necesidad de creatividad y comprensión técnica
Diseñar pruebas para IAG requiere no solo un entendimiento técnico profundo de cómo funcionan estos modelos, sino también una gran dosis de creatividad para anticipar y modelar los diversos contextos y usos que los usuarios pueden darle a la aplicación.
- Gestión del contexto y continuidad en las conversaciones
En aplicaciones como chatbots, la gestión del contexto y la continuidad en las conversaciones son críticas. Esto significa que las pruebas deben ser capaces de simular interacciones realistas y prolongadas para evaluar la coherencia y relevancia de las respuestas del sistema.
- Evaluación de respuestas subjetivas
Muchas veces, la ‘correctitud’ de una respuesta generada por IAG puede ser subjetiva o depender del contexto específico. Esto requiere un enfoque de evaluación más matizado que en el testing de software tradicional.
- Manejo de sesgos y seguridad
Los modelos de IAG pueden reflejar y amplificar sesgos presentes en los datos de entrenamiento. Identificar y mitigar estos sesgos en las pruebas es crucial para garantizar la equidad y seguridad del sistema.
- Rapidez en la evolución de la tecnología
La tecnología de IAG está en constante evolución, lo que significa que los sets de pruebas deben actualizarse continuamente para mantenerse relevantes y efectivos.
- Integración y escalabilidad
En muchos casos, la IAG se integra con otros sistemas y tecnologías. Probar estas integraciones de manera efectiva, especialmente a gran escala, puede ser complejo.
- Observabilidad
Ante la complejidad de los sistemas, y como en la mayoría de los casos los enfoques que se toman son de caja negra (por restricciones de contexto, acceso a datos o código, etc), la observabilidad jugará un papel clave en nuestra efectividad para probar.
Gracias a poder entender y hacer visible a través de plataformas de observabilidad lo que sucede en la interna del sistema, vamos a poder comprender cada paso de los procesos internos y así asociar las entradas con los comportamientos y las salidas, para pensar más y mejores pruebas.
Estos desafíos hacen que la calidad de software en IAG requiera un enfoque innovador y adaptable, capaz de mantenerse al día con el rápido desarrollo de esta tecnología.
En Abstracta, nos comprometemos a navegar estos desafíos y acompañar a las empresas en este viaje, brindar el conocimiento y la experiencia necesarios para aprovechar al máximo el potencial de la Inteligencia Artificial Generativa aplicada a la calidad, de punta a punta.
Te invitamos a profundizar sobre IAG en este artículo: Aplicaciones de la Inteligencia Artificial Generativa: guía para principiantes.
IA & Copilotos personalizados
![Imagen - IA & Copilotos personalizados](https://es.abstracta.us/wp-content/uploads/2024/04/servicio-transformacion-inteligencia-artificial-copilotos-personalizados.png)
¿Por qué elegir Abstracta para servicios de transformación en IA?
- Somos una empresa líder en la industria enfocada en software de calidad. Combinamos toda nuestra experiencia en fiabilidad, performance y automatización de pruebas en proyectos de transformación con IA.
- Contamos con prestigiosos partners de la industria como Microsoft, Marvik y GeneXus, gracias a lo cual integramos con confianza tecnologías de vanguardia en nuestros proyectos.
- Tenemos un fuerte compromiso con el aprendizaje continuo mediante la experimentación y aplicación de los últimos avances en Inteligencia Artificial.
- Adoptamos un enfoque de cocreación, meticulosamente adaptado para satisfacer tus necesidades y objetivos específicos. Esta estrategia personalizada facilita la comprensión clara mutua y el apoyo del equipo, y nos permite alinearnos tanto con tus valores como con tus prioridades comerciales.
¿Cómo podemos ayudarte?
La IA Generativa tiene un potencial enorme a través de la creación de copilotos, pero dónde y cómo integrarla requiere varias consideraciones y experiencia. En Abstracta, hemos implementado soluciones exitosas de IA Generativa para casos de uso reales, y nos encantaría apoyarte en este viaje.
No necesitas IA solo para innovar más rápido: hay muchas oportunidades para llevar el poder de la IA a varias tareas y procesos dentro de tu organización para empoderar a las personas y desbloquear la productividad.
🎧 Añade tu propio asistente de IA con facilidad
Hemos desarrollado una herramienta de código abierto que ayuda a los equipos a crear sus propios asistentes basados en la web. Integra datos privados en cualquier aplicación web existente utilizando una extensión de navegador.
Esto permite a las personas a realizar diferentes tareas cognitivas con comandos de voz, texto e imágenes sin necesidad de modificar el código en la aplicación. Puedes encontrar la herramienta haciendo clic acá.
🗣️ Potencia a tus líderes y empodera a tu equipo de manera segura
¿Te preocupa la seguridad de tus datos? ¿No sabes cómo involucrar a tus líderes en esta transformación digital usando IA? Tenemos la solución.
Con private-gpt, tu equipo puede chatear de forma segura, compartir indicaciones y asistentes utilizando cualquier Modelo de Lenguaje de Gran Escala (LLM) con tu propia cuenta y controlando el presupuesto. Conoce nuestro producto en Azure Marketplace.
🚀Crea soluciones personalizadas con nuestro apoyo
Hemos creado herramientas y copilotos habilitados para IA para diferentes tecnologías. Estas soluciones buscan aumentar la productividad y abordar desafíos como los procesos de selección de personal, apoyo al desarrollo profesional de tu equipo, y ayuda a especialistas en negocios con copilotos basados en IA, entre otros.
Ya sea que estés comenzando a entender el poder de ChatGPT, las últimas capacidades de los Modelos de Lenguaje de Gran Escala (LLMs) o seas especialista en prácticas de Aprendizaje Automático, en Abstracta te ayudamos a encontrar el camino correcto para tu organización.
Agenda una llamada de 30 minutos para entender cómo podemos apoyarte para aprovechar al máximo el potencial de la IAG para agregar valor real a tu negocio.
¿Te gustaría saber quiénes son nuestros partners en la actualidad? Entérate aquí.
Etiquetas
Posts Relacionados
Reporte de pruebas de software: claves para un diseño y una gestión efectivos
Un buen reporte de resultados de pruebas de software debe ser claro y preciso. En este artículo, descubre cómo mejorar la gestión de errores informáticos, a través de un buen diseño de casos de prueba, para contribuir a la calidad del producto final. La comunicación efectiva y una correcta planificación de la estrategia de pruebas son claves para minimizar riesgos y contribuir al éxito de la aplicación o sitio web.
Abstracta en el top compañías de QA y software testing de TechReviewer
Obtuvimos nuevo reconocimiento dentro del Top compañías de QA y Testing, por esta importante firma de análisis tecnológico.