International Essays |
ChatGPT usa os “Superpoderes da Wolfram”!
ChatGPT usa os “Superpoderes da Wolfram”!
Para habilitar o recurso descrito aqui, selecione e instale o plugin da Wolfram disponível no ChatGPT. Observe que, no momento, apenas alguns usuários do ChatGPT Plus podem acessá-lo; para mais informações, acesse o Anúncio da OpenAI.
Em apenas dois meses e meio...
Em apenas dois meses e meio...
No início de janeiro, eu escrevi sobre a possibilidade de conectar o ChatGPT ao Wolfram|Alpha. E hoje — apenas dois meses e meio depois — tenho a honra de anunciar que aconteceu! Graças a heroica engenharia de software de nosso time e da OpenAI, agora o ChatGPT pode acessar o Wolfram|Alpha — e também a Wolfram Language — dando a ele o que podemos chamar de “superpoderes computacionais”. Tudo isso está bem no início, mas é bastante impressionante — e já se pode ver o quão incrivelmente poderoso (e talvez até mesmo revolucionário) é o que podemos chamar de “ChatGPT + Wolfram”.
Em janeiro, eu levantei a questão que, como uma rede neural do tipo LLM, o ChatGPT — em toda a sua notável proeza em textualmente gerar material “tal qual” o que se lê na web, etc. — não pode em si ser esperado a realizar cálculos reais não triviais (ou incomuns), ou sistematicamente produzir dados corretos (em vez de apenas “olhar por cima”), etc. Mas, quando conectado ao plugin da Wolfram, ele consegue fazer tudo isso. Então, aqui apresento um primeiro exemplo (bastante simples) do mês de janeiro, mas agora feito pelo ChatGPT com os “superpoderes da Wolfram” instalados:
É um resultado correto (em janeiro, não era) — encontrado por cálculo real. E com uma vantagem: a visualização imediata.
Como se deu isso? Internamente, o ChatGPT está formulando uma consulta para o Wolfram|Alpha — em seguida, envia a consulta ao Wolfram|Alpha para cálculo, e “decide o que irá responder” com base na leitura dos resultados que recebeu. Você pode ver esse processo clicando no campo “Used Wolfram” (e vendo isso, você percebe que o ChatGPT não “inventou nada”):
Há inúmeras questões não triviais acontecendo aqui, tanto por parte do ChatGPT quanto por parte do Wolfram|Alpha. Mas o desfecho é um resultado positivo, correto, construído em um bom texto fluido.
Veja esse outro exemplo, também a partir do que escrevi em janeiro:
Em janeiro, eu mencionei que o ChatGPT acabaria apenas “inventando” dados plausíveis (mas equivocados), ao receber o seguinte comando:
Mas agora, ele chama o plugin da Wolfram e obtém uma resposta boa e confiável. E, como bônus, tem-se, ainda, a visualização:
Segue outro exemplo do mês de janeiro que agora apresenta um resultado correto:
Na verdade, se você fizer um teste com esses exemplos, não fique surpreso se eles derem certo da forma diferente (algumas vezes melhor, outras pior) do que estou mostrando aqui. Pelo fato de o ChatGPT utilizar a aleatoriedade ao gerar suas respostas, coisas diferentes podem acontecer mesmo quando você faz exatamente a mesma pergunta (até mesmo em uma sessão nova). Parece “muito humano”. Mas, diferentemente da experiência sólida “resposta-correta-que-não-se-altera-quando-perguntada-novamente”, essa faz uso do Wolfram|Alpha e da Wolfram Language.
Aqui temos um exemplo onde vimos o ChatGPT (um tanto impressionante) “conversar” com o plugin da Wolfram, após descobrir que recebeu o “Mercúrio errado”:
Outro fato particularmente significativo aqui é que o ChatGPT não apenas está nos usando para realizar uma operação “sem saída”, como mostrar o conteúdo de uma webpage. Muito pelo contrário, estamos agindo muito mais como um verdadeiro “implante cerebral” para o ChatGPT — que nos faz perguntas sempre que precisa e que damos as respostas para tecer o que estiver construindo. É bem espantoso ver isso em ação. E — apesar de ainda carecer definitivamente bastante refinamento — o que já temos traça um longo caminho rumo a (entre outros fatores) dar ao ChatGPT a capacidade de entregar conhecimento e dados precisos e curados — assim como cálculos corretos e não triviais.
E tem mais. Já vimos exemplos onde pudemos fornecer visualizações personalizadas criadas para o ChatGPT. Com nossas capacidades de computação, somos sistematicamente capazes de gerar conteúdo “verdadeiramente original” — cálculos que simplesmente jamais foram feitos antes. E com um adicional: enquanto o “ChatGPT puro” estiver restrito a coisas que “aprendeu durante seu treinamento”, ao nos chamar, ele consegue obter dados do momento.
Isso pode se basear em nossas alimentações de dados em tempo real (aqui nós estamos sendo chamados duas vezes; cada vez para um lugar diferente):
Ou pode se basear em cálculos preditivos no “estilo ciência”:
Ou ambos:
Algumas coisas que você pode fazer
Algumas coisas que você pode fazer
E agora (quase) tudo isso está acessível para o ChatGPT — abrindo um leque e com uma profundidade tremenda de novas possibilidades. E, para dar algum sentido a isso, aqui estão alguns exemplos (bem simples):
Um homem moderno + fluxo de trabalho de IA
Um homem moderno + fluxo de trabalho de IA
O ChatGPT foi concebido para ser capaz de conversar de forma interativa com os humanos. Mas o que podemos fazer quando essa conversa envolve computação real e conhecimento computacional? Aqui está um exemplo. Vamos começar fazendo uma pergunta de “conhecimentos gerais”:
E sim, ao “abrir a caixa”, podemos verificar se a pergunta correta foi feita a nós e qual foi a resposta bruta que demos. Vamos dar continuidade e pedir um mapa:
Há projeções de mapas “mais elegantes” que poderíamos ter usado. Com o “conhecimento geral” do ChatGPT baseado em sua leitura da web, etc., podemos simplesmente pedir que um mapa seja exibido:
Mas talvez podemos querer um mapa de calor. Novamente, pedimos que um mapa seja produzido — usando a nossa tecnologia como base:
Vamos mudar a projeção mais uma vez, pedindo que ele faça a escolha usando seu “conhecimento geral”:
Ele escolheu a projeção “certa”. Mas não centralizou corretamente. Então vamos pedir para consertar isso:
OK, o que temos aqui? Temos algo que “colaboramos” para construir. Gradativamente dissemos o que queríamos; a IA (ou seja, ChatGPT + Wolfram) foi construindo progressivamente. Mas o que realmente obtivemos? Bem, é parte de um código da Wolfram Language — que podemos ver ao “abrir a caixa” ou apenas pedir ao ChatGPT:
Se copiarmos o código para um Wolfram Notebook, podemos executá-lo imediatamente e descobrir que ele possui um “recurso luxuoso” — como afirmou o ChatGPT em sua descrição, com dicas dinâmicas que mostram o nome de cada país:
(É verdade, é um pouco triste que esse código tenha apenas números explícitos nele, em vez da consulta simbólica original sobre a produção de carne. E isso aconteceu porque o ChatGPT fez a pergunta original ao Wolfram|Alpha e, em seguida, alimentou os resultados na Wolfram Language. Mas eu considero extremamente impressionante o fato de que toda essa sequência funcione.)
Como funciona — e como controlar a IA
Como funciona — e como controlar a IA
O que está acontecendo “por trás das cortinas” com o ChatGPT e o plugin da Wolfram? Lembre-se de que o núcleo do ChatGPT é um “grande modelo de linguagem” (LLM) que é treinado na web, etc. para gerar uma “continuação razoável” a partir de qualquer texto que recebeu. Mas, como parte final de seu treinamento, o ChatGPT também é ensinado a “manter conversas” e a “pedir algo para outra pessoa” — sendo essa “outra pessoa” um humano ou, no caso, um plugin. Aqui, em particular, o ChatGPT foi ensinado a quando procurar o plugin da Wolfram.
O plugin da Wolfram, na verdade, possui duas entradas: uma pelo Wolfram|Alpha e uma pela Wolfram Language. A entrada do Wolfram|Alpha é, de certa forma, “mais fácil” para o ChatGPT lidar; a entrada da Wolfram Language é, em última análise, mais poderosa. A razão pela qual a entrada do Wolfram|Alpha é mais fácil é que ela recebe como entrada apenas linguagem natural — que é exatamente o que o ChatGPT lida regularmente. Além disso, o Wolfram|Alpha é projetado para ser tolerante — e, de fato lidar com “entrada comum semelhante à humana”, mais ou menos independentemente de quão confusa possa ser.
A Wolfram Language, por outro lado, é configurada para ser precisa e bem definida — e capaz de ser usada para construir torres de computação arbitrariamente sofisticadas. Dentro do Wolfram|Alpha, o que ela está fazendo é traduzir linguagem natural em Wolfram Language precisa. Em essência, ele captura a “linguagem natural imprecisa” e a “canaliza” para a Wolfram Language precisa.
Quando o ChatGPT chama o plugin da Wolfram, muitas vezes apenas alimenta a linguagem natural para o Wolfram|Alpha. Mas, nesse ponto, o ChatGPT aprendeu um pouco sobre como escrever a própria Wolfram Language. E, no final, como discutiremos mais adiante, essa é uma maneira mais flexível e poderosa de se comunicar. Mas isso não vai funcionar, a menos que o código da Wolfram Language esteja exatamente correto. Para chegar a esse ponto, é em parte uma questão de treinamento. No entanto, não vamos nos esquecer do seguinte: considerando um possível código, o plugin da Wolfram pode executá-lo e, se os resultados estiverem claramente errados (como eles geram muitos erros), o ChatGPT pode tentar corrigi-los e tentar executá-los novamente. (De forma mais elaborada, o ChatGPT pode tentar gerar testes para executar e alterar o código se eles falharem.)
Há mais a ser desenvolvido aqui, mas já se vê o ChatGPT indo e voltando várias vezes. Ele pode estar reescrevendo sua consulta no Wolfram|Alpha (a saber, simplificando-a ao retirar partes irrelevantes) ou poderia decidir intercambiar entre Wolfram|Alpha e Wolfram Language ou poderia estar reescrevendo seu código em Wolfram Language. Dizer como fazer essas coisas é uma questão para o “comando de plugin” inicial.
E escrever esse comando é uma atividade curiosa — talvez nossa primeira experiência real de tentar “se comunicar com uma inteligência alienígena”. Certamente, ajuda bastante saber que a “inteligência alienígena” foi treinada por um vasto corpus de texto escrito por humanos. Então, por exemplo, ele conhece o inglês (um pouco, assim como todos esses alienígenas clichês de ficção científica…). E podemos dizer coisas como “se os dados do usuário estiverem em um idioma que não seja o inglês, traduza para o inglês e envie uma consulta apropriada para o Wolfram|Alpha e, então, dê sua resposta no idioma da entrada original”.
Algumas vezes, descobrimos que temos que ser bastante insistentes (observe os termos em letra maiúscula): “Ao escrever um código em Wolfram Language, JAMAIS use ‘snake case’ para nomes variáveis; SEMPRE use ‘camel case’ para nomes variáveis”. E mesmo com essa insistência, o ChatGPT algumas vezes ainda fará de forma diferente. Todo o processo de “engenharia de comando” parece um pouco como uma ‘briga de galo’: você tenta fazer com que o ChatGPT faça o que você quer, mas é difícil saber apenas o que levará para obter isso.
Por fim, isso presumivelmente será considerado no treinamento ou no comando, mas, a partir de agora, às vezes, o ChatGPT não sabe em quais ocasiões o plugin da Wolfram pode ajudar. Por exemplo, o ChatGPT adivinha que isso supostamente é uma sequência de DNA, mas (pelo menos, nessa sessão) não imediatamente considera que o plugin da Wolfram pode fazer algo com ela:
Porém, diga “Use Wolfram” e ele envia a consulta para o plugin da Wolfram que, irá, de fato, tratar do assunto da forma apropriada:
(Às vezes, você pode querer especificamente dizer “Use Wolfram|Alpha” ou “Use Wolfram Language”. E, particularmente, no caso da Wolfram Language, você pode querer ver o código real que foi enviado e dizer coisas como não usar funções cujos nomes ele inventou, mas que na verdade não existem.)
Quando o plugin da Wolfram recebe código da Wolfram Language, o que ele faz é basicamente avaliar esse código e retornar o resultado — talvez como um gráfico ou uma fórmula matemática, ou apenas texto. Mas quando recebe uma entrada do Wolfram|Alpha, ela é enviada para um endpoint especial do API “para LLMs” do Wolfram|Alpha, e o resultado retorna como texto destinado a ser “lido” por ChatGPT e efetivamente usado como um comando adicional para o texto que o ChatGPT está escrevendo. Veja este exemplo:
O resultado é um parágrafo interessante contendo a resposta à pergunta feita, além de outras informações que o ChatGPT decidiu incluir. Mas “por dentro”, podemos ver o que o plugin da Wolfram (e o “endpoint de LLM” do Wolfram|Alpha) realmente fez:
Há bastante informação adicional ali (e algumas imagens bem legais!). Mas o ChatGPT “decidiu” escolher apenas alguns trechos e os incluiu em sua resposta.
A propósito, devo enfatizar que, se você quiser ter certeza de que está obtendo o que pensa estar obtendo, sempre verifique o que o ChatGPT realmente enviou para o plugin da Wolfram — e o que o plugin retornou. Um dos recursos mais importantes que estamos adicionando com o plugin da Wolfram é uma maneira de “transformar em fatos” o resultado do ChatGPT — e saber quando o ChatGPT está “usando sua imaginação” e quando está entregando fatos concretos.
Às vezes, ao tentar entender o que está acontecendo, também será útil apenas pegar o que o plugin da Wolfram recebeu e inseri-lo como uma entrada direta no site do Wolfram|Alpha ou em um sistema da Wolfram Language (como o Wolfram Cloud).
Wolfram Language como a linguagem para colaboração entre humano - IA
Wolfram Language como a linguagem para colaboração entre humano - IA
Uma das grandes (e, francamente, inesperadas) coisas sobre o ChatGPT é sua capacidade de partir de uma descrição bruta e gerar a partir dela um resultado polido e finalizado — como um ensaio, uma carta, um documento legal, etc. No passado, alguém pode ter tentado obter isso “manualmente” começando com peças “padrão”, depois modificando-as, “colando-as”, etc. Mas o ChatGPT tornou todo esse processo um tanto obsoleto. Na verdade, ele “absorveu” uma enorme quantidade de peças “padrão” do que ele “leu” na web, etc. — e agora ele normalmente realiza um bom trabalho em “adaptá-las” perfeitamente ao que você precisar.
E quanto ao código? Nas linguagens de programação tradicionais, escrever código geralmente envolve muito “trabalho padrão” — e, na prática, muitos programadores nessas linguagens passam muito tempo construindo seus programas copiando grandes blocos de código da web. Mas agora, de repente, parece que o ChatGPT pode tornar isso tudo bem obsoleto. Porque pode de fato reunir essencialmente qualquer tipo de código padrão automaticamente — com apenas um pouco de “contribuição humana”.
Certamente, precisa haver uma contribuição humana — caso contrário, o ChatGPT não saberia em qual programa deveria escrever. Mas — alguém poderia imaginar — por que tem que ter “padrão” em código? Não deveria haver uma linguagem na qual — apenas no nível da linguagem em si — tudo o que se precisa é um pouco de contribuição humana, sem qualquer “roupagem padrão”?
Bem, essa é a questão. As linguagens de programação tradicionais estão centradas em torno de dizer o que o computador deve fazer em termos computacionais: estabeleça essa variável, teste essa condição, etc. Mas não precisa ser assim. E, em vez disso, pode-se começar pelo fim: pegar algo que as pessoas normalmente pensam e, então tentar representá-las computacionalmente — e automatizar efetivamente o processo de obtenção disso, verdadeiramente, implementadas em um computador.
Pois bem, é nisso no que eu tenho trabalhado há mais de quatro décadas. É a base do que é agora a Wolfram Language — o que agora justifico chamá-la de “linguagem computacional em escala completa”. E o que isso significa? Significa que dentro da linguagem há uma representação computacional tanto para coisas abstratas quanto para as coisas reais que falamos no mundo, sejam elas gráficos ou imagens ou equações diferenciais — ou cidades ou produtos químicos ou empresas ou filmes.
Por que não começar com a linguagem natural? Bem, isso funciona até certo ponto — como o sucesso do Wolfram | Alpha demonstra. Mas, quando se tenta especificar algo mais elaborado, a linguagem natural se torna (como o “juridiquês”) um tanto difícil de manusear — e realmente precisa de uma maneira mais estruturada para se expressar.
Há um grande exemplo histórico disso na matemática. Cerca de 500 anos atrás, praticamente a única maneira de “expressar a matemática” era na linguagem natural. Mas então a notação matemática foi inventada, e a matemática decolou — com o desenvolvimento da álgebra, cálculo e, por fim, de todas as diversas ciências matemáticas.
Meu objetivo principal com a Wolfram Language é criar uma linguagem computacional que possa fazer o mesmo tipo de coisa para tudo que possa ser “expresso computacionalmente”. E, para isso, precisamos construir uma linguagem que faça automaticamente muitas coisas e que saiba intrinsecamente muitas coisas. O resultado é uma linguagem configurada para que as pessoas possam de forma conveniente “se expressar computacionalmente”, assim como a notação matemática tradicional permite que elas “se expressem matematicamente”. E um ponto crítico é que — diferentemente das linguagens de programação tradicionais — a Wolfram Language não se destina apenas para os computadores lerem, mas também para os seres humanos lerem. Em outras palavras, ela foi concebida como uma maneira estruturada de “comunicar ideias computacionais”, não apenas para computadores, mas também para seres humanos.
Mas agora — com o ChatGPT — isso de repente se torna ainda mais importante do que nunca. Por que — como começamos a ver acima — o ChatGPT pode trabalhar com a Wolfram Language, de certa forma construindo ideias computacionais usando linguagem natural. E parte do que é importante é que a Wolfram Language pode representar diretamente os tipos de coisas sobre as quais queremos falar. Mas o que também é importante é que nos dá uma maneira de “saber o que temos” — porque podemos ler de forma realista e econômica o código da Wolfram Language que o ChatGPT gerou.
Tudo está começando a funcionar muito bem com o plugin da Wolfram no ChatGPT. Aqui está um exemplo simples, onde o ChatGPT pode facilmente gerar uma versão da Wolfram Language a partir do que lhe é perguntado:
E o ponto crítico é que o “código” é algo que se pode esperar ler de modo realista (se eu estivesse escrevendo, usaria a função RomanNumeral mais compacta):
Aqui está outro exemplo:
Eu poderia ter escrito o código um pouco diferente, mas isso, mais uma vez, é algo muito legível:
Muitas vezes, é possível usar um pidgin da Wolfram Language e em inglês para dizer o que você quer:
Temos aqui novamente um exemplo no qual o ChatGPT está construindo com sucesso a Wolfram Language — e convenientemente ele nos mostra para que possamos confirmar que, sim, está realmente calculando a coisa certa:
E, a propósito, para fazer isso funcionar, é fundamental que a Wolfram Language seja, em certo sentido, “autocontida”. Este trecho de código é apenas um código genérico padrão da Wolfram Language; não depende de nada externo e, se você quiser, pode procurar as definições de tudo o que aparece nele na documentação da Wolfram Language.
OK, mais um exemplo:
Fica claro que o ChatGPT teve problemas aqui. Mas, como sugerido, podemos simplesmente executar o código que ele gerou diretamente em um notebook. E pelo fato de a Wolfram Language ser simbólica, podemos ver explicitamente os resultados em cada etapa:
Chegou perto! Vamos ajudar um pouquinho, dizendo que precisamos de uma lista real de países europeus:
E aqui está o resultado! Ou pelo menos, um resultado. Porque quando olhamos para essa computação, pode não ser exatamente o que queremos. Por exemplo, podemos querer escolher várias cores dominantes por país e ver se alguma delas está próxima do roxo. Mas toda a configuração da Wolfram Language aqui facilita para nós “colaborarmos com a IA” para entender o que queremos e o que fazer.
Até agora, basicamente começamos com linguagem natural e construímos código em Wolfram Language. Mas também podemos partir de um pseudocódigo ou código em alguma linguagem de programação de baixo nível. E o ChatGPT tende a fazer um trabalho admiravelmente bom ao pegar essas coisas e produzir código em Wolfram Language bem escrito a partir delas. O código nem sempre está exatamente correto. Mas sempre podemos executá-lo (por exemplo, com o plugin da Wolfram) e ver o que ele faz, potencialmente (graças ao caráter simbólico da Wolfram Language) linha por linha. E o ponto é que a natureza da linguagem computacional de alto nível da Wolfram Language tende a permitir que o código seja suficientemente claro e (pelo menos localmente) simples para que (especialmente depois de vê-lo funcionar) possamos entender prontamente o que está fazendo — e, em seguida, potencialmente iterar de volta e adiante nele com a IA.
Quando o que se está tentando fazer é suficientemente simples, muitas vezes é realista especificá-lo — pelo menos se o fizermos em etapas — puramente com linguagem natural, usando a Wolfram Language “apenas” como uma forma de ver o que temos e realmente ser capaz de executá-lo. Mas é quando as coisas ficam mais complicadas que a Wolfram Language realmente se destaca — fornecendo o que é basicamente a única representação viável e precisa compreensível pelo ser humano do que se quer.
Quando eu estava escrevendo meu livro An Elementary Introduction to the Wolfram Language, isso ficou particularmente óbvio. No início do livro, eu era facilmente capaz de criar exercícios em que descrevia o que era desejado em inglês. Mas à medida que as coisas começaram a ficar mais complicadas, isso se tornou cada vez mais difícil. Como usuário “fluente” da Wolfram Language, geralmente eu sabia imediatamente como expressar o que queria na Wolfram Language. Mas descrever em inglês puro e simples exigia algo cada vez mais envolvido e complicado, que parecia ‘juridiquês’.
Tudo bem, então você especifica algo usando a Wolfram Language. Algo bastante notável que o ChatGPT geralmente é capaz de fazer é reformular seu código em Wolfram Language para que seja mais fácil de ler. Ele (ainda) não acerta toda as vezes. Mas é interessante vê-lo fazer diferentes compensações de um escritor humano de código em Wolfram Language. Por exemplo, os humanos tendem a achar difícil inventar bons nomes para as coisas, tornando geralmente melhor (ou menos confuso, pelo menos) evitar nomes tendo sequências de funções aninhadas. O ChatGPT, com seu comando de linguagem e significado, não tem dificuldade alguma em inventar nomes plausíveis. E apesar de ser algo que eu, por exemplo, não esperaria, acho que usar esses nomes e “espalhar a ação”, pode, muitas vezes tornar o código em Wolfram Language ainda mais fácil de se ler do que antes e, de fato, ler muito mais em um análogo formalizado de linguagem natural — que podemos entender tão facilmente quanto linguagem natural, mas que tenha um significado preciso e que pode, na verdade, ser executado para gerar resultados computacionais.
Solucionando questões antigas
Solucionando questões antigas
Se você “souber qual a computação que quer fazer” e puder descrever isso em um trecho de linguagem natural, o Wolfram|Alpha está configurado para fazer diretamente a computação e apresentar os resultados de forma que seja “visualmente absorvível” o mais fácil possível. Mas e se você quiser descrever o resultado em uma narrativa, um ensaio? O Wolfram|Alpha nunca foi configurado para fazer isso. O ChatGPT foi.
Aqui está o resultado do Wolfram|Alpha:
E aqui, dentro do ChatGPT, estamos pedindo pelo mesmo resultado que o do Wolfram|Alpha, mas dizendo ao ChatGPT que “faça uma redação sobre o assunto”:
Outra questão antiga para o Wolfram|Alpha é problema matemático com palavras. Dado um problema matemático “bem apresentado”, o Wolfram|Alpha provavelmente resolverá muito bem. Mas e um problema “vago” em palavras? Bem, o ChatGPT consegue muito bem se “desenrolar” com isso transformando em “perguntas matemáticas claras” — que o plugin da Wolfram agora pode resolver. Aqui está um exemplo:
Esse caso é um pouco mais complicado, incluindo um bom uso do “bom senso” para reconhecer que o número de perus não pode ser negativo:
Além de problemas matemáticos em palavras, outra questão antiga agora abordada pelo ChatGPT + Wolfram é o que os físicos costumam chamar de “problema de Fermi”: estimativas de ordem de grandeza que podem ser feitas com base no conhecimento quantitativo sobre o mundo. Segue um exemplo:
Como se envolver
Como se envolver
ChatGPT + Wolfram é algo muito novo — realmente um tipo completamente novo de tecnologia. E, como normalmente acontece, sempre que chega um novo tipo de tecnologia, ele está abrindo novas oportunidades fantásticas. Algumas delas já podemos começar a ver, mas muitas outras surgirão ao longo das semanas, meses e anos que virão.
Então, como você pode se envolver nesse incrível período de rápido crescimento tecnológico — e conceitual? O primeiro passo é simplesmente explorar o ChatGPT + Wolfram. O ChatGPT e o Wolfram, em si, são sistemas enormes por conta própria; a combinação deles é algo que levará anos para ser totalmente explorado. A etapa número um é ter uma ideia do que é possível.
Encontre exemplos. Compartilhe-os. Tente identificar padrões bem-sucedidos de uso. E, acima de tudo, tente encontrar fluxos de trabalho que entreguem o maior valor. Esses fluxos de trabalho podem ser bastante elaborados. Mas também podem ser bem simples — casos em que, uma vez que se vê o que pode ser feito, há um “aha” de imediato.
Como implementar melhor um fluxo de trabalho? Bem, estamos tentando descobrir os melhores fluxos de trabalho para isso. Dentro da Wolfram Language, estamos criando formas flexíveis de chamar coisas como o ChatGPT, tanto pura e programaticamente quanto no contexto da interface de notebook.
Mas e quanto ao ChatGPT? A Wolfram Language tem uma arquitetura muito aberta, na qual um usuário pode adicionar ou modificar praticamente o que quiser. Mas como você pode usar isso a partir do ChatGPT? Você pode simplesmente pedir que o ChatGPT inclua uma parte específica de código da Wolfram Language “inicial” (talvez junto com a documentação) — e então usar algo como o pidgin acima para conversar com o ChatGPT sobre as funções ou outras coisas que você definiu nesse código inicial.
Estamos planejando construir ferramentas cada vez mais simplificadas para lidar e compartilhar o código em Wolfram Language para uso através do ChatGPT. Mas uma abordagem que já funciona é enviar funções para publicação no Wolfram Function Repository e, então, quando publicadas, encaminhar essas funções em sua conversa com o ChatGPT.
OK, mas e quanto ao ChatGPT em si? Que tipo de engenharia de comando você deveria fazer para melhor interagir com o plugin da Wolfram? Bem, ainda não sabemos. É algo ainda a ser explorado — de fato, como um exercício em IA ou psicologia de IA. Uma abordagem comum é dar alguns “pré-comandos” antes em sua sessão do ChatGPT e esperar que “ainda esteja prestando a atenção” nelas posteriormente. (E, sim, possui uma “capacidade de concentração” limitada; por isso, algumas vezes as coisas precisam ser repetidas).
Tentamos dar um comando geral para dizer ao ChatGPT basicamente como usar o plugin da Wolfram — e esperamos na íntegra que esse comando se evolua rapidamente, à medida que aprendemos mais, e à medida que o LLM do ChatGPT é atualizado. Mas você pode incluir seus próprios pré-comandos gerais, dizendo algo como “Quando usar a Wolfram sempre tentar incluir uma foto” ou “Use unidades SI” ou “Evite usar números complexos, se possível”.
Você pode também tentar configurar um pré-comando que essencialmente “define uma função” direto no ChatGPT — algo como: “Se eu fizer uma contribuição consistida de um número, você deve usar a Wolfram para extrair um polígono com esse número de faces”. Ou, mais diretamente, “Se eu fizer uma contribuição consistida de números, você deve aplicar a seguinte função da Wolfram para essa entrada…”, e então apresentar algum código explícito em Wolfram Language.
Mas estamos bem no início disso tudo, e, sem dúvida, haverá outros mecanismos poderosos descobertos para “programar” ChatGPT + Wolfram. E acredito que podemos esperar com confiança que o próximo período será um momento incrível de alto crescimento, no qual podemos ter frutos bastante acessíveis e valiosos a serem colhidos por aqueles que escolherem se envolver .
Certo contexto & Perspectiva
Certo contexto & Perspectiva
Mesmo na semana passada, não estava claro como seria o ChatGPT + Wolfram ou quão bem ele funcionaria. Mas isso tudo está se movendo bem rápido, construído sobre décadas de desenvolvimento no passado. E, de certa forma, a chegada do ChatGPT + Wolfram finalmente une as duas principais abordagens historicamente adotadas para a IA, que por muito tempo foram consideradas desconexas e incompatíveis.
O ChatGPT é basicamente uma rede neural bem ampla, treinada para seguir os padrões “estatísticos” de texto que foram vistos na web, etc. O conceito de redes neurais — em uma forma surpreendentemente próxima do que é usado no ChatGPT — surgiu ainda na década de 1940. No entanto, depois de algum entusiasmo nos anos 1950, o interesse diminuiu. Houve um ressurgimento no início dos anos 1980 (e, de fato, eu mesmo olhei pela primeira vez para as redes neurais naquela época). Mas apenas em 2012 foi que a empolgação séria começou a construir sobre o que poderia ser possível com as redes neurais. E agora, uma década depois — em um desenvolvimento cujo sucesso foi uma grande surpresa até mesmo para os envolvidos — temos o ChatGPT.
Separadamente da tradição “estatística” das redes neurais está a tradição “simbólica” para a IA. E, em certo sentido, essa tradição surgiu como uma extensão do processo de formalização desenvolvido para a matemática (e lógica matemática), particularmente perto do início do século XX. Mas o que foi crítico sobre isso foi que ele se alinhou bem não apenas com conceitos abstratos de computação, mas também com computadores digitais reais do tipo que começaram a aparecer na década de 1950.
Os sucessos naquilo poderia realmente ser considerado “IA” foram por muito tempo, na melhor das hipóteses, irregulares. Mas, ao mesmo tempo, o conceito geral de computação estava se mostrando um sucesso tremendo e crescente. Como a “computação” poderia estar relacionada às formas como as pessoas pensam sobre as coisas? Para mim, um desenvolvimento crucial foi minha ideia no início dos anos 1980 (construindo sobre o formalismo anterior da lógica matemática) de que regras de transformação para expressões simbólicas poderiam ser uma boa maneira de representar computações em um nível que equivale a um “humano”.
Na época, meu foco principal era a computação matemática e técnica, mas logo comecei a me perguntar se ideias semelhantes poderiam ser aplicáveis à “IA geral”. Eu suspeitava que algo como redes neurais poderia ser desempenhado, contudo, na ocasião, eu apenas conjeturei um pouco sobre o que seria necessário — e não em como obter. Enquanto isso, a ideia central das regras de transformação para expressões simbólicas se tornou o alicerce do que agora é a Wolfram Language — e possibilitou o longo processo de décadas de desenvolvimento de uma linguagem computacional de escala completa que temos hoje.
Desde os anos 1960 houve esforços entre os pesquisadores de IA para desenvolver sistemas que poderia “entender linguagem natural”, “representar o conhecimento” e responder perguntas a partir disso. Algo do que foi feito se transformou em aplicações menos ambiciosas, mas práticas. E, no geral, o sucesso foi indefinido. Enquanto isso, como resultado do que equivaleu a uma conclusão filosófica de ciência básica que fiz nos anos 1990, eu decidi por volta de 2005 tentar construir um “engine de conhecimento computacional” geral que poderia amplamente responder a perguntas factuais e computacionais feitas em linguagem natural. Não era óbvio que esse sistema poderia ser construído, mas nós descobrimos que — com nossa linguagem computacional adjacente, e com muito trabalho — era possível. E, em 2009, pudemos lançar o Wolfram|Alpha.
No sentido do que tornou o Wolfram|Alpha possível, internamente ficou claro e formal representar as coisas no mundo e fazer cálculos a respeito delas. Para nós, “entender linguagem natural” não era algo abstrato; era o processo concreto de traduzir linguagem natural à linguagem computacional estruturada.
Outra parte foi reunir todos os dados, métodos, modelos e algoritmos necessários para “saber” e “calcular” sobre o mundo. E enquanto automatizamos isso consideravelmente, ainda sempre achávamos que no final “fazer as coisas da maneira certa” não era uma escolha, mas deveria haver peritos humanos envolvidos. E enquanto houver um pouco daquilo do que imaginamos ser “IA estatístico” no sistema de entendimento de linguagem natural do Wolfram|Alpha, grande parte do Wolfram|Alpha — e da Wolfram Language — opera de maneira intensa e simbólica, pelo menos reminiscente da tradição de IA simbólica. (Isso não quer dizer que as funções individuais na Wolfram Language não usam machine learning ou técnicas estatísticas; nos últimos anos e cada vez mais elas usam, e a Wolfram Language também possui toda uma estrutura constuída para fazer machine learning.)
Como falei em outra ocasião, o que parece ter surgido é que a “IA estatística”, e particularmente redes neurais, são bem adequadas para tarefas que nós humanos “fazemos rapidamente”, incluindo — como aprendemos com o ChatGPT — a linguagem natural e o “pensamento” que a sustenta. Mas a abordagem simbólica e, em certo sentido, “mais rigidamente computacional” é o que é necessário quando se está construindo “torres conceituais” ou “computacionais” maiores — o que acontece na matemática, nas ciências exatas e agora em todos os campos “X computacionais”.
E agora ChatGPT + Wolfram pode ser considerado como o primeiro sistema de “IA” verdadeiramente em grande escala, estatístico + simbólico. No Wolfram|Alpha (que se tornou uma parte central original de fatores como o assistente inteligente Siri), houve pela primeira vez uma ampla compreensão de linguagem natural — com “compreensão” diretamente ligada à representação e computação computacionais reais. Assim, 13 anos depois, vemos no ChatGPT que a tecnologia puramente “estatística” de redes neurais, quando treinada a partir de quase toda a web, etc., pode fazer um trabalho notável em gerar “linguagem significativa” “do tipo humana” “estatisticamente”. E no ChatGPT + Wolfram agora somos capazes de alavancar toda a pilha: a partir da rede neural puramente “estatística” do ChatGPT, através da compreensão de linguagem natural “ancorada computacionalmente” do Wolfram|Alpha, até toda a linguagem computacional e conhecimento computacional da Wolfram Language.
Quando estávamos construindo o Wolfram|Alpha pela primeira vez, pensamos que talvez para obter resultados úteis não teríamos escolha a não ser iniciar uma conversa com o usuário. Mas descobrimos que, se imediatamente gerássemos resultados ricos, “visualmente escaneáveis”, só precisávamos de uma interação simples de “Suposições” ou “Parâmetros” — pelo menos para o tipo de informação e busca de computação que esperávamos de nossos usuários. (No Wolfram|Alpha Notebook Edition, no entanto, temos um poderoso exemplo de como a computação de várias etapas pode ser feita com linguagem natural).
Em 2010, já estávamos experimentando a geração não apenas do código da Wolfram Language de consultas típicas do Wolfram|Alpha a partir de linguagem natural, mas também de “programas inteiros”. Na época, no entanto — sem a tecnologia moderna de LLM — isso não foi muito longe. Mas o que descobrimos foi que — no contexto da estrutura simbólica da Wolfram Language — mesmo pequenos fragmentos do que equivale a código gerado por linguagem natural eram extremamente úteis. E de fato eu, por exemplo, uso o mecanismo “+=” em Wolfram Notebooks inúmeras vezes quase todos os dias, por exemplo, para construir entidades ou quantidades simbólicas a partir da linguagem natural. Ainda não sabemos exatamente qual será a versão “capacitada de “LLM “ moderna disso, mas é provável que envolva a rica “colaboração” humano-IA que discutimos acima, e que podemos começar a ver em ação pela primeira vez em ChatGPT + Wolfram.
Vejo o que está acontecendo agora como um momento histórico. Por mais de meio século, as abordagens estatísticas e simbólicas para o que podemos chamar de “IA” evoluíram em grande parte separadamente. Mas agora, com o ChatGPT + Wolfram, elas estão se unindo. E embora ainda estejamos apenas no começo disso, acredito que podemos esperar razoavelmente um tremendo poder na combinação — e, de certa forma, um novo paradigma para a “computação do tipo IA”, possibilitada pela chegada do ChatGPT e, agora, pela sua combinação com o Wolfram|Alpha e a Wolfram Language em ChatGPT + Wolfram.
© 2023 Wolfram. All rights reserved.