Además, las bibliotecas o bibliotecas de componentes que teníamos eran bibliotecas internas y los LLMs no estaban entrenados en ellas. Así que otra pregunta era cómo podemos usarlo? Finalmente, ¿qué tipo de precisión o consistencia podemos esperar de este LLM? Así que en lugar de sumergirnos directamente en la implementación, lo que decidimos fue tener una exploración de tres días. Nos sentaremos como equipo e intentaremos responder a estas preguntas abiertas una por una y evaluar si los LLMs pueden ser utilizados para nuestro propósito o no.
Aunque llevamos a cabo muchas actividades durante nuestra fase de experimentación, me gustaría centrarme para esta presentación en una serie de experimentos iterativos que realizamos para mejorar la precisión del resultado y asegurar que los LLMs puedan transformar nuestros componentes correctamente. Para la primera iteración, lo que hicimos fue simplemente pasar los archivos fuente del componente al LLM. Luego le dimos al LLM un archivo de prueba que contenía diferentes usos de los componentes con variada complejidad y le pedimos que los migrara. Queríamos ver qué tan bien podía hacerlo. Los resultados no fueron muy buenos. LLM no pudo transformar los usos complejos. Podía transformar los usos simples, pero no podía transformar los usos complejos. El problema fue que después de investigar, le pedimos al LLM que hiciera demasiadas cosas de una sola vez o en un solo paso. Por ejemplo, leer el archivo fuente, extraer la interfaz, crear las instrucciones del transformador por sí mismo, luego hacer la migración. Encargarse de demasiados pasos redujo la precisión y causó que el LLM fallara.
Luego intentamos una segunda iteración donde intentamos simplificar la cantidad de datos y el contenido que enviamos al LLM al no dar el archivo fuente, sino dar la interfaz detallada del componente. Esta interfaz contenía toda la información que el LLM necesitaría saber sobre el componente como las propiedades, los subcomponentes, los valores predeterminados, etc., y luego le pedimos que hiciera lo mismo. Sin embargo, aquí también el LLM no hizo un buen trabajo. Podía transformar archivos simples o usos simples, pero no podía transformar usos más complejos. Una razón fue que el LLM estaba perdiendo mucho contexto aquí. Para dar un ejemplo, en la biblioteca fuente, el componente de botón tenía tres tamaños diferentes, pequeño, mediano, grande, mientras que en la biblioteca objetivo solo tenía dos tamaños, pequeño y grande. Entonces, si el LLM encuentra un botón con tamaño mediano, ¿qué debería hacer? ¿Dónde debería colocarlo, pequeño o grande?
Comments