- E se reduzirmos o tempo de escrever código ruim?
- Sim, e vamos fazer quebras de linha no estilo gatinho!
Ainda não há suporte na documentação para RAG e semântica.
IDE
E como vocês acham essa funcionalidade: gerar descrições do que o código faz com base no próprio código?
Se você trabalha no PyCharm/IDEA, talvez tenha acesso ao plug-in Devoxx, que é capaz de interagir com LLMs para revisão de código e qualquer outra tarefa solicitada.
A seguir, será apresentado um exemplo de integração do plug-in com o serviço API do LM Server.
Funcionalidades
- Suporte a modelos linguísticos locais e em nuvem: Anthropic, Groq, Ollama, OpenAI, …
- Dicas para trechos selecionados de código
- Revisão de código
- Geração de descrições sobre o que o código faz.
Plano de instalação
- Instale o plug-in (veja abaixo)
- Certifique-se de que os serviços Ollama, LMStudio ou GPT4All estejam em execução
- Atualize os prompts nas configurações
- Opcional: Adicione chaves API para provedores de LLMs em nuvem
- Comece a usar o plug-in
Instale o plug-in via marketplace. Caso ele não consiga ser instalado (devido a regulamentações de controle de exportação, open-source sim):
…você pode copiar esse plug-in de outro computador ou GitHub. Observe os seguintes diretórios e arquivos (exemplo com Ubuntu):
# na pasta pessoal
$ find . -iname 'devoxx*'
./.config/JetBrains/PyCharmCE2025.1/options/DevoxxGenieSettingsPlugin.xml
./.cache/JetBrains/PyCharmCE2025.1/DevoxxGenie
./.cache/JetBrains/PyCharmCE2025.1/plugins/DevoxxGenie.zip
./.local/share/JetBrains/PyCharmCE2025.1/DevoxxGenie
```- Extraia o arquivo DevoxxGenie.zip na pasta `~/.local/share/JetBrains/PyCharmCE2025.1` ou na IDE, conforme o caso. No meu caso, precisei criar manualmente a pasta PyCharmCExxx — ela não existia.
- Faça upload do arquivo de configuração `~/.config/JetBrains/PyCharmCE2025.1/options/DevoxxGenieSettingsPlugin.xml`.
- Opcional. Talvez você precise adicionar o plugin e seu arquivo ZIP ao cache.
Agora, inicie a IDE e você deverá ver o plugin com as configurações prontas (na aba Installed):

## Configuração
1. Após instalar o plugin, acesse as configurações do programa (via menu File) para ajustar os parâmetros do LLM, como temperatura, número máximo de tokens de saída, tentativas repetidas e timeouts. Se desejar, também pode adicionar chaves API de serviços LLM em nuvem.
> DevOps: Pode-se preparar um serviço API que funcione como um servidor HTTP não protegido. Não use-o remotamente se estiver lidando com dados sensíveis, pois o tráfego pode ser interceptado e os dados abertos serão utilizados por malfeitores.
Foi mencionado que, para determinar corretamente o contexto da janela no LM Studio, deve-se usar o URL `http://localhost:1234/api/v0`, o que parece incorreto. O contexto da janela da modelo deve ser aumentado ao carregá-lo (4096 → 8192).

Na aba Prompts, você pode configurar o prompt do sistema e os prompts do usuário.
O prompt do sistema é o que é enviado junto com o prompt do usuário e define a área de tarefas, limites de busca e formato da resposta. Esse é um ponto crítico.
Remova das linhas do prompt do sistema:
The Devoxx Genie is open source and available at GitHub - devoxx/DevoxxGenieIDEAPlugin: DevoxxGenie is a plugin for IntelliJ IDEA that uses local LLM's (Ollama, LMStudio, GPT4All, Jan and Llama.cpp) and Cloud based LLMs to help review, test, explain your project code..
You can follow us on Bluesky @ @devoxxgenie.bsky.social on Bluesky.
Todas as modelos de linguagem entendem a formatação Markdown, portanto, você pode criar prompts estruturados com listas, subitens e blocos de código.
> DevOps: Os prompts padrão (com restrições) estão definidos no arquivo:
>
> ```
> ~/.config/JetBrains/PyCharmCE2025.1/options/DevoxxGenieSettingsPlugin.xml
> ```
>
> As modelos têm a capacidade de traduzir consultas em russo para inglês. Traduções incorretas de termos podem afetar significativamente a qualidade da resposta, assim como perguntas imprecisas. Compare os seguintes prompts: “encontre a página com a instrução” e “forneça o link para a página”. Em qual caso o bot fornecerá o link? Solicite exatamente o que espera (como se estivesse pedindo a um humano).
<br>
2. Na aba Web search, há a opção de interação da modelo com a internet (habilitada por padrão). Se você tiver uma chave pessoal do Google Web Search, pode utilizá-la.
3. Detalhes sobre a configuração RAG serão adicionados posteriormente:

## Uso do plugin
1. Agora, abra o arquivo original e selecione um trecho de código, ou clique com o botão direito no arquivo do projeto para adicioná-lo ao contexto da janela.
Clique no botão <kbd>Devoxx</kbd>:

2. Escolha o modelo adequado da lista suspensa. Infelizmente, alguns modelos da lista podem não ser compatíveis com o uso, por exemplo, modelos de embedding. O filtro de modelos não pode ser ajustado.

3. Após definir o contexto da solicitação, você pode começar a fazer perguntas ou usar comandos pré-definidos: /test, /review, /explain, /help.
4. Assim que receber a resposta da LLM selecionada, use os botões acima do código para copiar os exemplos de código para a área de transferência ou colá-los em seu arquivo. Ou você pode obter um texto pronto para descrever a funcionalidade do script no formato Markdown (em inglês, mas você pode especificar no prompt qual idioma deseja usar na resposta).
## Exemplo de saída de descrição
Análise do script `/explain` com o modelo `qwen2.5-coder-14b-instruct`:
- Número de linhas de código: 500
- Tamanho do contexto do modelo: 8192 (aumentado do padrão de 4096)
- Tokens:
```json
"usage": {
"prompt_tokens": 6298,
"completion_tokens": 620,
"total_tokens": 6918
}
-
Tempo de análise na placa RTX 5060Ti: 10 segundos
-
Qualidade da resposta: mais do que satisfatória no meu caso. O modelo conseguiu, com base no código e nos comentários, elaborar uma descrição estruturada sobre o que faz esse código.
Spoiler
Certamente! Vamos quebrar o script em termos mais simples para ajudar um desenvolvedor junior a entender sua funcionalidade.
Visão geral
Esse script foi projetado para processar arquivos PDF e imagens (JPG/JPEG) realizando reconhecimento óptico de caracteres (OCR) usando Tesseract. Ele verifica se o PDF contém texto, converte-o para formatos TIFF e PNG, se necessário, e registra todas as ações para relatórios detalhados.
Componentes principais
-
Definições de cor:
GREENeNCsão usados para saída colorida no terminal.
-
Função de ajuda (
show_help):- Fornece instruções de uso, descrição, opções e exemplos de como executar o script.
-
Análise de argumentos:
- O script usa um loop
whilecom instruçõescasepara analisar argumentos da linha de comando. - As opções incluem definir DPI, tipo de compressão, idioma do OCR e se manter ou não os arquivos TIFF/PNG/TXT após o processamento.
- O script usa um loop
-
Validação:
- Verifica se o DPI fornecido está dentro de um intervalo válido (72-1200).
- Garante que o algoritmo de compressão seja um dos tipos suportados (
group4,lzw,zip).
-
Configuração de logs:
- Inicializa um arquivo de log para registrar todas as ações e saídas.
-
Descoberta de arquivos:
- Usa
findpara localizar arquivos PDF e JPG/JPEG no diretório especificado ou no diretório atual, se nenhum for fornecido.
- Usa
-
Processamento de arquivos PDF:
- Para cada PDF, verifica se já contém texto usando
pdftotext. - Se texto for encontrado, registra o arquivo como PDF contendo texto.
- Se não houver texto, converte o PDF para formatos TIFF e PNG, e realiza OCR no TIFF.
- Para cada PDF, verifica se já contém texto usando
-
Processamento de arquivos de imagem:
- Para cada JPG/JPEG, realiza OCR diretamente usando Tesseract.
-
Cálculo de estatísticas:
- Calcula várias estatísticas, como total de caracteres reconhecidos, máximo de caracteres em um único arquivo, distribuição de texto por contagem de caracteres e mais.
- Calcula a porcentagem de PDFs escaneados e a velocidade média de reconhecimento.
-
Geração de resumo:
- Gera um relatório detalhado com todos os arquivos processados, estatísticas e opções usadas.
- Registra esse resumo tanto no terminal quanto no arquivo de log.Este comando define a DPI para 600, usa compressão LZW para arquivos TIFF, especifica os idiomas russo e inglês para OCR e não mantém os arquivos TIFF/PNG/TXT após o processamento.
Conclusão
O script é uma ferramenta abrangente para processamento em lote de PDFs e imagens com capacidade de OCR. Ele fornece logs e estatísticas detalhadas, tornando-o útil para automação e análise em tarefas de processamento de documentos.
Conclusão
Muito útil como ferramenta, tanto para a busca de soluções ótimas (por exemplo, escrita de funções ou documentação, visualização e registro), quanto para a elaboração de documentação.
Fluxo de trabalho
A arquitetura completa em desenvolvimento se apresenta assim. Na próxima publicação, explicarei como utilizar o Code Review com IA no GitLab antes do pedido de mesclagem (MR).
graph LR
classDef pclass fill:#f5f5dc
classDef wclass fill:#f96
classDef pmclass fill:#4f7
classDef yclass fill:#ff9
classDef oclass fill:#ffbf00
B(IDEA) --|Code pre-Review|B1(AI Devoxx):::pclass
B1 -- C(Edição):::wclass
C -- D{Auto-verificação}:::oclass
B --|Seu código é ideal|F
F -- H2{Code Review}:::oclass
H2 -.-|Revisão|B1
D --|Verificado|F(MR):::pmclass
H2 -- E(Merged)

