![Variáveis e tipos de dados Golang: uma introdução](https://optimuscloud.com.br/wp-content/uploads/2024/04/1712267046_Variaveis-e-tipos-de-dados-Golang-uma-introducao-150x150.png)
Variáveis e tipos de dados Golang: uma introdução
4 de abril de 2024![Featued image for: Golang 1.22 Redefines the For Loop for Easier Concurrency](https://optimuscloud.com.br/wp-content/uploads/2024/04/Golang-122-redefine-o-loop-For-para-uma-simultaneidade-mais-150x150.jpg)
Golang 1.22 redefine o loop For para uma simultaneidade mais fácil
4 de abril de 2024A JetBrains está oferecendo preenchimento completo de código de linha em seu IDE, cortesia de um modelo de IA que roda em máquinas locais para que o código não precise ser enviado para fora do local.
Ele foi projetado para atrair setores com regulamentações rígidas de privacidade de dados, como saúde e finanças, ou onde quer que as organizações possam hesitar em enviar código, observou a empresa.
“Como funciona o nosso produto? Você executa um modelo de linguagem não tão grande, mas inteligente, em seu computador local e tudo acontece localmente”, explicou Daniel Savenkov, engenheiro sênior de aprendizado de máquina da JetBrains. “É muito importante porque nem todo mundo está pronto para compartilhar seu código na nuvem.”
O modelo é executado em máquinas internas
O fato de o preenchimento de código do JetBrains ser executado localmente o torna diferente de outras ferramentas de competição de código, incluindo o Copilot do GitHub, que depende de chamadas externas para o grande modelo de linguagem baseado em nuvem subjacente a ele. Embora existam acordos de usuário em vigor com o Copilot que proíbem o uso do código para qualquer outra coisa que não seja a conclusão do código, em alguns setores isso simplesmente não é suficiente devido a questões de segurança, disse Savenkov.
O modelo de autocompletar código da JetBrains ainda é um modelo de linguagem grande, mas com 100 milhões de parâmetros. Em comparação, os modelos padrão da indústria são 100 vezes maiores, acrescentou Savenkov. O modelo menor é um dos motivos pelos quais o modelo de conclusão de código lida com a conclusão de código de linha completa em vez de grandes blocos de código. É realmente difícil trabalhar com grandes blocos de código gerado, disse Savenkov. Como algumas sugestões podem não ser boas, o codificador deverá revisar todo o código criado pelo modelo de IA.
Há algum debate na indústria sobre qual comprimento de conclusão de código funciona melhor, disse Savenkov. Alguns produtos de autocompletar código podem produzir grandes pedaços de código, mas também podem alucinar coisas como chamadas de API. A JetBrains decidiu por uma linha de conclusão de código como uma “compensação bastante justa” com a qual os desenvolvedores podem trabalhar facilmente, acrescentou.
O fato de ser executado localmente também minimiza problemas de latência.
“É uma tarefa muito mais simples do que gerar 10 linhas de código ou um bloco ou um método inteiro ou uma classe inteira”, disse ele. “Por causa disso, temos a oportunidade de optar por modelos menores e obter resultados realmente significativos e úteis. Então foi mais ou menos assim que chegamos aqui, onde temos (um) modelo local, não tão grande, gerando uma única linha de código.”
LLM menor oferece qualidade comparável
A qualidade é semelhante, embora o LLM seja menor, afirmou.
“Não temos uma queda drástica de qualidade em nosso caso de uso, em comparação com modelos realmente grandes baseados em nuvem. Claro, se começarmos a tentar gerar blocos de código, a diferença será muito maior, mas mantendo uma única linha, a diferença não é tão grande”, disse Savenkov ao The New Stack.
O modelo também aproveita informações do IDE para filtrar alucinações, como chamadas a APIs que não existem. Isso também ajuda a garantir que as sugestões de código não contenham erros de sintaxe, como variáveis ou métodos inexistentes, observou ele.
Além disso, como o modelo de linguagem é treinado em certas linguagens e estruturas, em vez de ser treinado de maneira geral, ele pode ter um tamanho menor, acrescentou Mikhail Kostyukov, gerente de produto de ML da empresa.
A JetBrains testou o recurso de autocompletar código no PyCharm, seu IDE Python. A partir de hoje, ele está disponível para Java, Kotlin, JavaScript, TypeScript, CSS, PHP, Go e Ruby nos IDEs JetBrains correspondentes prontos para uso: IntelliJ IDEA, WebStorm, PhpStorm, GoLand e RubyMine.
Nos próximos meses, a empresa estenderá a funcionalidade para C#, Rust e C++ em todos os IDEs JetBrains que suportam essas linguagens, incluindo Rider, RustRover, CLion Nova e muito mais.
Além de sua oferta de preenchimento de código, a JetBrains oferece um AI Assistant como um serviço complementar de assinatura que pode preencher automaticamente blocos inteiros de código. O AI Assistant também oferece geração de testes aprimorada e conclusão de código em nuvem, prompts personalizados para mensagens de commit, capacidade de criar arquivos a partir de bate-papo de IA e geração de código atualizado no editor, disse a empresa.
Está disponível em IntelliJ IDEA, PyCharm, PhpStorm, ReSharper e outros IDEs JetBrains; bem como no Fleet, como recurso complementar.
Esta atualização 2024.1 também introduziu outros novos recursos aos IDEs da JetBrain, incluindo um recurso de terminal revisado com melhorias que simplificam as tarefas de linha de comando. O terminal agora permite a navegação dentro de blocos, aninhando cada comando separadamente, um recurso de conclusão de comando e fácil acesso ao histórico de comandos, observou a empresa em um comunicado à imprensa. Entre as melhorias em IDEs específicos estão:
- O IntelliJ IDEA fornecerá suporte para os recursos do recém-lançado Java 22. Ele também incorpora o novo modo Kotlin K2 baseado no compilador K2 Kotlin para análise de código aprimorada.
- RubyMine pode executar comandos VCS no contexto do SDK local do produto atual.
- PyCharm 2024.1 traz novos recursos para notebooks Jupyter integrados, junto com controle de versão simplificado com nova comparação visual, renderização de widgets e a capacidade de explicar pandas e DataFrames Polars com AI Assistant. Além disso, toda a documentação sobre os modelos Hugging Face pode ser acessada diretamente no PyCharm.
- PhpStorm adiciona suporte para AssetMapper do Symfony. O comunicado de imprensa observou que os desenvolvedores agora podem instalar rapidamente módulos e pacotes ausentes via importmap.php e utilizar o preenchimento automático completo para suas classes e métodos. Eles também podem gerar testes Pest para classes e métodos PHP e criar novos testes Pest diretamente no menu de ações de intenção.
A postagem JetBrains lança conclusão de código de IA em máquinas locais apareceu pela primeira vez em The New Stack.