La comunità R ha registrato un progresso considerevole nella capacità di gestire modelli linguistici di grandi dimensioni (Large Language Models, LLM) grazie agli strumenti di AI generativa. Benché il supporto per Python possa essere più ricco, oggi R offre funzionalità avanzate per abilitare modelli come OpenAI, Anthropic, Google Gemini o modello locale Ollama. In questo articolo vi presentiamo i due strumenti più utili per integrare LLM nei progetti R: ellmer, sviluppato da Posit, e tidyllm, che ha origini tedesche. Insieme, rappresentano l’offerta tecnologica dominante per l’integrazione di AI generativa in R.
ellmer
ellmer è considerato uno dei migliori strumenti per collegare modelli linguistici ai flussi di lavoro R. È sviluppato da esperti di R, come quelli che hanno creato ggplot2 e Shiny, e gode di un grande supporto da parte della comunità di sviluppatori open source. Il suo appeal sta anche nel fatto che gestisce un’ampia gamma di API cloud e modelli locali, offrendo documentazione esaustiva, esempi di codice e interfaccia per utilizzo in ambienti di lavoro con Shiny e in tempo reale.
Per installare ellmer, è possibile farlo da CRAN:
- Usare il comando standard:
install.packages("ellmer"), oppure per una versione in sviluppo:pak::pak("tidyverse/ellmer").
Una volta installato, si inizia creando un oggetto chat utilizzando ad esempio:
library(ellmer)
mychat <- chatopenai()
O per Claude da Anthropic:
mychatclaude <- chat_claude()
Importante: Se si utilizza un modello non locale, è necessario configurare l’API per ottenere il proprio token di accesso, che si può configurare nella libreria o in .Renviron.
Supporto LLM
Ellmer supporta molteplici modelli LLM, sia cloud che locali:
- OpenAI
- Azure OpenAI
- Anthropic
- Google Gemini
- Perplexity AI
- Snowflake Cortex
- Ollama (locale)
Si consiglia inoltre di attivare un systemprompt per migliorare l’accuratezza nel contesto specifico, ad esempio: chatopenai(system_prompt = "You are a R developer."). Per modelli specifici come Claude Sonnet 3.5 di Anthropic, le prestazioni di codifica R sono state notevoli.
Parametri Modelli
Puoi personalizzare i parametri come la temperatura (Temperature), ad esempio:
mychat <- chatopenai(.temperature = 0.5, .model = "gpt-4o")
La temperatura è legata alla creatività: un valore più alto produce risposte più varate e imprevedibili, un valore basso risulta più preciso. Nota però che essa non è un argomento esplicito negli oggetti chat(), bensì devi utilizzarla attraverso una lista api_arg().
Metodi Interattivi
ellmer permette di:
- Aprire un’interfaccia chat nella console R:
liveconsole(mychat) - Creare un’interfaccia web tramite
livebrowser(mychat) - Richiedere un output con streaming e memorizzazione
Ciò rende l’uso molto versatile, soprattutto per interagire in tempo reale con modelli cloud come OpenAI o Anthropic. Ogni chat mantiene la cronologia per permettere domande successive basate su dialoghi precedenti.
tidyllm
Nato in Germania, tidyllm è il secondo strumento fondamentale per integrare funzioni di AI generativa nei flussi di lavoro R. A differenza di ellmer, tidyllm adotta un paradigma simile alle funzionalità di pipe in dplyr, organizzando le interazioni in base a verbi come chat(), embed(), batch()—ogni operazione collegata a un fornitore specifico.
Per esempio, una query iniziale può essere espressa come:
my_conversation <-
llm_message("Ciao, hai suggerimenti per migliorare il mio codice?") |>
chat(openai(.model = "gpt-4o-mini", .stream = FALSE))
La funzione llm_message() può inoltre supportare:
- Il caricamento di immagini (utilizzando un file tramite
.imagefile) - Il caricamento di file PDF (richiedendo l’installazione di
pdftools)
I principali fornitori supportati sono:
- OpenAI
- Anthropic
- Ollama (locale)
- Mistral
- Perplexity
- Azure OpenAI
- Google Gemini
Per integrare un model provider cloud, è prima necessario registrare una chiave API tramite:
Sys.setenv("OPENAIAPIKEY", "xxx")
Analisi delle risposte
Una volta ottenuta la risposta del modello in forma di stringa o di struttura Tibble, è possibile gestirla estraendo metadati con result_metadata(), o analizzare i token utilizzati:
resultmetadata(myconversation)
Puoi estrarre anche solo la richiesta che ha prodotto una risposta usando getusermessage().
Conclusione
L’ecosistema R sta acquisendo una posizione crescente nel supporto alla AI generativa, grazie a strumenti come ellmer e tidyllm. Questi due packages non solo ampliano la capacità di utilizzare modelli cloud e locali, ma permettono di integrarli nei workflow esistenti, nei dashboard Shiny o in strumenti di sviluppo avanzati. Il supporto per documentazione, API e funzioni di streaming rende R un’eccellente piattaforma per progetti di AI interattivi e automatizzati.
In definitiva, l’importante è scegliere lo strumento che meglio si adatta al vostro contesto: se preferite un’interfaccia chiara per gestire modelli in contesti di chat o di analisi avanzata