Olá! Meu nome é Valquíria Alencar, sou instrutora na Escola de Dados e na Escola de IA.
Audiodescrição: Valquíria se declara uma mulher de pele clara, de olhos castanhos, cabelos castanhos e ondulados na altura abaixo dos ombros. Veste uma blusa bege e está nos estúdios da Alura. Ao fundo, uma parede com iluminação azul.
Criar nossa própria inteligência artificial para auxiliar na análise de dados pode ser uma experiência incrível, especialmente quando conseguimos fazê-lo de forma segura.
Muitas das ferramentas existentes no mercado não permitem o envio de dados pessoais ou empresariais, pois esses modelos são frequentemente treinados com dados de outras fontes, o que pode comprometer a privacidade e a segurança.
Uma solução para esse problema é o uso da ferramenta LlamaIndex, que nos permite desenvolver uma inteligência artificial sob medida e segura. Com ela, podemos carregar nossos dados de forma controlada, sem a preocupação de que informações confidenciais sejam vazadas ou acessadas indevidamente.
Neste curso, vamos atuar como cientistas de dados de uma loja de varejo chamada de Zoop Megastore. Eles precisam criar uma inteligência artificial para ajudar no processo de análise de dados, automatizando tarefas e auxiliando o time de dados, o que pode acelerar a tomada de decisão.
Vamos conhecer a ferramenta para entender o que vamos criar juntos. Essa ferramenta está hospedada no Hugging Face, e aprenderemos como utilizá-la.
A ideia é fazer o upload de um arquivo no formato CSV. Vamos fazer o upload agora para entender como a ferramenta funciona. Temos um arquivo com dados de vendas da empresa em que atuaremos como cientistas de dados. O arquivo foi carregado com sucesso, e já podemos visualizar as cinco primeiras linhas e as colunas que ele possui.
A partir daí, podemos fazer perguntas sobre esses dados na seção mais abaixo chamada "Digite sua pergunta sobre os dados". Temos algumas sugestões de perguntas.
Vamos testar uma para verificar como funciona. A primeira pergunta é sobre o número de registros no arquivo, ou seja, a quantidade de linhas. Podemos clicar no botão "Enviar" abaixo, e o resultado será exibido em seguida, informando que o número de registros no arquivo é de mil.
O número de registros no arquivo é de 1000
O código utilizado foi len(df)
O código usado para chegar a esse resultado também é mostrado.
Podemos adicionar tanto a pergunta quanto a resposta ao histórico para gerar, ao final, um relatório. Há a opção de "Adicionar ao histórico do PDF". Ao clicar nesse botão, será exibida uma confirmação de que foi adicionado na parte superior direita, e podemos limpar a pergunta e o resultado para realizar novas perguntas e análises clicando no botão correspondente.
Quando estivermos satisfeitos com as perguntas feitas, basta clicar no botão "Gerar PDF". Ao clicar, ele gera automaticamente um PDF para download.
Podemos fazer o download clicando em "12KB" à direita do nome do arquivo gerado e verificar o resultado, que é um arquivo PDF contendo tanto a pergunta quanto a resposta:
Qual é o número de registros no arquivo? O número de registros no arquivo é de 1000
O código utilizado foi len(df)
Podemos criar um relatório completo com várias perguntas e respostas.
Após concluir o relatório, se desejarmos analisar outro conjunto de dados, basta clicar no botão "Quero analisar outro dataset!" na parte inferior. Ao clicar, tudo é resetado, e podemos carregar um novo arquivo e repetir o processo. É realmente incrível.
Para acompanhar este curso, recomendamos que já tenhamos conhecimento de programação em Python e da biblioteca Pandas, pois ela será usada para realizar consultas e obter respostas.
Vamos começar?
Iniciaremos nosso projeto atuando como cientistas de dados para uma rede de lojas de varejo chamada Zoop.
O que a empresa espera de nós é a implementação de uma inteligência artificial que automatize o processo de análise de dados. Com isso, o objetivo é acelerar a tomada de decisões, permitindo uma gestão mais ágil e informada.
Os desafios enfrentados até o momento incluem a dependência de análises de dados manuais, que podem ser lentas e criar gargalos em alguns processos. Além disso, há a necessidade de utilizar os dados de forma segura, sem depender de ferramentas existentes no mercado, evitando o envio de dados pessoais ou empresariais, pois os modelos são treinados com esses dados, levantando questões de privacidade.
Para resolver isso, criaremos uma inteligência artificial generativa capaz de receber dados em um formato estruturado, como uma tabela ou um arquivo CSV. Assim, o time de dados poderá consultar essas informações fazendo perguntas em linguagem natural, como "Qual foi o faturamento de vendas no mês anterior?". O modelo interpretará essas perguntas e fornecerá respostas, facilitando o processo.
Utilizaremos essa solução de forma segura, sem a possibilidade de treinar um modelo externo, garantindo total sigilo para a empresa ao enviar seus dados.
A ferramenta que usaremos para isso é o LlamaIndex, que integra um modelo de linguagem grande (Large Language Model - LLM) aos nossos dados, permitindo perguntas em linguagem natural e recebendo respostas.
Iniciaremos o projeto carregando alguns dados da Zoop para criar essa inteligência artificial. Esses dados estão disponíveis no GitHub. Vamos abrir o arquivo vendas.csv
e, no canto superior direito, clicar no botão "Raw" para acessar os dados brutos.
https://raw.githubusercontent.com/vqrca/llamaIndex_pandas_query/refs/heads/main/Dados/vendas.csv
Copiaremos o link e, no Google Colab, criaremos uma variável url
para armazenar esse endereço:
url = 'endereço_do_arquivo'
Executaremos essa célula com "Shift + Enter" e faremos a leitura do arquivo, que está no formato CSV. Utilizaremos a biblioteca pandas para carregar o arquivo:
import pandas as pd
Executaremos a célula e leremos o arquivo, armazenando os dados em uma variável chamada df
chamando o pandas com pd.read_csv()
passando a url
:
df = pd.read_csv(url)
Executaremos a célula e visualizaremos as cinco primeiras linhas para entender os dados que temos:
df.head()
- ID_compra filial cidade tipo_cliente genero tipo_produto preco_unitario quantidade imposto_5% total data hora forma_pagamento avaliacao 0 750-67-8428 A Santo André Membro Feminino Saúde e Beleza 74.69 7 26.1415 548.9715 2024-01-05 13:08:00 Carteira Digital 9.1 1 226-31-3081 C São Caetano Normal Feminino Eletrônicos 15.28 5 3.8200 80.2200 2024-03-08 10:29:00 Dinheiro 9.6 2 631-41-3108 A Santo André Normal Masculino Casa 46.33 7 16.2155 340.5255 2024-03-03 13:23:00 Cartão de Crédito 7.4 3 123-19-1176 A Santo André Membro Masculino Saúde e Beleza 58.22 8 23.2880 489.0480 2024-01-27 20:33:00 Carteira Digital 8.4 4 373-73-7910 A Santo André Normal Masculino Esportes e Viagem 86.31 7 30.2085 634.3785 2024-02-08 10:37:00 Carteira Digital 5.3
Os dados incluem colunas como o ID da compra, a filial onde o cliente efetuou a compra, a cidade onde a filial está localizada, o tipo de cliente, o gênero do cliente, o tipo de produto comprado, o preço unitário, a quantidade comprada, o imposto sobre o produto de 5%, o valor total, a data e horário da compra, a forma de pagamento e a avaliação do serviço.
Precisamos verificar se esses dados estão prontos para serem utilizados pela inteligência artificial. Não faremos tratamento de dados ou transformações em colunas; a ideia é que tudo já esteja preparado para rodar a inteligência artificial e começar a fazer perguntas.
Na próxima célula, verificaremos se há dados nulos e se os tipos de dados estão corretos:
df.info()
Como retorno, obtemos:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000 entries, 0 to 999
Data columns (total 14 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 ID_compra 1000 non-null object
1 filial 1000 non-null object
2 cidade 1000 non-null object
3 tipo_cliente 1000 non-null object
4 genero 1000 non-null object
5 tipo_produto 1000 non-null object
6 preco_unitario 1000 non-null float64
7 quantidade 1000 non-null int64
8 imposto_5% 1000 non-null float64
9 total 1000 non-null float64
10 data 1000 non-null object
11 hora 1000 non-null object
12 forma_pagamento 1000 non-null object
13 avaliacao 1000 non-null float64
dtypes: float64(4), int64(1), object(9)
memory usage: 109.5 KB
Temos 1.000 registros de vendas, sem dados nulos. As colunas têm tipos de dados como objeto, float (preço unitário, imposto, valor total) e inteiro (quantidade).
No entanto, as colunas de data
e hora
estão como objetos, o que pode causar erros ao fazer perguntas sobre essas informações. Seria necessário converter esses tipos usando o datetime
da biblioteca pandas, mas não focaremos nisso agora.
Mas para estarmos cientes que se quisermos trabalhar com datas e horas, é necessário converter esse tipo de dado.
Também verificaremos se há dados duplicados na célula seguinte:
df.duplicated().sum()
0
Não há dados duplicados. Com tudo em ordem, podemos começar a trabalhar com esses dados.
No próximo vídeo, entenderemos como configurar o LlamaIndex para criar nossa inteligência artificial. Nos vemos no próximo vídeo.
Carregamos os dados e verificamos se havia informações nulas ou duplicadas. Tudo está em ordem para continuarmos. Agora, precisamos de uma ferramenta para criar uma inteligência artificial que nos permita passar esses dados e fazer perguntas usando linguagem natural para obter respostas.
A solução para isso é utilizar um modelo de linguagem grande, um LLM (Large Language Model), que consiga realizar todo esse processo de captar as informações e nos fornecer uma resposta. No entanto, precisamos de uma ferramenta que possibilite essa integração.
A ferramenta que utilizaremos é chamada LlamaIndex, que, traduzindo, seria "Lhama", o animal, bem conhecido. A ideia dessa ferramenta é permitir que ela receba vários tipos de arquivos, incluindo planilhas, apresentações, arquivos em formato PDF, áudio, e até mesmo dados de plataformas como Slack e Discord.
São diversos tipos de conteúdo que podem ser utilizados. O processo que ocorre é chamado de indexação, onde a ferramenta transforma esses arquivos em um formato vetorial. Com isso, podemos realizar várias ações, como perguntas e respostas, criar chatbots e interagir com os dados.
Precisamos agora entender como isso será implementado. Já deixamos aberto um link com a documentação dessa biblioteca, que contém informações valiosas. Na barra de menu superior da documentação, encontramos a seção "Use cases", os casos de uso que podemos explorar. Clicamos nela.
Feito isso, na lateral direita, encontramos uma opção chamada question answering, ou seja, pergunta-resposta, que é exatamente o que precisamos. Se temos um arquivo CSV com dados e queremos fazer perguntas sobre eles e obter respostas, é isso que utilizaremos. Clicamos nessa opção.
Na nova página, encontramos um texto explicando que podemos trabalhar tanto com dados não estruturados quanto com informações estruturadas, como é o nosso caso, com um arquivo em formato tabular, CSV. O texto também menciona a metodologia chamada REG (Retrieval Augmented Generation), ou seja, geração aumentada de recuperação.
Não se preocupe com esse termo agora, pois teremos uma atividade explicando o que é REG e a diferença entre trabalhar com dados não estruturados e estruturados.
A ideia é que não podemos trabalhar com REG em documentos não estruturados. Por exemplo, se temos um texto em PDF ou um documento do Slack, utilizamos esse método.
No nosso caso, trabalharemos com QA em dados estruturados, que podem ser um banco de dados ou um arquivo CSV. Existem duas opções: se trabalhamos com dados de um banco de dados, utilizamos a primeira opção, que é para trabalhar com textos no formato SQL. No nosso caso, temos um arquivo CSV, então utilizamos a segunda opção, que é o texto para pandas. Usaremos a biblioteca pandas para analisar os dados, entender qual instrução ou código é necessário para obter a resposta desejada, utilizando a biblioteca pandas. Vamos clicar nesse segundo link chamado "Text-to-Pandas Guide".
Somos encaminhados para uma página referente ao Pandas query engine, que nos permite converter a linguagem natural da pergunta em um código pandas, utilizando LLMs.
Para começar a trabalhar com isso, precisamos instalar tanto o LlamaIndex quanto o LlamaIndex Experimental. Vamos copiar o código de instalação, colar no Google Colab e executar. Adicionamos um traço e a letra q
para que não exiba todo o processo de instalação, facilitando a visualização.
!pip install llama-index llama-index-experimental -q
Com a instalação concluída, voltamos à documentação. A próxima etapa é criar uma variável para instanciar o Pandas Query Engine
, passando nossos dados e começando a fazer perguntas. No entanto, se fizermos isso agora, ocorrerá um erro. Por padrão, o LlamaIndex utiliza um modelo de linguagem e uma chave de API da OpenAI, que é paga. A ideia é realizar o processo de forma gratuita, utilizando uma alternativa disponível, o Groq, que fornece chaves de acesso para modelos de linguagem abertos e gratuitos.
Para obter uma chave de API no Groq, acessamos a seção "Developers" na barra de menu superior e clicamos em "Free API Key". Para seguir para as próximas etapas é necessário fazer o login, que pode ser feito pelo Google. Após, na aba API Keys encontramos algumas que foram criadas antes. Clicamos no botão "Create API Key" para criar uma nova.
Na janela que abre, precisamos definir o nome. Nesse caso, será "chave_groq" e clicamos em "Submit". Nisso, a ferramenta disponibiliza uma chave. A copiamos e voltamos ao Google Colab.
É importante manter a chave de API secreta no notebook, GitHub ou qualquer código visível a outras pessoas. No Google Colab, no menu lateral esquerdo, clicamos no ícone de chave. Colamos a chave copiada e habilitamos o acesso ao notebook.
Para acessar a chave no notebook, utilizamos o código abaixo e executamos a célula.
from google.colab import userdata
key = userdata.get('GROQ_API')
Armazenamos a chave em uma variável chamada key
. Em seguida, instalaremos o lama-index-llms-groq
com o comando abaixo:
!pip install llama-index-llms-groq -q
Após a instalação, configuramos a LLM com as importações from llama_index.core import Settings
e from llama_index.llms.groq import Groq
. Na linha abaixo, configuramos o Settings.llm = Groq()
. Nos parênteses definiremos modelo e chave, então passamos model='llama-70b-8192', api_key=key
. O Groq pode aceitar vários tipos de modelo de linguagem grande. Nesse caso, usaremos esse modelo, pois testamos anteriormente e deu certo.
from llama_index.core import Settings
from llama_index.llms.groq import Groq
Settings.llm = Groq(model='llama-70b-8192', api_key=key)
Após executar, estamos com tudo configurado, estamos prontos para começar a usar o Pandas query engine para consultas e criar a inteligência artificial. Nos encontramos no próximo vídeo para iniciar essa etapa.
Até lá!
O curso LlamaIndex: analisando dados com Pandas possui 188 minutos de vídeos, em um total de 46 atividades. Gostou? Conheça nossos outros cursos de IA para Dados em Inteligência Artificial, ou leia nossos artigos de Inteligência Artificial.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.