- JetBrains Full Line Code Completion (FLCC) es una función de autocompletado impulsada por IA disponible en PyCharm y GoLand, y mejora enormemente la escritura efectiva de logs y la eficiencia de desarrollo
- Reduce la molestia de escribir repetidamente sintaxis de logs con f-strings o accesos a variables/dataframes, y la IA genera automáticamente logs breves y claros según el contexto
- Este modelo es un LLM pequeño que funciona en una PC local, con velocidad de inferencia rápida, bajo uso de memoria (alrededor de 1 GB) y sin riesgo de filtración de datos personales
- Según el paper de JetBrains, entrenaron un Transformer pequeño especializado en Python (100M de parámetros) para ofrecer autocompletado de una línea dentro de un contexto de código de 384 caracteres, reflejando activamente las características de Python también en el preprocesamiento de datos y la tokenización
- El caso de éxito de FLCC muestra claramente cuánto puede aumentar la productividad en el desarrollo real un modelo pequeño orientado a un propósito específico, en lugar de un LLM gigante
Escritura automática de logs con IA: el cambio real en la productividad del desarrollo
- JetBrains Full Line Code Completion (FLCC) ofrece en PyCharm (incluido por defecto desde finales de 2023), GoLand y otros entornos la función de autocompletar líneas completas de logs
- En procesamiento secuencial de datos, llamadas asíncronas a APIs, operaciones vectoriales y otros casos, el debugging con
print y los logs detallados son indispensables
- Había un problema frecuente de interrupción del flujo de debugging debido a la entrada repetitiva de f-strings, acceso a variables/listas/dataframes, elección del logger (
loguru vs logging) y más
- Por ejemplo, con algo como
logger.info(f'Adding a log for {your_variable} and {len(my_list)} and {df.head(0)}') de loguru, aunque parezca simple, implica varias capas de carga cognitiva: paréntesis, nombres de variables, sintaxis de dataframe, tipo de logger, etc.
Cómo FLCC cambió el flujo de desarrollo y los hábitos de escritura de logs
- Full Line Code Completion combina toda la información de contexto —extensión del archivo, ruta, código encima del cursor, etc.— como prompt de entrada del modelo para autocompletar automáticamente la línea de log más natural
- Como los logs sugeridos están optimizados para el contexto de variables, dataframes y operaciones, muchas veces son más claros que los que escribiría una persona
- Gracias a logs concisos, incluso después de terminar el debugging ya no hace falta borrarlos del código, y su calidad es suficiente para dejarlos tal cual en producción
-
Ejemplos
- Al revisar una URL de Redis:
redis = aioredis.from_url(settings.redis_url, decode_responses=True) → la IA sugiere automáticamente un log de conexión a Redis
- Al perfilar un DataFrame: después de definir los datos/columnas, sugiere automáticamente logs de perfilado como el
shape de df
Características técnicas e implementación del modelo FLCC de JetBrains
-
Funciona completamente en entorno local
- La inferencia del modelo y las recomendaciones de código se procesan solo en la PC local, por lo que es seguro y no hay preocupación por fugas de datos personales o código
- En Mac, el modelo ocupa alrededor de 1 GB, así que la carga de memoria es baja y la velocidad es muy alta
- No requiere infraestructura de LLMs grandes basada en la nube como vLLM, SGLM, Ray o PagedAttention
-
Arquitectura de un LLM pequeño especializado en Python
- La implementación inicial se basó en un Transformer decoder-only estilo GPT-2 (100M de parámetros) sobre PyTorch, y luego se mejoró con una arquitectura llama2
- De un subconjunto de The Stack de 6 TB (30 lenguajes), solo se usaron 45 GB, eliminando comentarios de código e imports innecesarios para enfocarse en la generación real de código
- Adaptado a las características de Python, el tokenizador de tipo BPE convierte estructuras como indentación y scope en tokens
<SCOPE_IN>/<SCOPE_OUT>, evitando desperdiciar tokens innecesariamente por diferencias de espacios
- El tamaño del vocabulario del tokenizer se optimizó a 16,384
- Como en Python es común agregar imports al final del código, esa costumbre también se reflejó en el entrenamiento del modelo, y los imports se eliminaron por completo de los datos
-
Entrenamiento y optimización
- Se entrenó durante varios días con 8 GPUs NVIDIA A100, y se evaluó con cross-entropy loss
- Mediante cuantización (Quantization), el modelo FP32 se convirtió a INT8 (400 MB → 100 MB) para cargarlo en la memoria de una PC sin problemas
- Inferencia en CPU con ONNX RT, y posteriormente se cambió el servidor a una arquitectura llama.cpp
- Se generan diversas secuencias de tokens con Beam Search (
k=20), y el salto de línea se usa como criterio de finalización del resultado
- Del contexto de 384 caracteres, el 50% se precarga y almacena en caché; al mover el cursor a código anterior, responde al instante sin reinferir
-
Estructura de plugins e integración
- El plugin de PyCharm está escrito en Kotlin y entrega tokens de inferencia mediante un servidor nativo local en C++
- API limpia, respuesta rápida y estrategia de caché optimizada para flujos de trabajo de desarrollo reales
El cambio real en productividad que trajo FLCC
-
Mejora simultánea en calidad y eficiencia de los logs
- Gracias a los logs autocompletados por IA, mejoran al mismo tiempo la calidad de los logs de debugging con
print/operación y la eficiencia al escribirlos
- Se sugieren automáticamente logs cortos y claros, por lo que el flujo de debugging no se interrumpe
-
El valor práctico de los LLM pequeños especializados
- En vez de un LLM grande, un modelo pequeño de IA optimizado para un propósito específico (completar una línea de código) puede aportar una gran innovación de productividad en el desarrollo real
- Es un caso representativo que muestra que, también en otros campos, los modelos pequeños orientados a objetivos concretos pueden mejorar de forma sustancial los workflows reales
5 comentarios
¡Ojalá aparezca algo así también en C++!
Gastar entre $20 y $200 al mes solo para eso es medio...
Creo que esta persona se refiere al costo de suscripción del IDE. FLCC no se ofrece en la versión gratuita.
Pero tampoco es que la gente pague solo por eso.
Ah, entonces no se puede usar en la versión gratuita. Lo entendí mal 😅
Como se ejecuta localmente, parece que no hará falta pagar.