- Un proyecto que busca mejorar el desarrollo de software de código abierto creando un asistente automatizado o "agente" para el mantenimiento de código abierto
- Podría reducir la cantidad de trabajo repetitivo relacionado con el mantenimiento de código abierto
- La capacidad de los modelos de lenguaje grandes (LLM) para analizar el significado del lenguaje natural y convertir entre instrucciones en lenguaje natural y código de programa crea nuevas oportunidades para que los agentes interactúen con las personas de forma más fluida
- Los LLM serán solo una parte del agente, y la mayor parte del comportamiento del agente consistirá en ejecutar código estándar y determinista
- A diferencia del uso de LLM enfocado en el desarrollo, Oscar no intenta complementar ni reemplazar el proceso de escritura de código
- En cambio, la idea es enfocarse en las partes aburridas, como procesar issues entrantes o emparejar preguntas con documentación existente
Objetivos del proyecto
- Reducir el esfuerzo de mantenimiento necesario para resolver issues [resolver no siempre significa corregir]
- Reducir el esfuerzo de mantenimiento necesario para resolver listas de cambios (CL) o pull requests (PR) [resolver no siempre significa enviar o fusionar]
- Reducir el esfuerzo de mantenimiento necesario para resolver preguntas en foros
- Ayudar a que más personas puedan convertirse en mantenedores productivos
Enfoque
- Como el trabajo repetitivo del mantenimiento de código abierto no se limita a los proyectos en Go, el objetivo es construir una arquitectura que todos los proyectos de software puedan reutilizar y ampliar
- Hasta ahora se han identificado tres funciones que serán una parte importante de Oscar:
- Indexar y exponer el contexto relevante del proyecto durante las interacciones con contribuyentes
- Controlar herramientas deterministas usando lenguaje natural
- Mejorar en tiempo real y etiquetar/encaminar adecuadamente, durante el envío o justo después, mediante el análisis de issues y de CL/PR
Indexación y exposición del contexto relevante del proyecto
- Los LLM pueden analizar documentos generando embeddings, que son vectores unitarios de punto flotante de alta dimensión con la propiedad de mapear documentos con significados similares a vectores que apuntan en direcciones similares
- Combinados con una base de datos vectorial para buscar vectores parecidos al vector de entrada, los embeddings de LLM ofrecen una forma muy efectiva de indexar todo el contexto de un proyecto de código abierto
- El agente prototipo implementa esta función y responde a nuevos issues en el repositorio de Go con una lista de hasta 10 enlaces de alta relevancia
Uso de lenguaje natural para controlar herramientas deterministas
- A medida que los proyectos de código abierto crecen, aumenta la cantidad de herramientas útiles, y puede ser difícil seguirles la pista a todas y recordar cómo usar cada una
- Los LLM son muy efectivos para convertir entre una intención escrita en lenguaje natural y una forma ejecutable de esa intención, como código de programa o llamadas a herramientas
- Se hicieron experimentos con Gemini para seleccionar e invocar herramientas disponibles a fin de satisfacer solicitudes en lenguaje natural, pero todavía no hay nada que funcione de verdad
Análisis de issues y de CL/PR
- Publicar sobre issues relacionados es una forma limitada de análisis, pero planean añadir otros tipos de análisis semántico, como identificar issues sobre rendimiento y agregar la etiqueta "rendimiento"
- También planean explorar si es posible analizar los reportes lo suficientemente bien como para identificar si hace falta más información para que el reporte sea útil
- Todos estos análisis y las interacciones resultantes funcionan mucho mejor cuando ocurren justo después de que se envía el reporte, mientras la persona que lo reportó sigue disponible y participando
Prototipo
- El primer prototipo para explorar Oscar se llama Gaby (Go AI bot), se ejecuta en el rastreador de issues de Go y publica como @gabyhelp
- Hasta ahora, Gaby indexa el contenido de issues de Go en GitHub, indexa la documentación de Go en go.dev y responde a nuevos issues con enlaces relevantes
- La estructura de Gaby facilita ejecutarlo con cualquier LLM, capa de almacenamiento y base de datos vectorial en todo tipo de servicios de hosting
Aún no hay comentarios.