Lucas Montano e o Mistério do ChatGPT 'Burrificante': Um Estudo de Caso Inovador

Há algum tempo, um vídeo de Lucas Montano chamou a minha atenção. Montano, um influenciador digital e entusiasta da tecnologia, compartilhou sua experiência de tentar desenvolver um aplicativo do zero usando o Chat GPT-4 chamado "Crosswords for Developers". Em suas experiências iniciais, Montano encontrou um ChatGPT-4 impressionantemente eficiente e útil. No entanto, à medida que o tempo passava e ele tentava continuar o desenvolvimento do aplicativo o modelo se tornava cada vez menos útil.

O que inicialmente parecia uma ferramenta incrivelmente promissora para o desenvolvimento de software parecia estar perdendo seu brilho. Montano não estava sozinho em sua frustração. Um estudo de Stanford e da UC Berkeley também relatou uma tendência semelhante - o desempenho do Chat GPT-3 e GPT-4 estava diminuindo ao longo do tempo. Eles observaram uma degradação no desempenho dos modelos em uma série de tarefas, desde resolução de problemas matemáticos até a geração de código.

Essas descobertas foram intrigantes para mim, pois contradiziam minhas experiências iniciais com o modelo, nas quais o Chat GPT-4 era excepcionalmente eficiente ao iniciar um novo projeto. No entanto, eu também notei uma queda no desempenho quando tentava continuar o desenvolvimento de projetos em novas sessões de chats.

Foi essa observação que me levou a propor uma hipótese: o desempenho do Chat GPT-4 não estava realmente degradando, mas sim sofrendo devido à falta de um contexto integral do projeto ao iniciar ou fragmentar o desenvolvimento em novas sessoes de chats. Acreditando nisso, decidi criar uma solução.

Assim nasceu a extensão para o VS Code, "Copy to ChatGPT". Essa extensão permite exportar todos os arquivos de um projeto em um formato que o Chat GPT pudesse entender, fornecendo ao modelo o contexto completo do projeto.

Para testar minha teoria, iniciei um projeto do zero com o GPT-4, que se mostrou excepcionalmente capaz ao construir a estrutura base de um sistema que serviria para evidenciar minha hipótese. Depois de finalizar essa fundação, efetuei o commit "init project", um passo crucial para preservar o estado atual do esqueleto da aplicação que o GPT-4 havia acabado de criar.

Assim, comecei uma nova sessão de chat, onde forneço apenas os arquivos do meu projeto que desejava que novas funcionalidades fossem implementadas. Continuei com esse processo até perceber que o GPT-4 já não conseguia adicionar novas funções ou, ao menos, não conseguia fazer isso com um código limpo e aceitável. Nesse momento, havíamos chegado ao chamado estado de "estagnação" ou estado "burro" do GPT-4.

Decidi então pôr à prova minha hipótese. Retornei ao commit inicial que tínhamos preparado e usei a extensão para exportar todos os arquivos do projeto que havia desenvolvido. Iniciei uma nova sessão de chat, executei o prompt fornecido pela extensão que prepara o ChatGPT para receber os arquivos e, assim, enviei todos os arquivos do projeto para ele.

Os resultados foram reveladores. O Chat GPT-4, agora equipado com todo o contexto do projeto, retomou seu desempenho inicial, eficiente e valioso. Quando pedi que implementasse todas as funcionalidades que havia solicitado anteriormente, ele as executou com excelência e, surpreendentemente, apresentou códigos que utilizavam padrões de projeto apropriados e organizados.

Não só consegui implementar todas as funcionalidades que havia solicitado anteriormente com certo grau de "brilhantismo", como também fui capaz de continuar avançando na adição de novas funcionalidades. A minha hipótese estava correta - a falta de um contexto contínuo entre diferentes sessões de chat estava realmente impactando o desempenho do ChatGPT-4.

Notei também que, ao iniciar uma nova sessão de chat e importar todos os arquivos do projeto para a sessão de chat, pedindo ao modelo para implementar uma nova funcionalidade, o resultado era muito mais satisfatório do que continuar solicitando novas funcionalidades na mesma sessão de chat indefinidamente.

Acredito que essa descoberta tem implicações importantes para o modo como usamos o ChatGPT-4 e modelos similares de IA. Ao fornecer o contexto completo de nossos projetos, podemos maximizar o potencial dessas ferramentas. Minha extensão "Copy to ChatGPT" é um passo nessa direção e espero que ajude outros desenvolvedores a obter o máximo de suas interações com o Chat GPT.

Nossa jornada na fronteira da inteligência artificial está apenas começando. À medida que continuamos a explorar e nos adaptar a essa nova tecnologia, estou confiante de que encontraremos novas maneiras de otimizar e melhorar nossa interação com esses modelos avançados.

Me questiono se o Montano em seu experimento seguiu utilizando sempre a mesma sessão de chat inicial para desenvolver o aplicativo ou se foi fragmentando o seu desenvolvimento em sessões de chats distintas. Penso que talvez o mesmo o tenha fragmentado o seu desenvolvimento em diversos chats degradando sua experiencia com o GPT-4 de exepicional para medíocre.

Se a OpenAI estaria intencionalmente limitando a performance do modelo ChatGPT como parte de uma estratégia para escalar seu negócio, é um ponto difícil de se confirmar. No entanto, a empresa se pronunciou recentemente, refutando quaisquer medidas para reduzir o desempenho de seu modelo e se comprometeu a investigar o problema.

Isso foi ecoado por Peter Welinder, da OpenAI, em seu Twitter: "Não, nós não reduzimos a capacidade do GPT-4. Muito pelo contrário: fazemos cada nova versão ser mais inteligente que a anterior. A hipótese atual é que, ao utilizar mais intensivamente o modelo, começam-se a notar questões que antes não eram percebidas."

Existe uma suspeita de que, após a euforia inicial gerada pelo lançamento do modelo utilizando essa tecnologia, os usuários já conseguiram identificar problemas e perceber que, apesar de o modelo ser surpreendentemente avançado, não é completamente à prova de falhas.

Download da Extensão

"Copy to ChatGPT - VS Code Marketplace" - Link

Fontes

"How Is ChatGPT’s Behavior Changing over Time?" - Link "Video mencionado do Lucas Montano": Link "Twitter de Peter Welinder" - Link

Fiz um post aqui sobre isso e no meu caso desde março que percebi esses problemas no chatGPT, comecei a usar um ChatBot que consome diretamente a API do GPT com isso percebi que perguntas feita pelo chatGPT e pelo chat clone usando a API tinham diferença na qualidade de respostas.

O maior problema de tudo isso é o gasto para chegar nessa qualidade esses foram os gastos do mês passado que chegaram a $211,00

Sua observação é profundamente intrigante. Não descarto a possibilidade de que o experimento que conduzi simplesmente tenha sido capaz de contornar as aparentes limitações do GPT-4, ajudando-o a superar possíveis restrições decorrentes de um nerf que a OpenAI pode ter imposto no seu modelo.
Guilherme em relação ao apresentação de contexto para respostas, realmente é algo que faz que tenhamos essa percepção de que o GPT está mais ruim, e irei testar sua extensão para melhorar a entrada de contexto. Uma coisa interresante que posso ressaltar é que o ChatGPT tem a limitação de " GPT-4 currently has a cap of 25 messages every 3 hours." já realizei um teste que confirmei que essa limitação é de 8,192 tokens por sessão e após isso ele bloqueia aquele chat, isso támbem ocorre consumindo a API após 8,192 tokens eles não suporta mas mensagens. isso eu descobri pq estava em um projeto e pedia para ele fazer a mudança de uma lista gigante em um novo formtato, e pedia para que fosse continuando a listagem chegou um momento que o chat consumindo API chegou ao fim da sessão de 8,192 tokens, para motivo de testes abri o ChatGPT que não abria a alguns dias e copiei as perguntas do inicio até o fim, e a partir do mesmo prompt que encerrou o chat consumindo a api foi encerrado no chatGPT informando que execedeu o limite perguntas. Com essas considerações me fizeram pensar que isso ocorre para que todos esses dados daquele dialogo sejam enviados para apreendizado do modelo talves indo para um fila de execução. Com isso comecei a pesquisar sobre modelos open source que você criar a inteligencia e ele está sempre em apreendizado. Com isso estou me organizando para adquirir um hardware que rode tudo isso localmente e com uma estabilidade para treinar meu próprio modelo e obter dialogos e contextos próprios que não teram fim. Olha o seguinte fato peguei esse contexto do que escrevi acima e questione o GPT-4 se estava correto essa foi a seguinte resposta: Suas observações estão corretas. A restrição de token é implementada para otimizar o desempenho e os recursos computacionais da plataforma. Além disso, cada sessão de chat é tratada como uma unidade individual, assim, a API não mantém uma memória do contexto fora dessas sessões individuais. Quanto à sua ideia de criar seu próprio modelo e treiná-lo localmente, é uma abordagem viável. No entanto, é importante ter alguns pontos em mente: Recursos de Hardware: Modelos de linguagem como o GPT-3 são extremamente computacionalmente intensivos. Eles exigem muita memória RAM e uma GPU poderosa para treinamento. A maioria das pessoas não tem o tipo de hardware necessário para treinar modelos dessa escala em casa. Conhecimento Técnico: Treinar seu próprio modelo de deep learning requere uma compreensão sólida dos princípios de arquitetura de redes neuronais, otimização, manipulação de dados e mais. Dados: Um modelo de aprendizado de máquina precisa de uma grande quantidade de dados para aprender eficazmente. A OpenAI treinou o GPT-3 em um conjunto de dados diversificado e gigantesco. Você vai precisar de acesso a um conjunto de dados semelhante para treinar seu próprio modelo. Tempo: Treinar um modelo de linguagem de grande escala pode levar semanas, mesmo em hardware muito poderoso. Informações adicionais podem ser encontradas em bibliotecas como Hugging Face Transformers, que oferece uma vasta gama de modelos pré-treinados e recursos para treinar e adaptar modelos de linguagem. Outra opção é explorar o GPT-2, que a OpenAI decidiu tornar de código aberto, ao contrário do GPT-3. Mais uma opção é utilizar o EleutherAI, um coletivo dedicado à pesquisa em IA aberta e ética, que criou o GPT-J e GPT-Neo, ambos remodelagens do GPT-3 treinadas com os recursos da OpenAI. Realizar esta jornada de treinamento de modelo do zero é desafiador mas certamente gratificante, especialmente se você estiver interessado em ganhar profundo conhecimento técnico no campo da linguagem natural e AI.
@pedrofagundes Muito bacana suas considerações. Eu realmente não penso hoje em treinar meus proprios modelos, o que eu pretendo no momento é baixar modelos prontos e utilizar. Mas após ler sua mensagem eu realmente fiquei animado com a ideia de fazê-lo um dia. Se o tempo não fosse uma restrição, eu apostaria em um projeto open-source de computação distribuída para coletar dados da web e treinar modelos. Essa perspectiva é bastante empolgante! A iniciativa é, de fato, complexa, mas ainda assim viável, especialmente se considerarmos a possibilidade de recompensar os voluntários com criptomoedas. Um "fork" da criptomoeda [banano](https://banano.cc/), associado a um projeto de computação distribuída similar ao Folding@home, seria extremamente interessante. Poderíamos aproveitar a capacidade de processamento dos computadores de nossos voluntários para coletar dados de todos os domínios DNS, driblando detecções contra robôs, e utilizar esses dados para treinar os modelos. A ideia é realmente estimulante! Ah, se eu tivesse mais tempo! 😁😉👍

cara eu estou surpreso com a qualidade do conteúdo, postagem e comentarios excelentes!!!!

Agradeço por seu feedback! Eu mesmo só cheguei à conclusão de que o modelo tenderá sempre a ser menos acertivo à medida que o contexto aumente após refletir sobre o comentário do @walacysilva

Todo mundo com medo da IA nos observar, aprender conosco e ficar mais inteligente que a gente. Daí vai a IA nos observar, aprender conosco, e fica mais estúpida.

a piada não é minha.

Opa, tem um tutorial de como utilizar essa extensao ? gostaria de teste-la

Vou conferir a tua extensão! Provavelmente vou gravar um react lá no canal :)

Sobre o meu experimento com o ChatGPT para criar os jogos: Crossword for Developers, Anime Legends Crossword e Astronomy Crossword Astro

No inicio eu mantive o projeto inteiro em um unico arquivo o que facilitou copiar e colar o arquivo para fazer as iterações. Conforme o projeto foi crescendo eu fui dividindo ele em multiplos arquivos e da mesma forma os problemas foram ficando mais pontuais pois a base já estava finalizada.

Mantendo o mesmo chat eu comuniquei para o ChatGPT as mudanças mas conforme o projeto foi crescendo ele começou a delirar sobre o estado atual do projeto. Esse Tweet do Peter não é muito confiavel e transparente na minha opiniao, no primeiro dia do lançamento a OpenAI limitou o numero de mensagens por hora para algo em torno de 60, e depois de alguns dias diminuiu para 30, depois para 15. Diminuir o limite de mensagens fez sentido para conseguir escalar, porem quando o limite foi removido e o GPT-4 liberado para todos ficou inviavel usar ele para o projeto.

Inviavel nesse caso significa: respostas erradas ou quantidade de mensagens para chegar na reposta aceitavel é maior que eu parar para fazer.

Cara sensacional!O Chatgpt as vezes deixa na mâo!Poderia derrepente fazer um video mostrando como usar essa extensâo.Parabéns muito bom conteudo..

Um problema nisso tudo é estar passando informações sensiveis ou até mesmo todo core da sua aplicação para o Chat GPT, sendo que o ideia era usa-lo para mostrar pequenos trechos de códigos com um bom contexto e assim solucionar o problema, mas se a ideia é desenvolver algo só por diversão pode valer a pena enviar todo código para ele.

Sim, a privacidade certamente merece destaque e é uma preocupação vital à medida que aumentamos nossa dependência em serviços como o Chat GPT. Contudo, o propósito aqui é explorar a competência do modelo em desenvolver software inteiramente do zero. Este experimento demonstrou eficazmente a possibilidade de revitalizar a *"inteligência"* do ChatGPT, tornando-o novamente útil neste contexto de desenvolvimento de software. O cenário ideal implicaria em operar o modelo localmente, em modo offline, sem a imposição de filtros ou restrições. Afinal, parece ilógico pagar pelo uso do Chat GPT apenas para nos depararmos com restrições aparentemente absurdas no número de mensagens permitidas no GPT-4 e até mesmo um nerf. Recentemente, Fabio Akita discutiu em um [video](https://youtu.be/O68y0yRZL1Y) a viabilidade de executar determinados modelos localmente, incluindo a possibilidade de operação até mesmo em hardwares embarcados com recursos severamente limitados.

Vai lá saber. Eu estava esses dias trabalhando com o CHATGPT é impressionante, dá um erro, eu pergunto pra ele, ele fala que está certo, eu mudou a pergunta, ele confirma que está certo, o erro não resolvia. Quando eu vou olhar era erro meu. Ou seja configuração no projeto que estava errada.

Sinceramente pra trabalhar com CHAT GPT você precisa de muita organização pessoal. O CHATGPT tem limite de contexto, se o seu projeto for ficando com várias linhas, ele começa a se perder totalmente.

Discordo da sua posição sobre o limite de contexto do Chat GPT. Na minha experiência, nunca identifiquei tal restrição. Suspeito que a questão possa residir na maneira como você está programando com o Chat GPT. Se você não está fornecendo informações críticas ao "contexto", como nome do projeto, diretório do arquivo e similares, isso pode levar à sobrecarga do modelo com um emaranhado de informações desconexas ou bagunçadas, afetando sua habilidade de processamento. Na extensão que criei, o Chat GPT mostrou-se eficaz ao operar sem quaisquer limitações de contexto. Com todos os dados relevantes ao seu dispor e inclusive aqueles que podem parecer triviais para o usuário ele foi capaz de criar novas pastas, sugerir a estrutura de diretórios ideal para um projeto, e até mesmo realizar tarefas de refatoração, manipulando diretórios, nomes de pastas, arquivos e código (o que me surpreendeu bastante). O modelo também utilizou autonomamente middlewares, models e controllers, simplesmente porque já tinha essas informações armazenadas no "contexto" quando eu pedia para que ele criase determinados arquivos ou funções. O limite real do modelo está na quantidade de caracteres por mensagem. Por isso, sugiro que use a minha extensão e exporte cada arquivo do seu projeto de maneira individual. Ainda que seja viável obter todos os arquivos de uma só vez na área de transferência com a extensão, a estratégia mais eficaz é enviar arquivo por arquivo, sobretudo se eles forem extensos. Isso pode atenuar o problema do contexto desorganizado e maximizar o potencial do Chat GPT. O mais fascinante deste experimento foi descobrir novas maneiras de tirar proveito das habilidades do Chat GPT e aprender a potencializar seu uso. A extensão que desenvolvi foi capaz de oferecer suporte automatizado exatamente nessa "organização" que você mencionou. O tamanho do projeto atual já está com 5725 linhas de códigos e você pode constatar o seu tamanho com o comando `cloc` que anexo abaixo: ```bash guilhermelim@Genap ~/projects/my-api main prompt> cloc --vcs=git . 207 text files. 207 unique files. 212 files ignored. github.com/AlDanial/cloc v 1.90 T=0.11 s (1896.3 files/s, 65229.5 lines/s) ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- TypeScript 136 697 482 5191 SVG 57 0 0 401 JSON 5 0 0 116 JavaScript 2 1 6 15 Markdown 1 3 0 2 ------------------------------------------------------------------------------- SUM: 201 701 488 5725 ------------------------------------------------------------------------------- ```
E se ao invés de perder o contexto, ele esteja com "contexto demais"?

O modelo busca as informações com base no que processou, na pergunta inicial, tendemos ser mais diretos, logo, ele vai buscar o que pedimos, na segunda questão, temos detalhes da primeira, logo, ele vai buscar a primeira + segunda para gerar a resposta, e assim segue.

Não seria esse "emburrecimento" do GPT uma grande confusão interna ao tentar manter uma linha de raciocinio? Ele busca informações demais, não consegue montar algo concreto, apenas pedaços de tudo o que encontrou e então retorna. Para mim faz sentido pensar assim já que é o modos operandi do modelo, buscar e montar a resposta com base no que ele acha certo. Se ele tem um monte de coisas que são certas, e sabendo que ele não tem uma capacidade de decisão apropriada para dividir isso, ele retorna um picotado delas já que estão todas certas kkkkk

Bom, foi isso o que pensei, e talvez eu esteja errado... mas talvez esteja certo kkkk Parabéns pelo projeto, muito bom!

Sim, você está absolutamente correto. Se considerarmos que, em essência, tudo se resume a um exercício estatístico de predição de "palavras" subsequentes, fica claro que quanto mais ampliarmos o contexto de uma sessão de chat, mais opções estatísticas o modelo encontrará para a próxima palavra, aumentando, consequentemente, a probabilidade de um erro na resposta. Para ilustrar este conceito, podemos recorrer ao famoso paradoxo do programa de TV conhecido como o "Problema de Monty Hall". Neste show, o apresentador apresenta ao concorrente três portas, uma das quais esconde um carro (o prêmio), e as outras duas, cabras. O jogador escolhe uma porta inicialmente. Em seguida, Monty, que conhece o que está por trás de todas as portas, abre uma das duas portas restantes que o jogador não escolheu e que contém uma cabra. Monty então pergunta ao jogador se ele gostaria de manter sua escolha original ou mudar para a única porta restante não aberta. A intuição pode sugerir que não importa se o jogador muda de porta ou não, pois agora existem apenas duas portas e, portanto, a probabilidade seria de 50%. No entanto, as probabilidades estatísticas contam uma história diferente. Se o jogador mantiver sua escolha original, a probabilidade de ganhar o carro é de apenas 1/3, enquanto se ele mudar de porta, a probabilidade aumenta para 2/3. Este paradoxo, embora contra-intuitivo, destaca a importância do contexto na análise estatística. Da mesma forma, se ampliarmos o contexto de uma sessão de chat e acrescentarmos mais "portas" (ou seja, opções de palavras), a probabilidade de "acertar" a próxima palavra correta (ou seja, produzir uma resposta relevante e precisa) diminui, assim como no "Problema de Monty Hall", a probabilidade de ganhar diminui se o jogador não mudar sua escolha depois que uma das portas erradas é eliminada. A compreensão precisa de como o ChatGPT funciona nos permite explicar, de uma perspectiva matemática, por que após a exportação de todos os arquivos para o contexto de uma sessão de chat e a instrução ao GPT-4 para executar uma tarefa, os primeiros prompts se mostram particularmente brilhantes. No entanto, à medida que solicitamos a criação de novos recursos e outros comandos, é notável que a qualidade das respostas se degrada progressivamente. Em termos estatísticos, sempre que ampliamos o contexto, a qualidade das respostas tende a se reduzir gradualmente em direção à mediocridade. Questiona-se então se, com o desenvolvimento e lançamento de novas versões do GPT, essa degradação gradual será menos aparente. Idealmente, devemos ter a capacidade de enviar todos os arquivos de contexto, registrar instantâneos do contexto com todos os arquivos relevantes e, ao realizar um novo prompt, fazê-lo com um contexto limpo, como se fosse uma nova sessão, mas que já contém todos os arquivos funcionais recentes. Parece que um procedimento semelhante a este será necessário mas atualmente não é possível fazê-lo de maneira automática. A sua resposta ilustra as limitações inerentes aos Modelos de Linguagem de Grande Escala (LLMs), categoria de AI na qual o ChatGPT se insere.

Cara, achei sensacional a ideia da extensao, eu ja fornecia partes do codigo para o chat gpt entender melhor oque eu esperava, mas mesmo assim notei uma piora dele de la pra ca. Sobre sua extensao fica uma duvida, com tantos rumores de vazamento de informacoes da OpenIA nao seria inseguro fornecer tantos arquivos para a IA ? Obs: As partes do codigo que eu fornecia citada no primeiro paragrafo eram filtradas ou modificadas por motivos de seguranca.

Não vejo qualquer inconveniente em compartilhar o código, desde que você garanta que não estão inclusos dados sensíveis. Como exemplo, costumo enviar um arquivo 'env.example' alterado com valores de variáveis de ambiente modificados. Compreendo que enviar arquivos para o chat GPT pode ser uma preocupação, no entanto, não vejo isso com muita apreensão. Afinal, é improvável que a própria OpenAI consiga formatar e unir todos os códigos enviados em um único arquivo, mesmo que você compartilhe todo o código. Além disso, é importante lembrar que praticamente todas as linhas de código que você possa escrever, já foram provavelmente escritas por alguém em algum repositório público do GitHub e, sem dúvida, contribuíram para o treinamento do modelo GPT. Eu, pessoalmente, não me preocupo muito com isso, embora entenda a vantagem de poder executar um modelo offline. Sugiro que você assista a este [vídeo do Akita](https://www.youtube.com/watch?v=O68y0yRZL1Y). Ele demonstra como operar localmente um modelo com desempenho semelhante ao do GPT-4.

Chat gpt so server pra escrever e-mail, aceitem logo

Compreendo o seu ponto de vista, mas sinto a necessidade de expressar a minha discordância. Seu argumento teria maior validade, ainda que com algumas ressalvas, se estivéssemos discutindo especificamente o ChatGPT, que não foi inicialmente concebido para atuar na programação. Contudo, é importante salientar que o modelo gpt-4 tem sido extremamente útil na realização de uma variedade de tarefas, diminuindo cada vez mais a minha dependência de leitura de documentações técnicas ou de consultas ao StackOverflow - falando nisso, esse site ainda existe?! 🤔 O modelo, por si só, tem se revelado de valor inestimável, proporcionando contribuições significativas para o desenvolvimento de sistemas através de ferramentas como o GitHub Copilot, além de incorporar novos recursos que a Microsoft tem implementado no pacote Office, entre muitas outras inovações emergentes. Portanto, apesar de reconhecer suas limitações, não posso subestimar seu potencial nem deixar de me entusiasmar com as possibilidades que ele oferece para simplificar e otimizar nosso trabalho.