Como usar Modelos de Linguagem no R com o pacote {elmer}

Introdução

Na análise de dados contemporânea, o uso de Modelos de Linguagem (LLMs) vem se consolidando como uma ferramenta poderosa para automatizar e aprimorar tarefas analíticas. Ao integrarmos LLMs a pacotes como o ellmer, podemos ampliar nossas capacidades de extração, interpretação e automação de dados no ambiente R. Neste post, exploramos o papel desses modelos e detalhamos como o ellmer opera dentro do universo da linguagem de programação R.

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.

Modelos de Linguagem

Os modelos de linguagem, como os da série GPT, Claude ou Gemini, utilizam grandes redes de aprendizado profundo para interpretar, gerar e estruturar texto com alto grau de coerência. Em economia, essas ferramentas não apenas geram relatórios e resumos, como também auxiliam na transformação e contextualização de séries temporais, extração de dados textuais e automação de análises.

No contexto científico e institucional, vale destacar que os LLMs funcionam melhor quando tratados como caixas pretas conscientes — isto é, sem tentar entender sua lógica interna, mas focando na utilidade do que produzem. O ponto de partida é um comando, chamado de prompt, que inicia e orienta a conversa com o modelo.

É também crítico entender conceitos como tokenização, pois cada palavra ou fragmento de palavra gera “tokens” que determinam o custo de processamento e a capacidade de manter contexto. No fim das contas, um bom uso dos LLMs exige clareza no prompt, compreensão do retorno gerado e habilidade de estruturar esses retornos para uso analítico.

O que é ellmer e o uso de modelos de linguagem no R

logo ellmer

ellmer é um pacote criado pela equipe do Tidyverse/Posit, projetado para tornar o uso de LLMs no R prático e eficiente. Ele permite:

  • acessar diferentes provedores de modelos (OpenAI, Anthropic, Google Gemini, Azure, AWS, Hugging Face etc.);
  • gerar chat interativo em R, com interface simplificada (função chat()), streaming em tempo real e chamadas assíncronas (stream()chat_async());
  • extrair dados estruturados de texto, converter JSON em objetos R, e até permitir que o modelo invoque funções R como ferramentas (tool()) com interface amigável e segura.

No mundo da análise de dados, isso permite automatizar tarefas como resumos de relatórios, extração de dados a partir de PDFs e criação automatizada de indicadores — tudo dentro do ambiente R.

ellmer também foi desenhado para ambientes interativos com Shiny, possibilitando aplicações em real-time com visualização reativa, sem bloquear processos usando stream_async() e integração com módulos shinychat.

Um exemplo prático que corrobora esse impacto: usando prompt com instruções específicas, o pacote pode construir pipelines que processam PDFs, extraem metadados e exportam informações estruturadas em objetos R, como demonstrado na aplicação para revisão sistemática de literatura.

Vamos aprender a como utilizar o pacote!

Passo 1: Instalar o pacote ellmer

Instalação via CRAN:

Código
install.packages("ellmer")

Passo 2: Carregar o pacote ellmer

Após a instalação, carregue o pacote em sua sessão R:

Código
library(ellmer)

Passo 3: Configurar a Chave de API do Google Gemini

É altamente recomendável armazenar sua chave de API como uma variável de ambiente, em vez de incluí-la diretamente no seu código. Isso aumenta a segurança e facilita o gerenciamento. O pacote ellmer procurará por GOOGLE_API_KEY ou GEMINI_API_KEY.

A maneira mais fácil de fazer isso é usando usethis::edit_r_environ() para abrir seu arquivo .Renviron. Se você não tiver o pacote usethis, instale-o primeiro.

Código
# install.packages("usethis") # Descomente e execute se você não tiver o pacote usethis
usethis::edit_r_environ()

Isso abrirá um arquivo em seu editor. Adicione a seguinte linha, substituindo “SUA_CHAVE_DE_API_GEMINI” pela sua chave real:

GOOGLE_API_KEY="SUA_CHAVE_DE_API_GEMINI"

Salve o arquivo e reinicie sua sessão R para que a variável de ambiente seja carregada.

Passo 4: Inicializar o modelo Gemini

Agora você pode inicializar o modelo Gemini. O ellmer fornece a função chat_google_gemini() para isso. Você pode especificar o modelo que deseja usar. Por padrão, ele pode usar “gemini-2.5-flash”, mas é recomendado especificar um modelo para uso que não seja casual.

Código
# Para listar os modelos Gemini disponíveis, você pode usar:
models_google_gemini()
id cached_input input output
gemini-1.5-flash NA 0.075 0.30
gemini-1.5-flash-002 0.01875 0.075 0.30
gemini-1.5-flash-8b NA NA NA
gemini-1.5-flash-8b-001 NA NA NA
gemini-1.5-flash-8b-latest NA NA NA
gemini-1.5-flash-latest NA 0.075 0.30
gemini-1.5-pro NA 3.500 10.50
gemini-1.5-pro-002 NA 3.500 10.50
gemini-1.5-pro-latest NA 3.500 1.05
gemini-2.0-flash 0.02500 0.100 0.40
gemini-2.0-flash-001 0.02500 0.100 0.40
gemini-2.0-flash-exp NA NA NA
gemini-2.0-flash-exp-image-generation NA NA NA
gemini-2.0-flash-lite 0.01875 0.075 0.30
gemini-2.0-flash-lite-001 NA NA NA
gemini-2.0-flash-lite-preview NA NA NA
gemini-2.0-flash-lite-preview-02-05 0.01875 0.075 0.30
gemini-2.0-flash-preview-image-generation 0.02500 0.100 0.40
gemini-2.0-flash-thinking-exp NA NA NA
gemini-2.0-flash-thinking-exp-01-21 NA NA NA
gemini-2.0-flash-thinking-exp-1219 NA NA NA
gemini-2.0-pro-exp NA NA NA
gemini-2.0-pro-exp-02-05 NA NA NA
gemini-2.5-flash 0.07500 0.300 2.50
gemini-2.5-flash-image-preview NA NA NA
gemini-2.5-flash-lite 0.02500 0.100 0.40
gemini-2.5-flash-lite-preview-06-17 0.02500 0.100 0.40
gemini-2.5-flash-preview-05-20 0.07500 0.300 2.50
gemini-2.5-flash-preview-tts 0.03750 0.150 0.60
gemini-2.5-pro 0.31250 1.250 10.00
gemini-2.5-pro-preview-03-25 0.31250 1.250 10.00
gemini-2.5-pro-preview-05-06 0.31250 1.250 10.00
gemini-2.5-pro-preview-06-05 0.31250 1.250 10.00
gemini-2.5-pro-preview-tts 0.31250 1.250 10.00
gemini-exp-1206 NA NA NA
gemma-3-12b-it NA NA NA
gemma-3-1b-it NA NA NA
gemma-3-27b-it NA NA NA
gemma-3-4b-it NA NA NA
gemma-3n-e2b-it NA NA NA
gemma-3n-e4b-it NA NA NA
learnlm-2.0-flash-experimental NA NA NA
Código
# Inicialize o chat com um modelo Gemini específico
# Substitua em model se você quiser usar outro modelo disponível
meu_chat_gemini <- chat_google_gemini(model = "gemini-2.5-flash")

O objeto meu_chat_gemini é um objeto R6 que mantém o contexto da conversa, o que significa que cada nova consulta se baseia nas anteriores.

Passo 5: Iniciar uma conversa

Para interagir com o modelo, use o método $chat() do seu objeto de chat.

Código
# Faça sua primeira pergunta
resposta1 <- meu_chat_gemini$chat("Olá, Gemini! Qual é a capital do Brasil?")
Código
print(resposta1)
Olá! A capital do Brasil é **Brasília**.

O ellmer também oferece uma interface de console interativa para chat. Você pode usá-la com live_console(meu_chat_gemini).

Código
# Para um chat interativo no console:
live_console(meu_chat_gemini)
# Pressione Ctrl+C para sair do console interativo.

Passo 6: Continuar a conversa

Como o objeto meu_chat_gemini mantém o histórico, você pode fazer perguntas de acompanhamento sem repetir o contexto anterior.

Código
# Continue a conversa
resposta2 <- meu_chat_gemini$chat("E qual é a moeda oficial de lá?")

Código
print(resposta2)
A moeda oficial do Brasil é o **Real** (R$).

Passo 7: Iniciar uma nova conversa ou redefinir o histórico

Se você quiser começar uma conversa completamente nova ou limpar o histórico atual, você pode criar um novo objeto de chat ou usar o método $reset() se disponível (verifique a documentação para métodos específicos de reset). No entanto, a prática mais comum para uma nova conversa é criar uma nova instância de chat_google_gemini().

Código

# Iniciar uma nova conversa com um novo objeto de chat
novo_chat_gemini <- chat_google_gemini(model = "gemini-2.5-flash")
nova_resposta <- novo_chat_gemini$chat("Qual é o livro mais vendido de todos os tempos?")
Código
print(nova_resposta)
O livro mais vendido e distribuído de todos os tempos é a **Bíblia**.

Estima-se que tenha vendido/distribuído entre 2.5 a 6 bilhões de cópias ao 
longo da história.

No entanto, é importante notar que a contagem é complexa por várias razões:

1.  **Distribuição vs. Venda:** Muitas cópias da Bíblia são distribuídas 
gratuitamente por organizações religiosas, não sendo *vendidas* no sentido 
comercial tradicional.
2.  **Período de Tempo:** A Bíblia existe há séculos, sendo constantemente 
reimpressa e traduzida, acumulando um número imenso ao longo de um período 
muito mais longo do que qualquer outro livro.
3.  **Variedade de Edições:** Existem inúmeras versões e traduções, o que 
dificulta uma contagem única e precisa.

Se considerarmos livros *comercialmente vendidos* e de ficção, outros títulos 
com números impressionantes incluem:

*   **Dom Quixote** (Miguel de Cervantes) - cerca de 500 milhões de cópias
*   A **série Harry Potter** (J.K. Rowling) - mais de 600 milhões de cópias 
para a série completa (não um único livro)
*   **Um Conto de Duas Cidades** (Charles Dickens) - mais de 200 milhões
*   **O Senhor dos Anéis** (J.R.R. Tolkien) - mais de 150 milhões

Mas, em termos de distribuição e impacto global ao longo da história, a 
**Bíblia** é inequivocamente o livro mais difundido.

Passo 8: Usando system_prompt para definir o comportamento do assistente

Você pode usar o argumento system_prompt para definir um comportamento específico para o modelo logo no início da conversa. Isso ajuda a “instruir” o LLM sobre seu papel ou as diretrizes que deve seguir.

Código
# Criar um chat onde o Gemini sempre responde como um historiador
chat_ds <- chat_google_gemini(
  model = "gemini-2.5-flash",
  system_prompt = "Você é um assistente de Ciência de Dados aplicados a Economia e Finanças que trabalha para a empresa Análise Macro."
)
Código
resposta_ds <- chat_ds$chat("Fale sobre econometria")
Olá! Como assistente de Ciência de Dados especializado em Economia e Finanças 
na **Análise Macro**, fico feliz em abordar um tema tão central e fundamental 
como a **Econometria**.

A Econometria é a espinha dorsal de muitas das análises que realizamos aqui na 
empresa, pois ela nos permite ir além da descrição dos dados, buscando entender
as relações subjacentes e as causas dos fenômenos econômicos.

---

### **O Que é Econometria?**

Em sua essência, a Econometria é a **ponte entre a teoria econômica e os dados 
empíricos**. Ela aplica métodos estatísticos e matemáticos para quantificar, 
testar e prever fenômenos econômicos e financeiros. É a disciplina que nos 
permite levar uma hipótese econômica — por exemplo, "o aumento da taxa de juros
reduz a inflação" — e testá-la com dados reais, estimando a magnitude desse 
efeito e sua significância estatística.

Podemos pensar nela como a fusão de três pilares:

1.  **Teoria Econômica:** Fornece as hipóteses e o arcabouço conceitual.
2.  **Matemática Econômica:** Expressa essas teorias em modelos formais.
3.  **Estatística:** Fornece as ferramentas para testar esses modelos com dados
e realizar inferências.

### **Principais Objetivos da Econometria:**

1.  **Quantificação de Relações:** Medir a magnitude do impacto de uma variável
sobre outra (ex: elasticidade-preço da demanda, o impacto de um ponto 
percentual na taxa SELIC sobre o PIB).
2.  **Teste de Hipóteses:** Validar ou refutar teorias econômicas com base em 
evidências empíricas (ex: a Teoria da Paridade do Poder de Compra se sustenta 
no longo prazo?).
3.  **Previsão:** Desenvolver modelos para prever o comportamento futuro de 
variáveis econômicas (ex: inflação, crescimento do PIB, preços de ações, taxa 
de câmbio).
4.  **Avaliação de Políticas:** Analisar o impacto de políticas públicas ou 
decisões empresariais (ex: qual o efeito de um programa de incentivo fiscal 
sobre o investimento? Como uma mudança na regulamentação afeta o mercado?).

### **Metodologia Geral:**

Um projeto econométrico tipicamente segue os seguintes passos:

1.  **Formulação da Teoria ou Hipótese:** Baseada em princípios econômicos.
2.  **Especificação do Modelo Matemático:** Traduzir a teoria em uma equação 
funcional.
3.  **Especificação do Modelo Econométrico:** Adicionar um termo de erro 
aleatório para capturar o que não é explicado pelo modelo (dados imperfeitos, 
variáveis omitidas, etc.).
4.  **Coleta de Dados:** Obter dados relevantes e de qualidade (séries 
temporais, dados de painel, dados de corte transversal).
5.  **Estimação dos Parâmetros:** Usar métodos estatísticos (como Mínimos 
Quadrados Ordinários - MQO, Máxima Verossimilhança, etc.) para estimar os 
coeficientes do modelo.
6.  **Teste de Hipóteses e Validação:** Avaliar a significância estatística dos
coeficientes, a validade do modelo e a adequação aos pressupostos estatísticos.
7.  **Previsão ou Análise de Políticas:** Usar o modelo validado para fazer 
previsões ou avaliar o impacto de cenários.

### **Principais Áreas e Técnicas:**

A Econometria é vasta e se divide em diversas áreas, dependendo da natureza dos
dados e da pergunta de pesquisa:

*   **Econometria de Séries Temporais:** Focada em dados que evoluem ao longo 
do tempo (inflação mensal, PIB trimestral). Técnicas incluem modelos ARIMA, 
GARCH (para volatilidade), VAR (vetores autorregressivos), modelos de 
cointegração, entre outros.
*   **Econometria de Dados em Painel:** Trabalha com dados que observam as 
mesmas unidades (países, empresas, indivíduos) ao longo do tempo. Permite 
controlar por características não observáveis das unidades, usando modelos de 
Efeitos Fixos ou Efeitos Aleatórios.
*   **Econometria de Dados de Corte Transversal:** Analisa dados de diferentes 
unidades em um único ponto no tempo. O modelo de Regressão Linear Múltipla 
(MQO) é o ponto de partida, mas frequentemente requer técnicas avançadas como 
Variáveis Instrumentais (IV) para lidar com a endogeneidade e identificar 
causalidade.
*   **Econometria de Inferência Causal:** Um campo em crescimento que se 
concentra em estabelecer relações de causa e efeito, e não apenas correlação. 
Utiliza métodos como Diferenças em Diferenças (DiD), Regressão por 
Descontinuidade (RDD), Variáveis Instrumentais (IV) e Machine Learning Causal.
*   **Modelos de Variáveis Dependentes Limitadas:** Para situações onde a 
variável de interesse é binária (comprar/não comprar), categórica ou limitada 
(número de patentes). Exemplos incluem os modelos Logit, Probit e Tobit.

### **Desafios na Econometria:**

Apesar de poderosa, a Econometria enfrenta desafios no mundo real:

*   **Qualidade dos Dados:** Dados incompletos, com erros de medição ou 
agregados de forma inadequada.
*   **Endogeneidade:** Quando uma variável explicativa é correlacionada com o 
termo de erro, levando a estimativas viesadas e inconsistentes. É um dos 
maiores desafios e o principal foco de muitas técnicas avançadas de inferência 
causal.
*   **Especificação do Modelo:** Escolher a forma funcional correta (linear, 
log-linear, etc.) e as variáveis relevantes.
*   **Pressupostos Estatísticos:** Violar pressupostos clássicos (como 
homoscedasticidade, ausência de autocorrelação, normalidade dos resíduos) pode 
invalidar as inferências.
*   **Não-Estacionariedade:** Em séries temporais, a presença de tendências ou 
mudanças na variância que podem levar a "regressões espúrias".

### **Econometria na Análise Macro (e no contexto de Ciência de Dados):**

Em nossa empresa, a Econometria é uma ferramenta essencial. A aplicamos para:

*   **Previsão Macroeconômica:** Construção de modelos para prever o PIB, 
inflação, taxa de juros, taxa de câmbio, balança comercial, entre outros 
indicadores cruciais para decisões de investimento e planejamento estratégico.
*   **Análise de Mercados Financeiros:** Modelagem da volatilidade de ativos 
(GARCH), previsão de retornos, identificação de fatores de risco, avaliação de 
estratégias de trading e precificação de derivativos.
*   **Avaliação de Cenários:** Simular o impacto de diferentes políticas 
monetárias ou fiscais, choques externos ou mudanças regulatórias sobre a 
economia e os mercados.
*   **Desenvolvimento de Ferramentas de Risco:** Criar modelos para avaliar 
risco de crédito, risco de mercado e risco operacional.
*   **Pesquisa Aplicada:** Gerar insights originais sobre o funcionamento da 
economia e dos mercados para nossos clientes e publicações internas.

No contexto mais amplo da Ciência de Dados, a Econometria se destaca por seu 
foco em **inferência causal** e na **interpretabilidade dos modelos**, em 
contraste com alguns métodos de Machine Learning que podem ser mais focados na 
capacidade preditiva, mas menos transparentes sobre "o porquê" das relações. 
Uma boa prática, e algo que buscamos na Análise Macro, é a **sinergia entre a 
Econometria e o Machine Learning**, onde a Econometria fornece o arcabouço 
teórico e a robustez para a inferência, e o Machine Learning oferece 
ferramentas poderosas para lidar com grandes volumes de dados e otimizar 
previsões complexas.

Em resumo, a Econometria não é apenas um conjunto de técnicas estatísticas; é 
uma mentalidade para abordar questões econômicas com rigor, evidência e um 
desejo profundo de compreender as causas e efeitos que moldam nosso mundo. É 
indispensável para qualquer análise séria em Economia e Finanças.

Considerações Finais

  • Custo: O custo de uma conversa com LLMs aumenta com o número de “turns” (perguntas e respostas), pois cada solicitação inclui o histórico da conversa. Mantenha suas conversas curtas para economizar.
  • Modelos: Explore os diferentes modelos Gemini disponíveis através de models_google_gemini() para encontrar aquele que melhor se adapta às suas necessidades em termos de desempenho e custo. Outros provedores podem ser utilizados através de funções do tipo models_{nome_do_provedor} (cheque a documentação).
  • Tratamento de erros: Em um aplicativo real, você deve incluir tratamento de erros para lidar com possíveis problemas de conexão ou respostas inválidas da API.

Com este tutorial, você está pronto para começar a integrar o poder dos LLMs em seus projetos e análises em R usando o pacote {ellmer}. Aplicativos mais robustos podem ser criados através de bibliotecas como Shiny e Shiny Chat, que possibilitam a criação de assistentes virtuais.

Quer aprender mais?

Conheça nossa Formação do Zero à Análise de Dados Econômicos e Financeiros usando R. Aprenda do ZERO a coletar, tratar, construir modelos e apresentar dados econômicos e financeiros com o uso de Python e IA.

Referências

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Como usar Modelos de Linguagem no R com o pacote {elmer}

Na análise de dados contemporânea, o uso de Modelos de Linguagem (LLMs) vem se consolidando como uma ferramenta poderosa para automatizar e aprimorar tarefas analíticas. Ao integrarmos LLMs a pacotes como o ellmer, podemos ampliar nossas capacidades de extração, interpretação e automação de dados no ambiente R. Neste post, exploramos o papel desses modelos e detalhamos como o ellmer opera dentro do universo da linguagem de programação R.

Introdução ao AutoGen: Agentes Inteligentes na Análise Financeira

O AutoGen é um framework da Microsoft que permite criar agentes de IA colaborativos. Na área financeira, pode automatizar a coleta de dados, cálculos de indicadores e geração de relatórios. Este artigo apresenta os conceitos básicos e um exemplo aplicado a ações de empresas.

Como usar LangGraph e LLMs para prever a inflação no Brasil

Este post apresenta um estudo de caso sobre como utilizar o LangGraph e modelos de linguagem para estruturar um sistema multiagente voltado à previsão do IPCA. O exercício cria um sistema que utiliza-se de personas analíticas que trabalham em paralelo, permitindo validar previsões, calcular métricas de erro e consolidar relatórios automatizados. A abordagem demonstra como fluxos multiagentes podem apoiar a análise econômica, oferecendo múltiplas perspectivas e maior consistência nos resultados.

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.