Uso de IA generativa para la resolución de problemas y la confiabilidad del software
HogarHogar > Noticias > Uso de IA generativa para la resolución de problemas y la confiabilidad del software

Uso de IA generativa para la resolución de problemas y la confiabilidad del software

Jun 29, 2023

25 de julio de 2023 por Dotan Horovits

En el acelerado panorama digital actual, mantener sus servicios en funcionamiento y con buen rendimiento, especialmente para los servicios en línea y basados ​​en la nube, es crucial para seguir siendo competitivo. Los problemas de tiempo de inactividad o latencia pueden alejar a los clientes, especialmente cuando todo lo que se necesita es un clic para cambiar a una solución SaaS de la competencia. Los equipos de DevOps y de ingeniería de confiabilidad del sitio (SRE) enfrentan el desafío constante de minimizar el tiempo medio de reparación (MTTR) al lidiar con errores y problemas. Por muy valiosos que sean los motores de búsqueda como Google, la gran cantidad de información disponible puede hacer que encontrar las soluciones adecuadas sea una tarea que requiera mucho tiempo. ¿Qué pasaría si hubiera una manera de automatizar y agilizar este proceso, haciendo que la investigación de errores sea más inteligente, enfocada y eficiente?

Este artículo lo guiará a través del proceso de resolución de errores desde la primera línea de registro oscura hasta la identificación del problema oculto en ella. Resolveremos el problema utilizando varias tácticas, lo que en última instancia conducirá al uso de IA generativa para reducir el MTTR y brindar recomendaciones de TI precisas. Este viaje incluye medidas y principios útiles que pueden aplicar los equipos de DevOps y explora el potencial para aplicar la IA generativa.

Imagínese esto: aparece una línea de registro con un oscuro mensaje de error, y el primer instinto es buscar este mensaje en Google para encontrar posibles soluciones. Después de todo, alguien más debe haber encontrado un problema similar, ¿verdad? Sin embargo, la abundancia de recursos y resultados de búsqueda puede resultar abrumadora. Los resultados de la búsqueda a menudo se muestran según la relevancia del sitio web, no necesariamente la relevancia del error en sí. En consecuencia, se pierde un tiempo precioso examinando innumerables resultados de búsqueda, lo que lleva más tiempo para comprender y corregir el error. Para los equipos de DevOps y SRE responsables de mantener la estabilidad del sistema, reducir el MTTR es un indicador clave de rendimiento (KPI) crucial. Esto plantea la pregunta: ¿Cómo podemos aprovechar la automatización y la inteligencia artificial para mejorar el proceso de búsqueda y acelerar la resolución de errores?

En el intento inicial de nuestra organización de abordar este desafío, nos concentramos en aprovechar técnicas de crowdsourcing para obtener resultados más relevantes que la búsqueda de fuerza bruta en Google. Además, queríamos automatizar el proceso y ejecutarlo fuera de línea para que, cuando ocurra un incidente, podamos ofrecer información útil en lugar de iniciar la búsqueda porque el sistema no funciona o no funciona correctamente.

El enfoque implica una fase fuera de línea y una fase en línea. La fase fuera de línea implicó analizar todos nuestros registros ingeridos e identificar patrones de registro comunes. Esto también nos permitió contar la frecuencia con la que se producía este patrón en nuestro sistema y su prevalencia. Luego rastreamos foros tecnológicos relevantes como StackOverflow, Google Groups y Bing Groups en busca de discursos relevantes sobre estos patrones de registro que pudieran ofrecer soluciones relevantes. El siguiente paso fue clasificar los resultados de la búsqueda por relevancia y seleccionar los cinco enlaces más relevantes.

La fase fuera de línea resultó en una biblioteca de patrones de registro conocidos y, para cada uno, una visión cognitiva que contiene estos enlaces, así como información adicional como el nivel de gravedad, cuántas veces ocurrió este patrón en los registros, la fecha de la primera aparición. y etiquetas adicionales de tecnologías, herramientas y dominios involucrados.

La fase en línea ocurre en tiempo real a medida que ingresan nuevos registros. Al ingerir el registro, se compara automáticamente con todos los patrones conocidos; si coincide con uno, obtiene la percepción cognitiva de ese patrón. Esto significa que tan pronto como llega el registro problemático, el ingeniero de DevOps ya ha enfocado y clasificado los resultados de búsqueda y el contexto para comenzar, lo que acelera el proceso de investigación.

Después de reflexionar sobre nuestro enfoque inicial, tuvimos una epifanía. Los grandes modelos de lenguaje (LLM) como ChatGPT ya habían rastreado la web y absorbido una gran cantidad de información. Entonces, ¿por qué no aprovechar sus capacidades y pedirles información directamente? La idea era simple: dejar que la IA "lea las publicaciones" por nosotros y nos brinde recomendaciones. Comenzamos formulando preguntas específicas como "¿Cuáles podrían ser los posibles errores?" e incluso fue un paso más allá al pedir más medidas de investigación. Sin embargo, la implementación de este enfoque aparentemente sencillo trajo consigo su propia serie de desafíos. Necesitábamos ejecutar un preprocesamiento antes de preguntarle a la IA generativa, así como ejecutar un posprocesamiento en las respuestas que devolvía, para obtener lo que esperábamos. Veamos qué implica ese proceso.

Antes de pedir ayuda a ChatGPT (o cualquier otra herramienta de IA generativa), fueron necesarios varios pasos preparatorios. Primero, tuvimos que analizar los registros entrantes, identificar patrones y calificarlos según su gravedad. Esto nos permitió priorizar los temas más críticos.

En segundo lugar, tuvimos que diseñar cuidadosamente nuestras indicaciones para la IA generativa utilizando ingeniería de indicaciones, asegurándonos de formular nuestras preguntas de una manera que produjera respuestas precisas y relevantes. La ingeniería de indicaciones es la práctica de diseñar estratégicamente indicaciones o instrucciones efectivas para que los modelos de lenguaje logren respuestas más precisas. Implica especificar cuidadosamente el formato de entrada, el contexto o las restricciones para guiar el proceso de generación del modelo y obtener resultados más precisos y deseados. Esto es válido para cualquier uso de la IA generativa, y para nuestro caso en particular. Más allá de la precisión, la ingeniería rápida nos ayudó a ajustar el formato solicitado y la longitud de la respuesta para que se ajustara al párrafo de "resumen ejecutivo" que mostramos al usuario. Esto aseguró que no fuera demasiado largo ni demasiado corto para proporcionar información significativa.

Además, tuvimos mucho cuidado en desinfectar las consultas y eliminar cualquier dato confidencial para mantener la privacidad y la seguridad. Este paso fue especialmente crucial para quienes trabajan con servicios públicos, destacando la importancia de proteger la información de identificación personal (PII) de los usuarios, como nombres, correos electrónicos, números de teléfono, direcciones IP o coordenadas GPS.

Una vez realizado todo este preprocesamiento, enviamos el mensaje a la IA generativa. Es importante tener en cuenta que es posible que los servicios públicos no siempre estén disponibles (ya que algunos devolvieron un mensaje de "servicio está ocupado" cuando trabajaban con ChatGPT y otros servicios), por lo que la automatización debe encargarse de los retrasos y emplear reintentos según sea necesario.

Finalmente, a medida que se recibieron respuestas de la IA, fue esencial validarlas. Realizamos un análisis y filtramos respuestas no relevantes de diferentes dominios (después de todo, un tronco también es producto de un árbol y Kafka también es novelista), asegurándonos de que no hubiera contenido ofensivo o información engañosa. También se evaluó cuidadosamente la integridad semántica de las respuestas.

Estos conocimientos de IA han demostrado ser una poderosa herramienta de resolución de problemas y los hemos convertido en una parte integral de nuestro servicio.

Este viaje no es único. De hecho, los equipos de DevOps pueden emplear medidas similares para sus propios datos de telemetría para servir a sus propios flujos de trabajo operativos. Estos principios, como la desinfección y validación de datos, se aplican incluso a otros tipos de datos y casos de uso.

Archivado en: Artículos de socios de AWS, Blogs, Negocio de DevOps, Entrega continua, DevOps y tecnologías abiertas, Doin' DevOps Etiquetado con: devops, IA generativa, modelo de lenguaje grande, LLM, mttr, observabilidad