La democratización de la IA el año pasado brindó dos grandes oportunidades a los desarrolladores: hacer que sea increíblemente fácil integrar la IA de vanguardia en sus proyectos e incorporar eficiencias impulsadas por la IA en sus procesos de desarrollo.
Sublayer, un framework de agentes de IA basado en Ruby, demuestra el poder y la eficiencia de la API de Gemini al integrar nuestros modelos 1.5 en su oferta principal para desarrolladores, así como dentro de sus propios flujos de trabajo de herramientas.
Una de las ventajas de la IA para desarrolladores es que permite a los equipos, especialmente de startups pequeñas en etapa inicial, mejorar su productividad con pocos recursos. Para muchos, esto podría ser algo tan simple pero fundamental como la documentación. En sus propios flujos de trabajo, Sublayer resuelve esto integrando su biblioteca con Gemini 1.5 Pro y creando automatizaciones de IA para respaldar el trabajo de mantener su documentación actualizada e identificar áreas de mejora.
"Todo surgió porque la enorme ventana de contexto de Gemini realmente te da el espacio para probar nuevas ideas sin tener que trabajar en implementaciones complejas y optimizadas por adelantado", dice Scott Werner, CEO de Sublayer, quien recientemente escribió sobre este concepto en Waste Inferences.
El proceso funciona así:
2. El agente genera un mensaje que contiene todo el contenido de la biblioteca, todo el contenido de la documentación y todo el contenido relevante del PR, junto con instrucciones que explican la tarea, y lo envía a Gemini.
3. Gemini responde con resultados estructurados que contienen las rutas de los archivos, los nombres y el contenido que la biblioteca de Sublayer convierte en un objeto para usar.
4. Finalmente, el agente toma la información estructurada que recibió y la utiliza para crear una nueva rama, realizar los cambios solicitados en los archivos y enviar un nuevo PR.
# Get the diff from the PR
diff = GithubGetDiffAction.new(repo: repo, pr_number: pr_number).call
# Get the contents of the library repository and docs repository
code_context = GetContextAction.new(path: code_repo_path).call
doc_context = GetContextAction.new(path: doc_repo_path).call
# Use Gemini 1.5 Pro to decide whether this PR requires a documentation update
result = DocUpdateNecessityGenerator.new(
code_context: code_context,
doc_context: doc_context,
diff: diff
).generate
# Use Gemini 1.5 Pro to generate suggested changes to the documentation
doc_update_suggestions = DocUpdateSuggestionGenerator.new(
code_context: code_context,
doc_context: doc_context,
context_ignore_list: context_ignore_list,
diff: diff
).generate
# Use Gemini 1.5 Pro to generate the changes to the suggested files
file_updates = DocUpdateGenerator.new(
code_context: code_context,
suggestions: suggestions,
doc_context: doc_context,
context_ignore_list: context_ignore_list
).generate
# Update each of the files returned by Gemini 1.5 Pro and create a new PR
Consulta el código de flujo de trabajo completo en los ejemplos de código abierto de Sublayer
Después del éxito de este primer proyecto, se expandieron a aún más agentes que supervisan repositorios de recursos separados para centrarse en mantener actualizada una página de catálogo específica de sus documentos. Incluso hay una tarea similar que se ejecuta durante la noche en la que Gemini analiza la documentación actual, identifica algunas áreas de mejora, las clasifica en función del impacto y genera un solo PR para que el equipo de Sublayer revise al día siguiente.
Además de hacer que su propia infraestructura y herramientas de desarrollo sean más eficientes, Sublayer también es compatible con los modelos de Gemini dentro de la funcionalidad central de su producto.
La misión de Sublayer es capacitar a los desarrolladores individuales y a los equipos pequeños para abordar proyectos ambiciosos que anteriormente estaban fuera de su alcance debido a su costo o complejidad. Ellos necesitan automatizar tareas tediosas, lentas y repetitivas, por lo que son el caso de uso perfecto para la IA. Esto puede variar desde migraciones de código a gran escala, donde deben repetirse miles de veces operaciones similares, hasta mejoras diarias logradas con la automatización de pequeñas tareas de una lista que consuman mucho tiempo y energía.
Uno de los principales desafíos para Sublayer es apoyar a la comunidad de desarrolladores de Ruby, que siempre fue relativamente desplazada en el ecosistema de IA. La integración de Gemini les permitió satisfacer la creciente demanda de soporte para Gemini dentro de sus herramientas. La implementación de Gemini de Sublayer es altamente eficiente y solo requiere unas 60 líneas de código, gracias a su capa de abstracción. Usan resultados estructurados e interactúan con modelos en un proceso iterativo de un solo turno. Este enfoque simplifica el desarrollo y la depuración, lo que ayuda a los desarrolladores a crear aplicaciones sólidas.
"Al crear aplicaciones basadas en LLM, divide el problema en los componentes más pequeños posibles", afirma Werner. "La idea es diseñar programas que manejen cualquier salida de modelo de manera efectiva, lo que incluso puede significar agregar pasos intencionalmente para que una persona los revise y edite antes de continuar".
Para Sublayer, los LLM como Gemini son piezas esenciales de infraestructura, similares a las bases de datos. Su framework está diseñado para integrar de manera óptima las llamadas tanto a Gemini 1.5 Pro como a Gemini 1.5 Flash, y recuperar datos estructurados que los desarrolladores pueden utilizar fácilmente en sus aplicaciones. Este enfoque abre un mundo de posibilidades, desde la extracción de información de diversas fuentes de datos hasta la generación de código y la transformación de bases de código en diversos idiomas y bibliotecas. Sublayer incluso utiliza los modelos Gemini para permitir a los usuarios generar nuevos componentes funcionales dentro del propio framework. Esta característica de "autoensamblaje" fomenta la experimentación y permite a los usuarios explorar ideas novedosas rápidamente.
"Gemini es excelente para resolver todos los problemas que nuestro framework está diseñado para facilitar: generación de código, descomposición de tareas, seguimiento de instrucciones y generación de nuevas estructuras de datos basadas en ejemplos".
– Scott Werner,CEO de Sublayer
De cara al futuro, Sublayer se está preparando para lanzar Augmentations.ai, una plataforma que hace que las automatizaciones que están creando estén disponibles para todos los equipos de desarrollo. Su lanzamiento inicial contará con dos herramientas impulsadas por Gemini 1.5 Pro: Semantic Linting, que permite a los equipos crear reglas de revisión de código impulsadas por IA que entienden el contexto y aplican prácticas recomendadas en evolución, y Weekly Summaries, que convierte la actividad de desarrollo en múltiples repositorios y herramientas de gestión de productos en información procesable para el liderazgo.
Planean continuar usando una combinación de Gemini 1.5 Pro para tareas más complejas y Gemini 1.5 Flash para funciones más sensibles a la latencia y orientadas al usuario a medida que lanzan más herramientas en la plataforma Augmentations. Este trabajo también retroalimentará su framework de código abierto, lo que le permitirá a la comunidad de Ruby aprovechar la nueva funcionalidad de Gemini a medida que salga, a la vez que se impulsa con usos reales del equipo de Sublayer.
La historia de Sublayer muestra el potencial transformador de la API de Gemini. Es un testimonio de la facilidad con la que los desarrolladores pueden integrar Gemini en sus flujos de trabajo, abriendo un mundo de oportunidades para la innovación y la automatización. Para comenzar a desarrollar con modelos de Gemini, lee nuestra documentación de la API.