Curso
O modelo de linguagem de grande porte Bard, do Google, evoluiu desde seu lançamento em 2023, adicionando recentemente respostas em "tempo real", como outros modelos.
O líder atual nesse espaço é o ChatGPT, da OpenAI, e eu queria entender como o Bard se sairia. O Google inventou os modelos transformers que impulsionam essas IAs generativas e tem enormes recursos para tentar retomar a dianteira. Por outro lado, a OpenAI tem a vantagem de vários anos de feedback dos usuários de seus modelos GPT-2, GPT-3, GPT-3.5 e GPT-4.
Recentemente, a DataCamp lançou um guia rápido do ChatGPT para ciência de dados com mais de 60 exemplos de usos reais do ChatGPT em ciência de dados. No material, o ChatGPT manda bem em todas as tarefas.
Embora o Google deixe claro que o Bard ainda não está otimizado para tarefas de código, neste artigo vamos testar tarefas selecionadas de ciência de dados para mostrar onde o Bard se sai bem — e onde não vai tão bem — para ver se a coroa mudou de dono. Você encontra uma comparação mais geral entre ChatGPT e Google Bard em outro artigo.
Curso de Introdução ao ChatGPT
Comece a usar o ChatGPT
Fluxos de trabalho de programação
Onde o Bard se sai bem?
Otimizar código é uma tarefa comum, mas espinhosa. Geralmente existem muitas formas possíveis de tornar o código mais eficiente ou rápido, e raramente há uma única resposta correta. Uma boa resposta a um pedido de otimização deve apresentar várias soluções. Nesta tarefa, o Bard foi solicitado a otimizar um código SQL.

O Bard apresenta 10 opções. Todas fazem sentido, embora algumas sejam variações do mesmo tema (cinco tipos de criação de índice) e todas focadas em gestão do banco de dados, em vez de melhorar a própria consulta.
Escrever testes de unidade é importante e pouca gente curte, então contar com a IA para isso pode ser uma bênção. Claro, os testes precisam ser bons! No exemplo, o Bard foi convidado a escrever testes para uma função que calcula fatoriais.

O código é bem estruturado, e a maioria dos testes faz sentido. Um ponto de atenção é que o teste para entradas do tipo string pede que a função retorne valores numéricos. Um programador provavelmente escreveria testes que geram erro ao receber string, já que o fatorial de um texto não tem sentido. O prompt não especificou o comportamento para strings, então isso poderia ser corrigido com um prompt mais detalhado. Eu diria que a resposta é boa, mas não perfeita.
Onde o Bard vai mal?
Talvez o caso de uso mais popular do ChatGPT em ciência de dados seja explicar erros no código. Por isso, eu esperava que o Bard acertasse ao explicar um simples erro de sintaxe em um código R.

Infelizmente, o Bard se recusou a responder (e deu resposta semelhante ao explicar erros em Python e SQL). É decepcionante. Por outro lado, recusar responder é a melhor forma de falhar. Um grande problema com modelos de IA é quando eles dão respostas erradas com confiança e acabam te levando ao erro. Ponto positivo para o Google por embutir cautela no Bard.
O Bard deu uma resposta similar quando pedi para explicar um trecho de código em Python.

Veredito: o ChatGPT vence
Apesar de algumas respostas decentes a perguntas de programação, as lacunas em explicação de código e de erros tornam o Bard pouco adequado para te ajudar a aprender sobre o seu código.
Fluxos de trabalho de análise de dados
Onde o Bard se sai bem?
Usar linguagem natural (frases em linguagem humana) para escrever consultas SQL é um caso de uso superimportante, pois permite que usuários de negócio com menos bagagem técnica acessem dados nos bancos. Aqui, o Bard foi solicitado a escrever uma consulta simples que agrega detalhes de clientes.

O código e as explicações estão corretos, e ele ainda ordena as linhas do tipo de e-mail mais comum para o menos comum, o que é útil para quem vai olhar o resultado.
As common table expressions (CTEs) são o equivalente em SQL às variáveis do Python ou R: permitem construir consultas longas em etapas. Reescrever consultas complexas com subconsultas aninhadas é um bom truque para deixar o código mais legível. No exemplo a seguir, eu quis que o Bard movesse a subconsulta (o código interno que começa com SELECT) para uma CTE.

Aqui, o Bard entendeu mal o problema e moveu tudo para uma CTE. Porém, o Bard tem um trunfo: sempre que você pede uma resposta, ele gera três e permite escolher. Neste caso, a terceira resposta está correta.

Outra aplicação interessante para análise de dados é limpeza de dados. Não é uma tarefa divertida para humanos, então ajuda se a IA fizer por você. Porém, muitas vezes há várias formas de limpar os dados, e não uma única solução.

Neste caso, o código está correto, mas tem duas peculiaridades. Primeiro, ele assume que customer_id está no índice do DataFrame. Embora alguns usuários de pandas prefiram esse formato, o prompt dizia que customer_id era uma coluna. Segundo, a combinação .replace()/.isnull() é mais desajeitada do que usar .fillna(). De novo, o esquema de "três soluções" salva o Bard: a segunda solução resolve as duas queixas.

Onde o Bard vai mal?
Como empresa de educação, na DataCamp temos uma necessidade quase ilimitada de novos conjuntos de dados para que os usuários possam praticar análises. Ter uma IA que gere datasets instantaneamente muda o jogo. Para todo mundo, poder gerar dados de teste rapidamente traz um baita ganho. O ChatGPT faz isso muito bem, mas vamos ver o desempenho do Bard.

De novo, ele se recusa a responder. Assim como nos exemplos de programação, me impressiona a cautela, mas decepciona o fato de não concluir a tarefa.
Como uma parte grande da análise de dados é a manipulação, seria ótimo se a IA pudesse escrever o código por você. O próximo exemplo é um pouco mais difícil porque exige que a IA entenda que o ano precisa ser calculado a partir da data de ingresso.

Infelizmente, essa sutileza passou batido e o código está errado. Na verdade, as três soluções geradas estão erradas. É um erro ruim: a IA está confiante na resposta errada.
Veredito: o ChatGPT vence
Gosto do fato de o Bard trazer três soluções, aumentando a chance de algo adequado. Porém, a incapacidade de gerar datasets e realizar manipulações (um pouco mais) complexas é um impeditivo.
Fluxos de trabalho de visualização de dados
Onde o Bard se sai bem?
Testei uma tarefa simples de "criar um gráfico de dispersão" com um detalhe: mudar o tema de cores do gráfico. O site FiveThirtyEight publica seu próprio tema, disponível no pacote popular Matplotlib.

O código está correto, embora traga uma peculiaridade: mcolors é importado, mas nunca usado.
Onde o Bard vai mal?
Outra tarefa relativamente direta é desenhar um gráfico de linhas com várias séries. O conjunto de dados é o gapminder, muito usado para demonstrações.

Aqui, o código está quase certo, mas surge o mesmo problema: o Bard fica em dúvida se country é coluna ou índice (apesar de o prompt indicar isso). A seleção de linhas em plt.plot() supõe que country está no índice, o que é inconsistente com a linha anterior.
Pedi ao Bard a mesma tarefa usando o ggplot2 do R.

O Bard recusou educadamente. Fiquei um pouco surpreso, já que o ggplot2 é o pacote de visualização mais popular do R há mais de uma década e existem muitos exemplos de código.
Veredito: o ChatGPT vence
Eu até perdoaria a confusão do Bard com índices do pandas, mas a incapacidade de desenhar um gráfico simples no ggplot2 o torna inadequado para usuários de R.
Fluxos de trabalho de machine learning
Onde o Bard se sai bem?
Testei algumas tarefas e, infelizmente, todas tiveram problemas. Isso é um grande sinal de alerta para o Bard, já que machine learning em Python é extremamente popular.
Onde o Bard vai mal?
O ponto de partida mais óbvio em machine learning é treinar um modelo e fazer previsões em Python.

O código é, em geral, bom, mas há um problema na criação dos conjuntos de treino e teste. A boa prática é selecionar linhas aleatoriamente para cada conjunto, mas o Bard simplesmente pega as últimas mil linhas para o teste (e coloca o restante no treino). Isso só seria aceitável se os filmes no dataset estivessem em ordem aleatória.
Outra área importante é explicabilidade de modelos. Árvores de decisão são relativamente fáceis de explicar com valores SHAP, e há um fluxo de trabalho bem consolidado para isso.

Infelizmente, o código chama shap.explain(), função que não existe. Esse tipo de problema é fácil de detectar porque, ao rodar, o código quebra. Ainda assim, gerar código que não funciona é perda de tempo.
Também quis testar uma tarefa mais conceitual. Boa parte da arte do machine learning está em usar conhecimento de domínio para criar features relevantes para os modelos. Ter ideias de features pode ser difícil, então é uma área em que a IA pode ajudar bastante.

A resposta não é péssima, já que traz duas ideias úteis de features (gênero e orçamento). Porém, as outras duas ideias já estavam no prompt, e a segunda lista não foi solicitada. Além disso, fala em "técnicas de engenharia de dados" e não "técnicas de machine learning", o que está incorreto.
Veredito: o ChatGPT vence
O desempenho do Bard aqui foi muito fraco; sem comparação.
Fluxos de trabalho de séries temporais
Onde o Bard se sai bem?
Infelizmente, não consegui convencer o Bard a concluir nenhuma tarefa de séries temporais.
Onde o Bard vai mal?
Tentei tarefas de manipulação de dados de séries temporais, convertendo dados diários em semanais e mensais.

O Bard recusou.
Depois, tentei fazer um teste de estacionariedade.

Mais uma vez, o Bard recusou. Como antes, eu aprecio a cautela embutida na IA para reduzir o número de respostas erradas.
Veredito: o ChatGPT vence
Parece que análise de séries temporais ainda não é o forte do Bard.
Fluxos de trabalho de processamento de linguagem natural
Onde o Bard se sai bem?
É de se imaginar que modelos de linguagem funcionem bem com linguagem. Análise de sentimento (detectar se um texto tem tom positivo ou negativo) é importante para quantificar avaliações de produtos em e-commerces e virou item básico em análise de texto. Esta tarefa ficou um pouco mais desafiadora com a inclusão de um emoji e uma gíria.

A primeira resposta do Bard é ok, mas ele não percebeu que cada linha do prompt deveria ser considerada separadamente. (Para ser justo, isso não foi dito explicitamente, embora um humano talvez deduzisse.) A terceira resposta do Bard captou esse detalhe.

Nos dois casos, o emoji e a gíria foram interpretados corretamente.
Onde o Bard vai mal?
Traduzir texto entre idiomas foi o caso de uso original dos transformers. Pedi que o Bard respondesse em francês.

Infelizmente, o Bard trouxe uma explicação em inglês sobre machine learning e a tradução da expressão "machine learning" para o francês, em vez de responder tudo em francês.
Veredito: o ChatGPT vence
Essa falha de tradução me surpreendeu.
Tarefas conceituais e de carreira
Onde o Bard se sai bem?
Explicar ideias técnicas da sua análise para quem não tem background em dados é uma das partes mais difíceis da área. Pedi ao Bard que explicasse teste A/B para um executivo.

A explicação é bem boa. Há uma suposição meio duvidosa de que a nova fonte resultou em maior taxa de conversão (depende de como o teste foi configurado; pode ser apenas uma taxa diferente). As outras duas respostas captaram essa sutileza, então não vou tirar pontos aqui.
Outra tarefa útil é resumir materiais longos. Aqui, pedi ao Bard que resumisse o artigo original sobre transformers (escrito por funcionários do Google).

É um bom resumo, fácil de ler. Uma peculiaridade é que ele inclui links para posts de blog sobre o artigo, e não para o paper original.
Para quem quer seguir carreira em dados, conseguir ideias de projetos para conquistar o emprego dos sonhos é essencial. Pedi ao Bard que sugerisse ideias de projetos. É outra tarefa criativa, sem resposta única.

Por fim, criar introduções para trabalhos mais longos é uma daquelas tarefas meio chatas que eu prefiro terceirizar para a IA.

De novo, com contexto mínimo, a IA entrega um texto bem escrito.
Onde o Bard vai mal?
Neste caso, o Bard foi bem em todas as tarefas que propus.
Veredito: empate
Embora seja difícil quantificar se o ChatGPT ou o Bard é melhor nessas tarefas criativas, fico feliz de ter encontrado uma área em que o Bard entregou resultados de alta qualidade de forma consistente.
Resumo
Existem lacunas importantes no conhecimento do Bard sobre fluxos de trabalho em ciência de dados: não conseguir explicar erros de código e ir mal em tarefas de machine learning em Python são problemas sérios.
Curti o fato de você receber três respostas para escolher a melhor, e gostei da cautela de reconhecer limites. É muito melhor recusar responder do que dar uma resposta errada.
No fim, o ChatGPT ainda reina, mas estou curioso para ver a evolução do Bard. A concorrência no espaço de IA generativa só tem a beneficiar todo mundo.
Leve suas habilidades para o próximo nível
Se quiser aprender mais sobre como usar IA generativa em ciência de dados, confira estes recursos:
- Aprenda a usar o ChatGPT com eficiência no curso Introduction to ChatGPT.
- Veja nosso guia de uso do ChatGPT em projetos de ciência de dados.
- Baixe este guia rápido de prompts do ChatGPT para ciência de dados.
- Ouça este episódio do podcast sobre como o ChatGPT e o GPT-3 estão ampliando fluxos de trabalho para entender como o ChatGPT pode beneficiar seu negócio.
- Saiba mais sobre o que é o GPT-4 e por que isso importa.
Curso de Introdução ao ChatGPT
Comece a usar o ChatGPT
Richie ajuda indivíduos e organizações a melhorar o uso de dados e IA. Ele é cientista de dados desde antes de o termo ser chamado de ciência de dados, escreveu dois livros e criou muitos cursos DataCamp sobre o assunto. Ele é apresentador do podcast DataFramed e dirige o programa de webinars do DataCamp.


