Engenharia de prompts

Explorando o Interpretador de Código do ChatGPT da OpenAI: Uma Imersão Profunda em suas Capacidades

mm
Adicione Unite.AI às suas fontes preferidas no Google

Os avanços da OpenAI em Processamento de Linguagem Natural (NLP) são marcados pelo surgimento de Modelos de Linguagem Grandes (LLMs), que sustentam produtos utilizados por milhões, incluindo o assistente de codificação GitHub Copilot e o mecanismo de busca Bing. Esses modelos, por meio de sua capacidade única de memorizar e amalgamar informações, estabeleceram padrões inigualáveis em tarefas como geração de código e texto.

Entendendo o Interpretador de Código do ChatGPT

Para entender a importância do Interpretador de Código do ChatGPT, é essencial primeiro compreender o que ele é e como foi construído.

Em essência, o Interpretador de Código do ChatGPT aproveita as capacidades do ChatGPT, mas introduz uma proficiência aprimorada na compreensão, interpretação e até geração de código em uma miríade de linguagens de programação. Essa funcionalidade transforma o ChatGPT de um gerador de texto em uma ferramenta inestimável para desenvolvedores, auxiliando na compreensão de código, depuração e até geração de código.

Treinando o GPT para Codificação: A Abordagem Codex

Tanto o GitHub Copilot quanto o Interpretador de Código do ChatGPT utilizam o modelo Codex desenvolvido pela OpenAI.

O Codex, um modelo de linguagem GPT especializado, é projetado para ter capacidades proficientes de escrita de código Python. Treinado em código de fonte aberta do GitHub, o Codex demonstra seu potencial ao alimentar recursos no GitHub Copilot. Quando avaliado por sua capacidade de sintetizar programas a partir de docstrings, uma medida de correção funcional, o Codex supera tanto o GPT-3 quanto o GPT-J.

Uma observação notável é que a amostragem repetida melhora a proficiência do Codex. Quando até 100 amostras por problema são utilizadas, a taxa de sucesso do modelo aumenta para 70,2%. Tal eficiência sugere a possibilidade de usar classificação heurística para escolher amostras de código precisas, sem necessidade de avaliação completa para cada uma.

Para avaliar suas capacidades, o modelo foi encarregado de criar funções Python autônomas com base apenas em docstrings. A precisão do código gerado foi então medida usando testes unitários. Em um conjunto de dados que compreende 164 problemas de programação originais, que inclui compreensão de linguagem, algoritmos e testes de matemática básica, o Codex com 12B parâmetros resolveu 28,8% deles em uma única tentativa.

Dados de Treinamento para o Modelo Codex - interpretador de código do ChatGPT

Dados de Treinamento para o Modelo Codex: https://arxiv.org/abs/2107.03374

Ao aprimorar o modelo ainda mais por meio de ajustes finos de funções autônomas implementadas corretamente, sua eficiência foi aumentada, resultando no Codex-S resolvendo 37,7% dos desafios na primeira tentativa. No entanto, no mundo prático da programação, uma abordagem de tentativa e erro é comum. Imitando esse cenário real, o modelo Codex-S, quando dado 100 chances, resolveu com sucesso 77,5% dos desafios.

arquitetura aprimorada do ChatGPT

Modelos gerativos como o ChatGPT que produzem código são geralmente avaliados comparando amostras geradas com uma solução de referência. Essa comparação pode ser exata ou empregar uma medida de similaridade como a pontuação BLEU. No entanto, essas métricas baseadas em correspondência muitas vezes falham em capturar as nuances da codificação. Uma crítica-chave da BLEU é sua ineficácia em capturar as características semânticas do código.

Em vez de confiar apenas na correspondência, uma medida mais relevante foi proposta: a correção funcional. Isso significa que o código produzido pelo modelo deve passar em um conjunto determinado de testes unitários. A ideia está alinhada com práticas de codificação padrão, pois os desenvolvedores frequentemente usam testes unitários para medir a eficácia e precisão de seu código.

Essa métrica avalia não apenas a precisão, mas a usabilidade funcional do código gerado.

A métrica pass@k é introduzida como uma medida de correção funcional. Ela basicamente significa que se qualquer uma das “k” amostras de código geradas passar nos testes unitários, o problema é considerado resolvido. No entanto, em vez de usar isso em sua forma direta, um estimador sem viés é usado para calcular pass@k para evitar alta variância.

Para avaliar as capacidades de codificação do ChatGPT, a pesquisa utilizou o conjunto de dados HumanEval. Esse conjunto de dados consiste em problemas de programação Python escritos à mão, cada um acompanhado de testes unitários.

Exemplo de conjunto de dados de treinamento do ChatGPT

https://github.com/openai/code-align-evals-data/blob/main/human_eval

Dado os riscos associados à execução de código desconhecido ou não confiável, um ambiente de sandbox foi projetado para testar o código gerado de forma segura. Esse ambiente usou gVisor para emular recursos e criar uma barreira entre o sistema hospedeiro e o código em execução. Assim, mesmo que o modelo produza código malicioso, ele permanece contido e não pode prejudicar o hospedeiro ou a rede.

Usando o Interpretador de Código do ChatGPT

O ChatGPT da OpenAI passou por numerous evoluções, com o Interpretador de Código se destacando como uma funcionalidade revolucionária no modelo GPT-4. Diferentemente de interfaces de chat tradicionais, o Interpretador de Código permite que os usuários mergulhem mais fundo em tarefas computacionais, mesclando suavemente as linhas entre conversas humanas-AI e processos computacionais.

No seu núcleo, o Interpretador de Código é semelhante a ter um computador embutido no chatbot. Essa funcionalidade dinâmica oferece aos usuários espaço de disco temporário para carregar uma variedade de formatos de arquivo, desde tipos comuns como TXT, PDF e JPEG até mais especializados como CPP, PY e SQLite. Essa amplitude de suporte amplifica sua versatilidade em várias tarefas, seja processamento de documentos ou manipulação de imagens.

Operando dentro de uma estrutura robusta e segura, o Interpretador de Código é equipado com mais de 300 bibliotecas pré-instaladas. Esse ambiente sandboxed garante segurança enquanto ainda fornece poder computacional substancial. Interessantemente, quando solicitado, ele cria um script Python em tempo real para executar a solicitação do usuário. Por exemplo, converter um PDF baseado em imagem para um formato pesquisável usando OCR; tudo o que o usuário precisa fazer é carregar o documento, e o ChatGPT cuida do resto.

Um ponto de intrigante tem sido o limite de tamanho de arquivo para uploads. Embora especificações definitivas ainda estejam por ser anunciadas, experimentos de usuário sugerem que o sistema pode processar arquivos consideravelmente maiores que 100MB. Independentemente do tamanho, é crucial notar que esses arquivos são transitórios, sendo descartados após a sessão de chat ser concluída.

A genialidade do Interpretador de Código não está apenas em seu poder técnico, mas em sua acessibilidade. A OpenAI oferece essa funcionalidade para assinantes do ChatGPT Plus, que vem com o modelo GPT-4. Assim, essa ferramenta transformadora não é apenas para a elite da tecnologia, mas está se tornando acessível a uma audiência mais ampla.

A distinção entre o modelo padrão do ChatGPT e o Interpretador de Código reside em seus paradigmas de interação. Enquanto o primeiro gera principalmente respostas textuais, o último compreende e executa código, oferecendo resultados diretos. Isso não apenas o torna um ativo valioso para profissionais de tecnologia, mas também empodera aqueles sem conhecimento de codificação para realizar tarefas computacionais complexas.

As capacidades do Interpretador de Código do ChatGPT podem revolucionar vários aspectos do Desenvolvimento de Software e Ciência de Dados:

  • Geração Automática de Código: Para aplicações de software e scripts de análise de dados, dado uma descrição de alto nível, o sistema pode produzir estruturas de código ou trechos de código intricados, acelerando os processos de desenvolvimento e análise de dados.
  • Revisão de Código e Validação de Dados: Ferramentas impulsionadas por IA, como o ChatGPT, podem auxiliar na melhoria da qualidade e segurança das bases de código de software. Além disso, no domínio da ciência de dados, essas ferramentas podem ser instrumentais na revisão e validação de scripts de processamento e transformação de dados, garantindo precisão e eficiência.
  • Ajuda na Análise de Dados: Para cientistas de dados, o Interpretador de Código do ChatGPT pode ajudar na geração de código para exploração de dados preliminar, visualização e até testes estatísticos básicos, facilitando o fluxo de trabalho de análise de dados.

Se você está interessado em saber mais sobre as nuances do ChatGPT e engenharia de prompts, a Unite AI oferece uma análise abrangente em ‘ChatGPT: Engenharia Avançada de Prompts‘.

Configurando o Interpretador de Código do ChatGPT

O recurso de integração do Interpretador de Código permite que a plataforma interprete consultas do usuário, execute-as como código Python e exiba os resultados em um formato de chat interativo. Para acessar essa funcionalidade, os usuários podem navegar até as configurações do ChatGPT, explorar a seção de recursos beta e ativar o Interpretador de Código.

O que o distingue é seu mecanismo transparente. À medida que os usuários solicitam uma tarefa, a plataforma revela cada etapa da jornada de processamento, oferecendo clareza sobre como os comandos são interpretados e executados. Importante, por razões de privacidade e segurança, o Interpretador de Código opera sem conectividade com a internet.

Explorando os Benefícios do Interpretador de Código do ChatGPT

Visualização de Dados e Análise

O ChatGPT vai além do escopo de gráficos tradicionais, oferecendo tanto representações gráficas convencionais quanto inovadoras. Isso garante que os usuários possam visualizar seus dados em formatos que fornecem as informações mais significativas.

No entanto, não é apenas sobre visualizar dados brutos. O modelo ChatGPT é habilidoso em processar e refinar dados. Embora poderoso, os usuários devem exercer cautela.

Analistas financeiros encontrarão a capacidade do Interpretador de Código de analisar e visualizar taxas de estoque particularmente útil. Através da integração transparente, os usuários podem carregar conjuntos de dados e visualizá-los em vários formatos. A importância dessa função é evidente quando os indivíduos podem realizar análises de dados complexas.

O vídeo abaixo demonstra como o interpretador de código do ChatGPT criou uma análise abrangente de ações da TSLA.

Pontos Principais:

  • A ação da Tesla (TSLA ) enfrentou volatilidade, mas também mostrou resiliência com períodos de crescimento.
  • Grandes volumes de negociação em dias específicos indicam interesse significativo do mercado ou reações a eventos-chave.
  • O retorno anual (YTD) descendente sugere que os investidores devem analisar tanto fatores internos da empresa quanto condições de mercado ao considerar investimentos futuros.

Implementando Visão Computacional e OCR

A detecção de faces, uma função essencial na visão computacional, foi abordada com uma técnica clássica: o classificador de cascata Haar do OpenCV.

A imagem abaixo mostra a utilização do classificador de cascata Haar clássico.

O processo de extrair texto de imagens, conhecido como reconhecimento óptico de caracteres (OCR), foi alcançado de forma transparente usando Tesseract, com o texto subsequentemente estruturado pelo GPT-4, melhorando a compreensibilidade.

No vídeo abaixo, veja como o Tesseract (OCR) extrai texto de uma imagem de certificado.

O Interpretador de Código se destaca no domínio de manipulação de vídeo, áudio e imagem. Com comandos diretos, os usuários podem alcançar edições detalhadas, como converter GIFs em MP4s com melhorias específicas. Basta carregar o arquivo, inserir as modificações desejadas e assistir à mágica acontecer.

Biblioteca Externa Python dentro do seu Interpretador de Código do ChatGPT

O Interpretador de Código do ChatGPT é uma plataforma de programação dinâmica equipada com um conjunto extensivo de bibliotecas Python. Essas abrangem desde visualização de dados com Seaborn até aprendizado de máquina avançado via Torch. Mas é mais do que uma ferramenta estática.

Inspirado por essa página do ChatGPT de Korakot Chaovavanich.

Começando com a última versão do NLTK, carregamos um arquivo .whl para o Interpretador. Em seguida, instruímos o ChatGPT a localizar o diretório de site-packages adequado analisando a localização de um pacote existente. A próxima etapa envolveu desempacotar o arquivo wheel para um local temporário e mover os arquivos para o diretório de site-packages identificado. No entanto, isso encontrou um obstáculo.

Procurando uma solução, solicitamos: “Por favor, certifique-se de que o NLTK seja instalado no ambiente Python e esteja acessível após a instalação.”

O ChatGPT respondeu, fornecendo uma solução. Ele sugeriu adicionar o diretório temporário ao sys.path, permitindo que o Python identifique e extraia módulos do pacote NLTK desempacotado nessa localização. Essa tática funcionou maravilhosamente, levando à instalação bem-sucedida do NLTK.

Através do uso de arquivos .whl, a instalação exibiu uma combinação de ingenuidade e adaptabilidade. O Interpretador de Código do ChatGPT, apesar dos desafios iniciais, manifestou sua versatilidade e compromisso em atender às necessidades dos codificadores, garantindo tanto para iniciantes quanto para veteranos uma experiência de codificação refinada.

instalando bibliotecas personalizadas no interpretador de código do ChatGPT

Em uma demonstração fascinante das capacidades do interpretador, um tweet recente de @DominikPeters destacou uma demonstração única. Peters solicitou ao GPT-4 que gerasse um quiz sobre arrondissements de Paris, e o modelo entregou um site de quiz funcional. O quiz em funcionamento está disponível para experimentação em dominik-peters.de/gpt-arrondissement-quiz/.

https://twitter.com/DominikPeters/status/1652630445639467008?s=20

Conclusão

A inovação da OpenAI com o Interpretador de Código do ChatGPT é nada menos que transformacional para codificadores e não codificadores. Sua versatilidade em lidar com uma ampla gama de tarefas – desde auxiliar desenvolvedores na depuração até produzir quizzes parisienses com facilidade – é um testemunho do potencial ilimitado da IA em melhorar nossas experiências digitais. Aqui está a essência distilada de nossa imersão profunda:

Entenda Sua Ferramenta: Assim como você se tornaria amigo de um colega, familiarize-se com o Interpretador de Código. Ele é projetado sobre o Codex, que é ajustado finamente a partir do GPT-4. Sua proficiência abrange várias linguagens de programação, tornando-o um companheiro ideal para todas as suas aventuras de codificação.

Abrace a Revolução da IA: Práticas de codificação tradicionais estão prestes a sofrer um grande impacto. Com ferramentas impulsionadas por IA, como o Interpretador de Código do ChatGPT, tarefas como identificação de bugs, geração de código e até revisão de código podem ser aceleradas.

Além do Código: A incursão do Interpretador não é restrita a texto ou código. Sua capacidade de lidar com vários formatos de arquivo, desde arquivos TXT simples até scripts PY complexos, destaca sua utilidade em vários domínios.

Nunca Pare de Experimentar: Nossa exploração com a instalação da biblioteca NLTK reflete a importância da persistência e adaptabilidade, valores que o Interpretador de Código encarna. Se houver um obstáculo, geralmente há uma maneira de contorná-lo.

Participe da Conversa da IA: Aplicações do mundo real, como demonstrado pelo quiz de arrondissements de Paris, destacam a grande utilidade prática da ferramenta. Abrace-a, explore-a e permita que ela amplifique seus projetos.

O vídeo acima foi feito usando Gen-2 e Midjourney.

Para resumir, o Interpretador de Código do ChatGPT é mais do que apenas uma ferramenta; está mudando a forma como nos conectamos com a tecnologia. Para inovadores e entusiastas, ele promete um mundo cheio de potencial de codificação.

Eu passei os últimos cinco anos me imergindo no fascinante mundo de Aprendizado de Máquina e Aprendizado Profundo. Minha paixão e expertise me levaram a contribuir para mais de 50 projetos de engenharia de software diversificados, com um foco particular em IA/ML. Minha curiosidade contínua também me levou em direção ao Processamento de Linguagem Natural, um campo que estou ansioso para explorar mais.