library(hellmer)
<- chat_batch(chat_gemini, system_prompt = "Reply concisely in Spanish")
chat
<- list(
prompts "What is factorial 10?",
"Name three Metallica Song",
"Count to 3.",
"Say hello.",
"What is the Capital of Ghana?"
)
<- chat$batch(prompts)
result $texts() result
2 Paquetes de R
Esta sección incluye paquetes de R que se conectan con APIs de LLM o proporcionan ayudantes, chats o complementos relevantes.
Los paquetes están resumidos aquí sin ningún orden en particular, pero los junté en categorías generales:
2.1 Interfaces generales
2.1.1 chatgpt
El paquete chatgpt nos permite interactuar con modelos de OpenAI para obtener ayuda mientras programamos. El paquete fue desarrollado por Juan Cruz Rodriguez, entonces seguramente es robusto y bien diseñado, pues he trabajado con Juan en el pasado en mejoras para annotater. Este paquete ha estado disponible por un buen tiempo ya y de hecho antecede a la mayoría de las herramientas LLM existentes para R, lo que demuestra la visión y las ideas novedosas de Juan.
Después de configurar una clave de API, podemos trabajar con addins de RStudio pre-programados para hacer cosas útiles como optimizar, comentar, explicar, seleccionar o probar código (entre otras). Funciona con selecciones o archivos completos y el modelo predeterminado es gpt-4o-mini.
2.1.2 groqR
groqR por Gabriel Kaiser es una interfaz de R para modelos proporcionados por GroqCloud. Existe una opción de cuenta gratuita disponible en groQ que nos permite generar una clave de API. El paquete tiene una aplicación de Shiny para configurar los parámetros relevantes y la clave de API. Me gustó que hay muchos modelos nuevos e interesantes para elegir, y las respuestas del LLM son suuuuper rápidas.
groqR llegó a mi atención gracias a su propio desarrollador, entonces le pedí una breve descripción para esta guía. En palabras de Gabriel (traducidas del inglés):
“groqR es tu compañero de programación en R impulsado por IA, 10 veces más rápido que los LLM convencionales, con la mayoría de los modelos disponibles de forma gratuita. Ejecuta funciones en selecciones de texto: simplemente llama a la función
rewriter()
después de copiar texto para obtener resultados directamente en tu Consola R y portapapeles. Al combinar la velocidad de Groq con el acceso basado en atajos a las funciones degroqR
, los usuarios logran el entorno de codificación más rápido y eficiente en el ecosistema R. Impulsado por el modelo líder actual Qwen QwQ 32B, GroqR garantiza un rendimiento de vanguardia”
2.1.3 gptstudio
gptstudio de Michel Nivard, James Wade y Samuel Calderon es otra buena opción para acceder a LLMs localmente o desde varios proveedores (OpenAI, HuggingFace, Google, Anthropic, Perplexity, Azure y Cohere) directamente dentro de RStudio.
gptstudio funciona principalmente a través de una aplicación Shiny que se ejecuta en el panel de visualización y proporciona una ventana de chat y opciones para editar código en el editor. Tuve algunos problemas para hacer funcionar la aplicación en Linux, pero los desarrolladores parecen estar al pendiente.
Me gustaron las advertencias que incluyen los autores en el README sobre la privacidad, seguridad y en general sobre no compartir datos sensibles con los proveedores de modelos.
2.1.4 llmR
llmr de Angelo D’Ambrosio proporciona una API unificada para interactuar con varios LLMs y proveedores a través de funciones con gramática y sintaxis consistentes. Permite cambiar fácilmente entre modelos.
- Un paquete similar llamado LLMR apareció recientemente en CRAN, pero no pude encontrar mucha información al respecto.
2.1.5 tidychatmodels
Una interfaz amigable con el estilo “pipe” para muchos proveedores de chatbots. Desarrollado por Albert Rapp, tidychatmodels sigue la naturaleza modular de tidymodels y usa httr2 para comunicarse con diferentes modelos. Buena documentación, ejemplos y un video tutorial claro en YouTube.
2.1.6 tidyllm
tidyllm de Eduard Brüll proporciona acceso amigable con el estilo “pipe” a múltiples APIs de LLM de una manera legible y amigable. Podemos pasar imágenes, documentos, videos y figuras que están el panel de gráficos a las funciones del paquete, y el paquete tiene una documentación muy completa. Se ve similar a ellmer, y tiene potencial para trabajo interactivo y para procesamiento por lotes.
2.1.7 gemini.R
El paquete gemini.R de Jinhwan Kim conecta R con el modelo Gemini de Google a través de la API de Gemini. Con una clave API válida, la función gemini()
admite indicaciones de texto, y la función gemini_image()
puede trabajar con imágenes.
El paquete también tiene un addin de RStudio para crear documentación en Roxygen, y lo probé hace poco con el modelo Gemini Flash 2 para extraer información de un documento escaneado y funcionó bien.
2.1.8 PerplexR
PerplexR de Gabriel Kaiser proporciona una interfaz al estilo de groqR pero para los modelos sonar de Perplexity. Hace falta tener un plan de pago para generar la clave de API necesaria, así que todavía no lo he probado. El paquete funciona con un addin de RStudio y, al igual que groqR, incluye funciones útiles para reescribir código o crear pruebas unitarias.
También le pedí a Gabriel un texto breve sobre el paquete (traducido del inglés):
“El objetivo de perplexR es ofrecer a los usuarios de R una interfaz intuitiva para aprovechar las capacidades de la API de Perplexity con suscripción Profesional. Al utilizar las funciones del paquete, los usuarios pueden mejorar su productividad en programación al incorporar Modelos de Lenguaje de Gran Escala. Además, perplexR incluye addins de RStudio, lo que permite una integración interactiva y eficaz con Perplexity.”
2.2 Modelos locales: herramientas y ayudantes basados en Ollama
2.2.1 ollamar
Desarrollado por Hause Lin y Tawab Safi, ollamar integra R con Ollama, para ejecutar modelos de lenguaje localmente.
Con ollamar podemos cargar diferentes modelos, interactuar con objetos que almacenan historias de chat y manejar los resultados como data frames, listas o vectores.
Funciona bien con httr2, lo que es un gran ventaja.
2.2.2 rollama
rollama, por Johannes Gruber y Maximilian Weber, sirve para comunicarnos con la API de Ollama. Una vez que cargamos un modelo, podemos trabajar localmente con varios LLMs y realizar tareas como anotación y tareas de embedding de texto.
Las funciones R utilizadas para interactuar con Ollama incluyen un argumento útil para especificar el formato de la respuesta (por ejemplo, si queremos texto plano, listas, data frames, httr2, etc.). El paquete tiene buena documentación y guías útiles para diferentes usos.
2.3 Ayuda con pruebas unitarias
2.3.1 ensure
ensure es otro paquete desarrollado por Simon Couch que nos ayuda a escribir código para implementar pruebas unitarias utilizando el paquete testthat. Funciona a través de un addin de RStudio y la documentación menciona que el modelo está ‘enterado’ de la sintaxis de testthat y de la guía de estilo “tidy style guide” para formatear código. Lo pienso probar para avanzar con uno de mis paquetes más recientes que aún tienen una cobertura de pruebas muy pobre.
groqR y PerplexR (ver arriba) tienen funciones específicas para crear pruebas unitarias.
2.4 mlverse
2.4.1 mall
mall es parte del ecosistema de paquetes de ciencia de datos y Aprendizaje Automático de código abierto mlverse. En lugar de un enfoque basado en chats, mall aplica LLMs fila por fila en las columnas de un data frame. Incluye métodos para integrados para traducir, resumir, extraer y analizar el sentimiento de cadenas de texto.
mall utiliza Ollama y se implementa tanto en R como en Python. Es probable que lo utilice para analizar los comentarios que recopilé sobre paquetes cargados, lo que presenté en mi charla en posit::conf(2024). ### lang
lang también forma parte del ‘mlverse’. lang usa modelos locales para traducir la documentación de cualquier paquete de R a otro idioma para consultarlo en el panel de ayuda de R base, Rstudio, o Positron. Me preocupa un poco la traducción automática de términos específicos en programación y estadística, pero seguramente igual le va ayudar a muchas personas poder revisar la ayuda traducida.
Lo que más me gustó del paquete es que también ayuda a generar infraestructura para desarrollar paquetes con documentación multilenguaje.
2.4.2 chattr
chattr también es parte del mlverse. El paquete es un interfaz para modelos locales, para CoPilot, o los modelos de Databricks. El paquete tiene varias opciones para interactuar con modelos dentro de RStudio (y puede tomar de contexto los objetos del entorno y archivos en el directorio de trabajo), incluyendo una aplicación Shiny bastante intuitiva.
2.5 ellmer y compañia
2.5.1 ellmer
ellmer antes se llamaba elmer pero le cambiaron el nombre a finales de 2024 para evitar conflictos de nombre con el paquete ELMER que está en bioconductor.
ellmer es un nuevo paquete vinculado al tidyverse y desarrollado por Hadley Wickham y Joe Cheng. El paquete nos ayuda a interactuar en R con modelos locales y con prácticamente todos los proveedores. Podemos interactuar interactivamente a través de un chat en nuestra consola de R o programáticamente al incorporar objetos y métodos de ellmer en nuestras funciones. Las interacciones en ellmer quedan como objetos de chat de clase R6 que se acuerdan del contexto.
ellmer promete bastante. Hay mucha gente contribuyendo, se está incorporando como base para otros paquetes, y cada que reviso tiene nuevas funcionalidades y mejor documentación.
2.5.2 hellmer
Para trabajar en lotes (batch processing) con los chats de ellmer y sus salidas, Dylan Pieper ideó hellmer. El paquete se lleva bien con ellmer y tiene varias funciones útiles, barritas que muestran el progreso, y nos da mensajes informativos mientras trabaja.
Para probar el paquete yo corrí este ejemplo con Gemini y funcionó super bien:
Los resultados:
$texts()
result1]]
[[1] "3,628,800\n"
[2]]
[[1] "* Enter Sandman\n* Master of Puppets\n* Nothing Else Matters\n"
[3]]
[[1] "Uno, dos, tres.\n"
[4]]
[[1] "Hola.\n"
[5]]
[[1] "Acra.\n" [
2.5.3 chores
chores antes era pal pero le cambiaron el nombre. Este issue de GitHub explica el motivo para el cambio de nombre.
chores es otro paquete por Simon Couch que nos brinda asistentes amigables que pueden editar, documentar, o explicar nuestro código. Funciona con addins que pueden correr en RStudio o Positron. Buena opción para automatizar la creación de código repetitivo y no tener que hacer algunas tareas tediosas a mano al programar. Funciona con casi cualquier modelo.
- Aquí encontré un tutorial en español para crear asistentes orientados a diferentes roles.
2.5.4 ggpal2
ggpal2 es una extensión para chores
, desarrollada por Frank Hull. ggpal2 nos aporta asistentes basados en LLM diseñados específicamente para trabajar con ggplot2
. Como con chores o gander, solo tenemos que seleccionar algúna sección código o texto que describa lo que queremos hacer y llamar al addin con un atajo de teclado. Algunas de las cosas que podemos hacer es pasar código de R base a ggplot, crear gráficos a partir de comentarios, u obtener sugerencias para mejorar la legibilidad de nuestros gráficos existentes.
ggpal2 es un buen ejemplo de como se pueden escibir extensiones para chores, principalmente a través un un conjunto de prompts bien diseñados..
2.5.5 gander
Otro paquete más desarollado por Simon Couch, que publicó gander a principios de 2025.
gander aprovecha ellmer para poder ir más allá de un chat en la consola o en alguna cajita y más bien brindar un asistente útil para nuestro IDE favorito. gander funciona bien en RStudio o Positron, y lo interesante es puede buscar contexto para las tareas en los objetos de nuestro entorno, o en los archivos de nuestro directorio de trabajo.
Una breve animación de cómo se puede usar:
gander ya tiene una introducción oficial el blog de Posit (publicado el 17/03/2025).
2.6 Herramientas para RAG
2.6.1 ragnar
ragnar es un paquete desarrolado por Tomasz Kalinowski para implementar generación aumentada por recuperación (RAG: Retrieval-Augmented Generation) en R. Esto no es más que vincular un modelo de lenguaje de gran escala con fuentes externas de información para obtener mejores respuestas.
ragnar usa duckdb por defecto entonces el trabajo con datos masivos es eficiente. Podemos conectar modelos locales de Ollama y usar modelos de openAI (vendrán más en el futuro).
ragnar ahora es parte de la organización de tidyverse en GitHub entonces supongo que se vienen cosas interesantes.
Me gustó el ejemplo que aparece en el README del paquete, que muestra como ingerir los contenidos de R for Data Science para preguntar cosas sobre R y obtener respuestas certeras y con fuentes genuinas y útiles.
2.6.2 pkgprompt
Puse en esta sesión a pkgprompt porque es para convertir la documentación de un paquete de R en texto plano listo para que lo digiera un LLM. Este es otro paquete más escrito por Simon Couch, y puede convertir todo la documentación de una vez o solo algún tema en espefícico a través del argumento topics
.
2.7 Visión por computadora
2.7.1 kuzco
kuzco es un paquete desarrollado por Frank Hull y Johannes Breuer, que usa ollamar y ellmer para traer un asistente de ‘computer vision’ a nuestra sesión de R. Usa herramientas de LLM en lugar de torch para poder clasificar, reconocer, o extraer texto de una imagen. Los resultados salen en tibbles bien ordenaditas.
Me gustó mucho el logotipo del paquete y ejemplo en su página de inicio es un cachorrito :3
2.8 Transformers
2.8.1 pangoling
Bruno Nicenboim, Chris Emmerly, y Giovanni Cassani desarrollaron pangoling, un paquete para estimar que tan predecible es una palabra en un contexto dado usando modelos de tipo transformer (como GPT-2 or BERT). Estas probabilidades al parecer se usan mucho en estudios psicolinguísticos.
Me gustó mucho ver un paquete de rOpenSci en este campo.