Criando operações SQL com IA Generativa no R com querychat

No universo da análise de dados, a velocidade para obter respostas é um diferencial competitivo. Frequentemente, uma simples pergunta de negócio — “Qual foi nosso produto mais vendido no último trimestre na região Nordeste?” — inicia um processo que envolve abrir o RStudio, escrever código dplyr ou SQL, executar e, finalmente, obter a resposta. E se pudéssemos simplesmente perguntar isso aos nossos dados em português, diretamente no nosso dashboard Shiny?

É exatamente essa a proposta do querychat, um inovador pacote R desenvolvido pela Posit que transforma a maneira como interagimos com nossas fontes de dados.

Neste post, vamos mergulhar no que é o querychat para R, como ele funciona e, o mais importante, como você pode usá-lo com modelos de IA como o Google Gemini para acelerar suas análises de dados.

O que é o querychat?

querychat é um componente para Shiny que atua como uma ponte inteligente entre a linguagem humana e a linguagem de consulta de dados. Utilizando o poder dos Grandes Modelos de Linguagem (LLMs), como o Gemini do Google, através do pacote ellmer, ele traduz suas perguntas em consultas SQL, busca a resposta nos seus dados e a retorna de forma clara e direta dentro do seu aplicativo Shiny.

Pense nele como um assistente de dados que é fluente em SQL. Você faz a pergunta, ele escreve e executa a consulta para você em segundos.

Os principais benefícios são:

  • Velocidade: Obtenha respostas instantâneas sem escrever uma única linha de código de consulta.
  • Acessibilidade: Permite que usuários com menos conhecimento técnico (analistas de negócios, gerentes de produto) explorem os dados de forma autônoma diretamente na aplicação Shiny.
  • Transparência: O querychat sempre mostra a consulta SQL que gerou para obter a resposta, permitindo validação, aprendizado e depuração.
  • Segurança: O LLM nunca vê os dados brutos, apenas o esquema (nomes das colunas, tipos, etc.) e as descrições que você fornece.

Como o querychat Funciona?

A magia do querychat acontece em um processo bem definido nos bastidores do seu app Shiny:

  1. Configuração (querychat_init): Você inicia a configuração do chat apontando para sua fonte de dados (um data frame em R). Aqui você também define o LLM a ser usado, uma mensagem de boas-vindas e descrições adicionais sobre seus dados.
  2. Interface do Usuário (querychat_sidebar): Você adiciona a interface do chat ao seu aplicativo Shiny, geralmente em uma barra lateral.
  3. Lógica do Servidor (querychat_server): No servidor do Shiny, você inicializa o querychat, que gerencia a conversa.
  4. Pergunta e Tradução Inteligente: Quando o usuário digita uma pergunta, o querychat a envia para o LLM (ex: Gemini) junto com o esquema dos dados. O LLM, então, gera uma consulta SQL para responder à pergunta.
  5. Execução e Resposta: O querychat executa essa consulta SQL em um motor DuckDB interno contra seus dados. O resultado é um data frame reativo (querychat$df()) que você pode usar para exibir em tabelas, gráficos ou qualquer outro output do Shiny.

Tutorial Prático: Conversando com o dataset mtcars

Vamos colocar a mão na massa. Usaremos o clássico dataset mtcars para nosso exemplo.

1° Passo: Configurando o Ambiente

Primeiro, você precisa instalar os pacotes necessários. Você também precisará de uma chave de API do Google AI Studio.

# Instale o pak se ainda não tiver
# install.packages("pak")

pak::pak("posit-dev/querychat/pkg-r")
install.packages(c("shiny", "bslib", "DT", "ellmer", "purrr"))

É uma boa prática configurar sua chave de API como uma variável de ambiente. Você pode fazer isso adicionando a linha GOOGLE_API_KEY="sua_chave_aqui" a um arquivo .Renviron no seu diretório de trabalho.

2° Passo: Preparando o App Shiny

Vamos criar um aplicativo Shiny completo em um único arquivo app.R.

library(shiny)
library(bslib)
library(querychat)
library(ellmer)
library(purrr)
library(DT)

# --- 1. Configuração do querychat ---
# Aqui, especificamos o dataset (mtcars) e o modelo LLM.
# Usamos purrr::partial para pré-configurar a função de chat do ellmer com o modelo Gemini.
querychat_config <- querychat_init(
  mtcars,
  create_chat_func = partial(
    ellmer::chat_google_gemini, 
    model = "gemini-2.0-flash" # Usando o Gemini 2.0 flash
  )
)

# --- 2. Interface do Usuário (UI) ---
# Usamos bslib::page_sidebar para um layout moderno.
# A função querychat_sidebar("chat") cria toda a interface de chat.
ui <- page_sidebar(
  title = "Análise Interativa do `mtcars`",
  sidebar = querychat_sidebar("chat"),
  DTOutput("tabela_dados")
)

# --- 3. Lógica do Servidor (Server) ---
server <- function(input, output, session) {
  
  # Inicializa o servidor do querychat com a configuração definida acima.
  querychat <- querychat_server("chat", querychat_config)
  
  # Renderiza a tabela de dados.
  # A mágica acontece aqui: querychat$df() é um data frame reativo!
  # Ele se atualiza automaticamente sempre que o usuário faz uma nova consulta.
  output$tabela_dados <- renderDT({
    datatable(querychat$df())
  })
}

# --- 4. Executa a Aplicação ---
shinyApp(ui, server)

3° Passo: Rodando o App e Fazendo Perguntas

Salve o código como app.R e clique em “Run App” no RStudio. A aplicação será aberta com uma interface de chat na barra lateral e a tabela mtcars completa à direita.

Agora, experimente fazer algumas perguntas em português no chat:

  • “Qual o mpg médio de carros com 6 cilindros?”
  • “Mostre apenas os carros com transmissão manual” (dica: a coluna am é 1 para manual)
  • “Ordene os carros do mais pesado para o mais leve”
  • “Quais carros têm mais de 150 de hp e menos de 3000 de peso (wt)?”

Para cada pergunta, você verá a tabela de dados se atualizar instantaneamente com o resultado. O querychat também mostrará a consulta SQL que ele gerou, o que é ótimo para aprendizado e validação.

Adicionando Contexto para Melhores Respostas

Para obter resultados ainda melhores, você pode fornecer ao querychat uma descrição dos seus dados, assim como faria para um colega humano. Crie um arquivo chamado data_description.md:

A data foi extraída da revista Motor Trend US de 1974.
- mpg: Milhas por Galão (consumo)
- cyl: Número de cilindros
- hp: Cavalos de potência (gross horsepower)
- wt: Peso (em 1000 lbs)
- am: Transmissão (0 = automática, 1 = manual)

E então, atualize sua configuração no app.R:

querychat_config <- querychat_init(
  mtcars,
  data_description = readLines("data_description.md"), # Adicionando a descrição
  create_chat_func = partial(
    ellmer::chat_google_gemini, 
    model = "gemini-2.-flash"
  )
)

Com essa descrição, o LLM entenderá melhor o significado de cada coluna, permitindo que você faça perguntas mais naturais como “qual o consumo médio dos carros?”.

Conclusão

querychat para R representa um passo significativo em direção a uma análise de dados mais intuitiva e conversacional dentro do ecossistema Shiny. Ao reduzir a barreira entre a pergunta e a resposta, ele capacita equipes a extrair valor de seus dados com uma agilidade sem precedentes, diretamente em dashboards interativos. A transparência de fornecer o código SQL gerado garante que o controle e a validação permaneçam nas mãos do analista.

É uma ferramenta que vale a pena experimentar em seu próximo projeto Shiny. A capacidade de permitir que seus usuários “conversem” com os dados pode ser o catalisador para insights que, de outra forma, permaneceriam ocultos.


Quer aprender mais?

Conheça nossa Formação do Zero à Análise de Dados Econômicos e Financeiros usando Python e Inteligência Artificial. Aprenda do ZERO a coletar, tratar, construir modelos e apresentar dados econômicos e financeiros com as melhores ferramentas do mercado.

Referências

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Criando operações SQL com IA Generativa no R com querychat

No universo da análise de dados, a velocidade para obter respostas é um diferencial competitivo. Frequentemente, uma simples pergunta de negócio — “Qual foi nosso produto mais vendido no último trimestre na região Nordeste?” — inicia um processo que envolve abrir o RStudio, escrever código dplyr ou SQL, executar e, finalmente, obter a resposta. E se pudéssemos simplesmente perguntar isso aos nossos dados em português, diretamente no nosso dashboard Shiny?

Dashboard Financeiro com IA e Shiny Python: Análise de Dados Abertos da CVM

Este artigo apresenta um tutorial completo sobre como construir uma ferramenta de análise financeira de ponta. Utilizando Shiny for Python, demonstramos a automação da coleta de dados das Demonstrações Financeiras Padronizadas (DFP) da CVM e o tratamento dessas informações com Pandas. O ponto alto do projeto é a integração da IA Generativa do Google Gemini, que atua como um assistente de análise, interpretando os dados filtrados pelo usuário e fornecendo insights contábeis e financeiros em tempo real. O resultado é um dashboard dinâmico que democratiza a análise de dados complexos e acelera a tomada de decisão.

Econometria, ML ou IA para previsão da PMS?

Prever a Pesquisa Mensal de Serviços (PMS/IBGE) é um desafio por natureza: trata-se de uma série mensal, sujeita a volatilidade e choques que vão de fatores sazonais a mudanças estruturais no setor. Para enfrentar esse problema, realizamos um exercício de comparação entre três abordagens de modelagem: econometria tradicional (ARIMA), machine learning (XGBoost) e inteligência artificial (TimeGPT).

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.