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).
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.
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.
-
Obtenha sua chave de API no Google AI Studio.
-
Para manter sua chave segura, crie um arquivo chamado .env na mesma pasta do seu projeto Shiny.
-
Dentro do arquivo .env, adicione a seguinte linha, substituindo "SUA_CHAVE_AQUI" pela sua chave real:
GOOGLE_API_KEY="SUA_CHAVE_AQUI"
- 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):
-
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.
-
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.
-
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.
-
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!
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.