En esta charla, exploraremos las distintas estrategias y métodos para probar aplicaciones basadas en LLMs como GPT, el modelo de lenguaje desarrollado por OpenAI. A medida que la inteligencia artificial se integra cada vez más en nuestras vidas, es crucial garantizar la calidad, eficiencia y confiabilidad de las aplicaciones que utilizan tecnologías de AI como ChatGPT.
La charla ayudará a comprender mejor los desafíos de probar este tipo de sistemas, así como aportará algunas de las técnicas de testing aplicables, y sus limitaciones, herramientas existentes y otras que hacen falta. Esto tanto para testing funcional, automatizado y testing no funcional (performance, seguridad, accesibilidad, etc). Es importante desde ya reflexionar sobre cómo enfrentarse a estos nuevos desafíos, considerando que por más que hoy no estén probando ya este tipo de aplicaciones, no faltará mucho tiempo para que eso suceda.
3. Mabl
/ USA
#QSConf2023
+20 November 9th & 10th
2 SPEAKERS TRACKS | ONLINE + IN PERSON
International thought
leaders
Free for attendees!
Call for Sponsors is open
Call for Speakers opens soon
4. abstracta.us
02. Enfoques de testing aplicables
03. Test de regresión y observabilidad
04. Conclusiones y desafíos
Agenda
01. Apps que usan LLMs
8. abstracta.us
Provee una API para integrar ChatGPT en tus sistemas.
ChatGPT
Sistema bajo pruebas
1. Obtiene información contextual
2. Invoca prompt
3. Obtiene respuesta, procesa y presenta
9. abstracta.us
Importante:
Esto cambió recientemente,
hay posibilidad de que la API
mantenga threads de
conversación y contexto.
ChatGPT
Provee una API para integrar ChatGPT en tus sistemas.
Importante:
La API no tiene memoria del
contexto, el programador
debe gestionarlo.
11. abstracta.us
Ayuda a tener respuestas más determinísticas
Si se envía, el sistema hará lo posible para generar la misma
respuesta ante la misma pregunta y los mismos parámetros
La respuesta retorna system_fingerprint. Sirve para detectar
cambios en el modelo junto con el parámetro seed
Aún en beta
Seed
12. abstracta.us
Máximo de tokens (parámetro max_tokens)
● Se suman los tokens del prompt y de la respuesta.
● En el chat, también cuentan los tokens de toda la
conversación.
● Reducir el máximo controla costos pero puede
truncar respuestas.
Tokenizing:
● El texto dado a ChatGPT se divide en tokens.
● Por ejemplo, "ChatGPT es mágico!" se divide en
estos tokens:
● Tokenizer: https://platform.openai.com/tokenizer
Tokens
18. abstracta.us
Foco en distintos
Factores de calidad
Mantenibilidad
● ¿Cómo estamos estructurando esos prompts?
¿Son legibles y fáciles de entender?
● ¿Se están versionando los prompts junto con el
código?
● ¿Qué tanto tuvimos que ajustar al pasar de
gpt-3 a gpt-4?
19. abstracta.us
Performance y fiabilidad
● ¿Qué pasa si el servicio de OpenAI está caído o anda lento?
● ¿Qué tan rápido puedo llegar a consultarlo? ¿Hay algún tope
de requests por segundo?
Seguridad
● ¿Estamos enviando datos sensibles?
● ¿Podría llegar a sugerir contenido indebido?
● ¿La aplicación se protege de prompt injection?
Foco en distintos
Factores de calidad
20. abstracta.us
Prompt Injection
Ataque ganando control sobre el output del texto
generado por ChatGPT
● Goal hijacking
● Prompt leaking
Sucede cuando el input del usuario se concatena
directo al prompt
21. abstracta.us
Heurísticas
y técnicas de pruebas
Enfoques de Caja Negra
in stock
State
checked out
State
checked in
State
lost
State
check out
remind
check in
write off
22. abstracta.us
● Mindmaps
● Partición de equivalencias y valores límite
● Combinación por pares
● Tablas y árboles de decisión
● Matrices de prueba
● Máquinas de estado
● Grafos causa-efecto
● SFDIPOT
● FEW HICCUPPS
● …
Lectura recomendada:
https://federico-toledo.com/
Heurísticas y técnicas
de pruebas
Desafío:
● El valor esperado no es predecible
24. abstracta.us
¿Cuáles son las características deseadas de la
respuesta obtenida?
● Coherencia
● Completitud
● Consistencia
● Fiabilidad
● Relevancia / Valor
● Originalidad / Creatividad
● Claridad, no ambigüedad
● Adecuación - no usar lenguaje inapropiado
● Respuesta concisa - que no sean 10 páginas
● Alineación al objetivo (¿realmente es útil?)
Calidad de texto
27. abstracta.us
● ¿Es tarea de testing?
● Análisis estático del prompt
● Probar variantes
○ ¿Cómo saber si encontramos una versión mejor, de mejor
calidad?
Revisar y probar el prompt
28. abstracta.us
● No es lo mismo probar el prompt en la web de ChatGPT que
por la API.
● Es importante probar contra la misma versión del modelo.
● Hay que tener en cuenta los parámetros usados (por ejemplo,
temperatura, máximo de tokens).
● Herramientas
○ Playground: https://platform.openai.com/playground
○ Postman
○ Scripts propios
Consideraciones al probar prompts
29. abstracta.us
● Revisión y experimentación con el prompt
● Revisar el código mirando:
○ ¿Cómo se procesan las entradas?
○ ¿Cómo se confecciona el prompt?
○ ¿Qué parámetros se están usando? (temperatura, max tokens, etc)
○ ¿Cómo se procesa la respuesta de ChatGPT?
Revisión de código
Análisis de in/out
31. abstracta.us
Mock del servicio de OpenAI
● Mecanismo que nos permitirá probar distintas
respuestas o situaciones.
● Servicio caído
● Mensajes de error (ver documentación de error
codes).
● Casos borde (respuesta vacía, respuesta con
máximo de tokens, o con más del máximo por si
este cambiase a futuro).
● ¿Cómo se implementa?
● SoapUI service mocking
● WireMock
● Es importante que el sistema permita configurar la URL
del endpoint usado.
Pruebas de integración
33. abstracta.us
● Problema
○ Al querer actualizar el modelo (de gpt 3.5 a 4) o si encuentro un
error que me hace cambiar el prompt, ese ajuste me puede afectar
el resto de componentes.
○ ¿Cómo validar que no hay regresiones?
○ ¿Cómo automatizar ese test de regresión?
Test de regresión
34. abstracta.us
● Framework de OpenAI para evaluar LLMs o tools que usan LLMs
● Basicamente son test sets!
● Son simples de crear y no requieren código
● Incluye un registro open-source de evals desafiantes
● Cuenta con templates básicos y avanzados (usando otro prompt)
Lectura recomendada:
● Decoding OpenAI Evals
Test de regresión con Evals
35. abstracta.us
Basic Eval Templates
● Input_prompt
● Ideal_answers
● Se genera el output y se compara (con algún mecanismo de evaluación) con las ideal_answers
Test de regresión con Evals
36. abstracta.us
Model-Graded Eval Templates
● Input_prompt
● Ideal_answers
● Se genera el output y se compara con las ideal_answers a través de otro prompt a un LLM
Test de regresión con Evals
37. abstracta.us
● Problema
○ Al interactuar con ChatGPT pierdo control de la respuesta que se
da. No tengo control por el contenido, la utilidad o precisión, ni el
costo ni la performance.
○ ¿Cómo ver qué pasó?
Observabilidad
● Observabilidad
○ Métricas
○ Trazas
○ Logs
Lectura recomendada:
○ Monitor OpenAI with Datadog
39. abstracta.us
● Chatbots
● Sistemas que usan un LLM como servicio
● Sistemas que usan una cadena de AIs y servicios
● Sistemas copilotos
● Interfaces conversacionales
Testing con mayor foco en preparación de datos y
revisión de resultados no determinísticos
La observabilidad del sistema bajo pruebas va a ser
clave
¿Cómo serán los sistemas que
vamos a probar en los próximos
años?
Sistema bajo
pruebas