Alura > Cursos de Inteligência Artificial > Cursos de IA para Dados > Conteúdos de IA para Dados > Primeiras aulas do curso LlamaIndex: analisando dados com Pandas

LlamaIndex: analisando dados com Pandas

Realizando as primeiras consultas - Apresentação

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.

IA como assistente de análise de dados

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.

O que vamos aprender?

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.

Apresentando a ferramenta

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.

  1. Qual é o número de registros no arquivo?
  2. Quais são os tipos de dados das colunas?
  3. Quais são as estatísticas descritivas das colunas numéricas?

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.

Pré-requisitos

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?

Realizando as primeiras consultas - Conhecendo os dados

Iniciaremos nosso projeto atuando como cientistas de dados para uma rede de lojas de varejo chamada Zoop.

Demanda

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.

Desafios enfrentados

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.

Solução

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.

Carregando os dados

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_comprafilialcidadetipo_clientegenerotipo_produtopreco_unitarioquantidadeimposto_5%totaldatahoraforma_pagamentoavaliacao
0750-67-8428ASanto AndréMembroFemininoSaúde e Beleza74.69726.1415548.97152024-01-0513:08:00Carteira Digital9.1
1226-31-3081CSão CaetanoNormalFemininoEletrônicos15.2853.820080.22002024-03-0810:29:00Dinheiro9.6
2631-41-3108ASanto AndréNormalMasculinoCasa46.33716.2155340.52552024-03-0313:23:00Cartão de Crédito7.4
3123-19-1176ASanto AndréMembroMasculinoSaúde e Beleza58.22823.2880489.04802024-01-2720:33:00Carteira Digital8.4
4373-73-7910ASanto AndréNormalMasculinoEsportes e Viagem86.31730.2085634.37852024-02-0810:37:00Carteira Digital5.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.

Verificando valores nulos

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.

Verificando dados duplicados

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.

Próximo passo

No próximo vídeo, entenderemos como configurar o LlamaIndex para criar nossa inteligência artificial. Nos vemos no próximo vídeo.

Realizando as primeiras consultas - Definindo a LLM e configurando a chave de API

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.

Escolhendo a ferramenta LlamaIndex

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.

Consultando a documentação

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.

Instalando o LlamaIndex e configurando o ambiente

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

Utilizando o Groq para chaves de API gratuitas

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.

Protegendo a chave de API no 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á!

Sobre o curso LlamaIndex: analisando dados com Pandas

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:

Aprenda IA para Dados acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas