- JetBrains Full Line Code Completion (FLCC) é um recurso de autocompletar com IA disponível no PyCharm e no GoLand, que aumenta bastante a eficiência na escrita de logs e a produtividade no desenvolvimento
- Ele reduz o trabalho repetitivo de escrever logs com f-strings ou de acessar variáveis/dataframes, e a IA gera automaticamente logs curtos e claros adequados ao contexto
- O modelo em questão é um pequeno LLM que roda no PC local, oferecendo inferência rápida, baixo uso de memória (cerca de 1GB) e sem risco de vazamento de dados pessoais
- Segundo o artigo da JetBrains, foi treinado um pequeno Transformer especializado em Python (100M de parâmetros) para oferecer autocompletar de uma linha dentro de um contexto de código de 384 caracteres, refletindo ativamente as características do código Python também no pré-processamento e na tokenização
- O sucesso do FLCC mostra bem como modelos pequenos orientados a propósito, e não LLMs gigantes, podem aumentar a produtividade no desenvolvimento real
Escrita automática de logs com IA: a mudança real na produtividade de desenvolvimento
- O JetBrains Full Line Code Completion (FLCC) oferece, no PyCharm (embutido por padrão desde o fim de 2023), no GoLand e em outros, o recurso de autocompletar instruções inteiras de log
- Em processamento sequencial de dados, chamadas assíncronas de API, operações vetoriais etc., debug com
print e logs detalhados são indispensáveis
- Havia o problema de o fluxo de debug ser interrompido com frequência por causa de entradas repetitivas como f-strings, acesso a variáveis/listas/dataframes e a escolha do logger (
loguru vs logging)
- Por exemplo, em algo como
logger.info(f'Adding a log for {your_variable} and {len(my_list)} and {df.head(0)}'), apesar de parecer simples, há várias etapas de carga cognitiva: parênteses, nomes de variáveis, sintaxe de dataframe, tipo de logger etc.
Como o FLCC mudou o fluxo de desenvolvimento e o hábito de escrever logs
- O Full Line Code Completion combina como prompt de entrada do modelo todas as informações de contexto — extensão do arquivo, caminho e código acima do cursor — para autocompletar automaticamente a instrução de log mais natural
- Como os logs sugeridos são otimizados para o contexto de variáveis, dataframes e operações, muitas vezes ficam mais claros do que quando escritos manualmente
- Graças a logs concisos, mesmo depois de terminar o debug, não há necessidade de apagar os logs do código, e a qualidade já é suficiente para mantê-los no ambiente de produção
-
Exemplos
- Ao verificar uma URL do Redis:
redis = aioredis.from_url(settings.redis_url, decode_responses=True) → a IA sugere automaticamente um log de conexão com o Redis
- Ao fazer profiling de um DataFrame: depois de definir os dados/colunas, ela sugere automaticamente logs de profiling como o
shape de df
Características técnicas e implementação do modelo FLCC da JetBrains
-
Funciona totalmente em ambiente local
- A inferência do modelo e as sugestões de código são processadas apenas no PC local, então é seguro, sem preocupação com vazamento de dados pessoais ou código
- No Mac, o modelo tem cerca de 1GB, com baixa pressão de memória e velocidade muito alta
- Não requer infraestrutura de grandes LLMs em nuvem como vLLM, SGLM, Ray ou PagedAttention
-
Estrutura de pequeno LLM especializado em Python
- Implementado inicialmente em PyTorch como um Transformer decoder-only estilo GPT-2 (100M de parâmetros), depois aprimorado para a arquitetura llama2
- De um subconjunto do The Stack (30 linguagens) com 6TB, usou apenas 45GB, removendo comentários de código e imports desnecessários para focar na geração real de código
- Considerando as características da linguagem Python, o tokenizador em BPE converte estruturas como indentação e escopo em tokens
<SCOPE_IN>/<SCOPE_OUT>, evitando desperdício desnecessário de tokens por diferenças de espaçamento
- O tamanho do vocabulário do tokenizer foi otimizado para 16.384
- Como em Python é comum adicionar imports no fim do código, isso também foi refletido no treinamento, e os imports foram removidos dos dados
-
Treinamento e otimização
- Treinado por vários dias em 8 GPUs NVIDIA A100, com avaliação por cross-entropy loss
- Com quantização, o modelo FP32 foi convertido para INT8 (400MB→100MB), permitindo carregá-lo no PC sem pesar na memória
- Inferência em CPU com ONNX RT e, depois, mudança de servidor para a estrutura do llama.cpp
- Geração de várias sequências de tokens com Beam Search (
k=20), usando o caractere de quebra de linha como critério de término do resultado
- Dos 384 caracteres da janela de contexto, 50% são pré-buscados e armazenados em cache antecipadamente, permitindo resposta imediata sem reinferência ao mover o cursor para código anterior
-
Estrutura de plugin e integração
- O plugin do PyCharm foi escrito em Kotlin e fornece tokens de inferência por meio de um servidor nativo local em C++
- API limpa, resposta rápida e estratégia de cache otimizadas para o fluxo de trabalho de desenvolvimento no dia a dia
Mudanças práticas de produtividade trazidas pelo FLCC
-
Melhora simultânea na qualidade e na eficiência dos logs
- Graças aos logs de autocompletar com IA, a qualidade dos logs de debug com
print/logs de produção e a eficiência de escrita melhoram ao mesmo tempo
- Logs curtos e claros são sugeridos automaticamente, sem interromper o fluxo de debug
-
Valor prático de pequenos LLMs especializados
- Em vez de grandes LLMs, pequenos modelos de IA otimizados para um objetivo específico (completar uma linha de código) podem trazer uma grande inovação de produtividade no desenvolvimento real
- É um caso representativo que mostra como modelos pequenos orientados a propósito também podem melhorar de forma concreta fluxos de trabalho em outras áreas
5 comentários
Seria bom se algo assim surgisse também para C++!
Gastar de US$ 20 a US$ 200 por mês só pra isso é meio...
Acho que essa pessoa está falando do custo da assinatura da IDE. O FLCC não é oferecido na versão gratuita.
Mas também não é como se as pessoas pagassem só esperando aquilo.
Ah, então não é possível usar na versão gratuita. Eu entendi errado 😅
Como roda localmente, acho que não vai precisar pagar nada.