Como criar um Assistente de IA com ShinyChat R

Introdução

O Shiny R consolidou-se como a principal ferramenta para criar aplicações web interativas diretamente do R. Para elevar ainda mais o nível dessas aplicações, o pacote shinychat R surge como uma solução revolucionária, simplificando drasticamente a criação de interfaces de chat. Ao combiná-lo com o pacote ellmer para a comunicação com Modelos de Linguagem (LLMs) torna-se incrivelmente fácil desenvolver chatbots sofisticados para análise de dados, atendimento ao cliente ou tutoria inteligente.

(você também encontra o shinychat disponível para a linguagem Python, veja mais sobre aqui).

Para obter o código e o tutorial deste exercício faça parte do Clube AM e receba toda semana os códigos em R/Python, vídeos, tutoriais e suporte completo para dúvidas.

O Poder do shinychat R

O shinychat R foi projetado com um objetivo claro: tornar a criação de interfaces de chat em Shiny uma tarefa trivial. Em vez de construir manualmente os componentes de UI e gerenciar o estado da conversa com reactiveValues, o shinychat oferece uma abordagem de alto nível.

                                                                                       Shiny R LogoShinychat R Logo

Suas principais vantagens são:

  • Simplicidade Extrema: Com a função chat_ui(), você cria uma interface de chat completa e responsiva.

  • Gerenciamento de Streaming: A função chat_append() lida nativamente com respostas em modo streaming, exibindo o texto da IA conforme ele é gerado, o que proporciona uma experiência de usuário fluida e moderna.

  • Integração Perfeita: Funciona em harmonia com o ecossistema Shiny e pacotes de backend como o ellmer.

Tutorial Passo a Passo: Construindo seu Chatbot com shinychat R

Vamos criar um chatbot assistente para a Análise Macro, especializado em Data Science.

Primeiro, certifique-se de ter o R e o RStudio instalados. Em seguida, instale os pacotes necessários executando o seguinte comando no seu console R:

install.packages(c("shiny", "shinychat", "ellmer", "bslib", "dotenv"))

Para usar o Google Gemini, você precisará de uma chave de API.

  1. Obtenha sua chave de API no Google AI Studio.

  2. Para manter sua chave segura, crie um arquivo chamado .env na mesma pasta do seu projeto Shiny.

  3. Dentro do arquivo .env, adicione a seguinte linha, substituindo "SUA_CHAVE_AQUI" pela sua chave real: GOOGLE_API_KEY="SUA_CHAVE_AQUI"

  4. Reinicie sua sessão no Rstudio ou IDE de uso.

O pacote ellmer irá detectar e usar essa chave automaticamente.

Agora, vamos ao código. Crie um arquivo chamado app.R e cole o conteúdo abaixo. A seguir, explicaremos cada parte.

# Carrega as bibliotecas necessárias
library(shiny)
library(shinychat)
library(ellmer)

# --- Interface do Usuário (UI) ---
# Usamos bslib::page_fluid para um layout moderno e responsivo.
# A função chat_ui() do pacote shinychat R cria toda a interface de chat.
ui <- bslib::page_fluid(
  chat_ui("chat",
          messages = '? Olá! Eu sou o Assistente da Análise Macro. Qual a sua dúvida?')
)

# --- Lógica do Servidor (Server) ---
server <- function(input, output, session) {
  
  # 1. Inicializa a conexão com o modelo de IA
  # Usamos ellmer para configurar o chat com o Gemini.
  # O 'system_prompt' define a persona e o conhecimento do nosso chatbot.
  chat <- ellmer::chat_google_gemini(model = "gemini-1.5-flash", # Modelo rápido e eficiente
                                     system_prompt = "
                                     Você é um AI Assistant da Análise Macro, preparado para ajudar alunos com dúvidas sobre
                                     Data Science usando as linguagens R, Python e SQL
                                     em temas como: Modelagem e Previsão, Séries Temporais, Econometria, Machine Learning,
                                     Macroeconomia, Macroeconometria e Análise de Demonstrações Contábeis.
                                     "
  )
  
  # 2. Reage à entrada do usuário
  # observeEvent escuta quando o usuário envia uma nova mensagem (input$chat_user_input).
  observeEvent(input$chat_user_input, {
    
    # 3. Envia a mensagem para a IA e obtém a resposta em streaming
    # chat$stream_async() envia a pergunta do usuário e retorna um objeto de stream.
    stream <- chat$stream_async(input$chat_user_input)
    
    # 4. Adiciona a resposta em streaming à interface
    # chat_append() do shinychat R exibe a resposta na tela, token por token.
    chat_append("chat", stream)
  })
}

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

Entendendo o Código:

  • UI (Interface do Usuário): A mágica do shinychat R está aqui. A função chat_ui("chat", ...) cria sozinha a caixa de histórico de mensagens, o campo para o usuário digitar e o botão de envio. O argumento messages define a mensagem de boas-vindas inicial do bot.

  • Server (Lógica do Servidor):

    1. ellmer::chat_google_gemini(...): Preparamos nosso assistente de IA. O system_prompt é crucial, pois ele instrui o modelo sobre como ele deve se comportar e qual é sua área de especialização.

    2. observeEvent(input$chat_user_input, ...): Este é o gatilho. Toda vez que o usuário envia uma mensagem, o código dentro deste bloco é executado. O input$chat_user_input é um ID padrão criado pelo chat_ui.

    3. chat$stream_async(...): Enviamos a mensagem do usuário (input$chat_user_input) para o Gemini de forma assíncrona e solicitamos uma resposta em streaming.

    4. chat_append("chat", stream): Esta é a segunda função chave do shinychat R. Ela recebe o stream de resposta da IA e o anexa à interface de chat, criando aquele efeito de digitação em tempo real.

Com o arquivo app.R salvo, basta clicar no botão "Run App" no RStudio ou executar o seguinte comando no console: 

shiny::runApp("app.R")

Sua aplicação de chatbot será aberta no navegador, pronta para interagir!

Assistente de IA com Shinychat R

Conclusão

Como vimos, a combinação dos pacotes shinychat R e ellmer transforma a criação de chatbots avançados em R de uma tarefa complexa para um processo simples e elegante. O shinychat R abstrai toda a complexidade da interface do usuário, permitindo que você se concentre na lógica do seu assistente de IA. Esta abordagem abre um novo leque de possibilidades para a criação de ferramentas de dados interativas, tutores virtuais e assistentes inteligentes diretamente no ambiente R.

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 o uso de Python e IA.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Como planejar um pipeline de previsão macroeconômica: da coleta ao dashboard

Montar um pipeline de previsão macroeconômica não é apenas uma tarefa técnica — é um exercício de integração entre dados, modelos e automação. Neste post, apresento uma visão geral de como estruturar esse processo de ponta a ponta, da coleta de dados até a construção de um dashboard interativo, que exibe previsões automatizadas de inflação, câmbio, PIB e taxa Selic.

Coletando e integrando dados do BCB, IBGE e IPEA de forma automatizada

Quem trabalha com modelagem e previsão macroeconômica sabe o quanto é demorado reunir dados de diferentes fontes — Banco Central, IBGE, IPEA, FRED, IFI... Cada um com sua API, formato, frequência e estrutura. Esse gargalo de coleta e padronização consome tempo que poderia estar sendo usado na análise, nos modelos ou na comunicação dos resultados.

Foi exatamente por isso que criamos uma rotina de coleta automatizada, que busca, trata e organiza séries temporais econômicas diretamente das APIs oficiais, pronta para ser integrada a pipelines de previsão, dashboards ou agentes de IA econometristas.

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?

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.