R-Applikationen um LLM-Funktionen erweitern, ist mit diesen Tools kein Problem.
TippaPatt | shutterstock.com
Il mondo della Generative AI in R, sebbene non sia competitivo come Python, si è notevolmente evoluto negli ultimi mesi. Inizialmente gli strumenti a base ChatGPT avevano la priorità, ma adesso c’è un supporto diretto per i principali fornitori di modelli linguistici di grandi dimensioni (LLM). Anche la varietà delle attività di GenAI che gli sviluppatori possono svolgere con R si è allargata.
In questo articolo mostriamo cinque strumenti ideali per integrare modelli linguistici di grandi dimensioni nei progetti R, locali e tramite API.
Ellmer
Uno degli strumenti più importanti per integrare LLM nei flussi di lavoro R è ellmer. Questo progetto nasce dall’azienda Open Source Posit ed è gestito da sviluppatori che si sono distinti in altri popolari pacchetti R come ggplot2 e il framework Web Shiny R.
Per Kyle Walker, questo strumento ha un ottimo interfaccia per qualsiasi linguaggio, e ne sconsiglia l'uso per il trattamento PDF. Gli sviluppatori che lo usano lo adorano, e per saperne di più puoi visitare ellmer.tidyverse.org.
Con ellmer, si crea oggetti chat con funzioni come chatopenai() o chatclaude(), permettendoti di interagire direttamente con LLM. Per conservare i propri API-Key, consulta la documentazione relativa alle funzionalità chat.
Ecco un esempio di oggetto chat OpenAI:
library(ellmer)
my_chat
Ancora, per un modello Claude, la sintassi diventa:
mychatclaude
I prompt di sistema non sono obbligatori, ma sono raccomandati per attività specifiche. Altrettanto non è necessario impostare uno specifico modello in ogni funzione chat. Tuttavia, è una buona idea per evitare modelli costosi o obsoleti.
Elenco dei LLM supportati
Ellmer supporta una moltitudine di modelli, tra cui:
- OpenAI
- Azure OpenAI
- Anthropic
- Google Gemini
- AWS Bedrock
- Snowflake Cortex
- Perplexity AI
- Ollama per modelli locali
Questo pacchetto può essere installato tramite CRAN, oppure puoi provare la versione in sviluppo con pak::pak("tidyverse/ellmer").
Parametri e configurazioni
Per modificare i parametri per il modello (inclusa la temperatura), usa api_arg. Ecco un esempio:
my_chat
Un'alta temperatura si accompagna spesso con output più creativo, mentre una bassa con una risposta più precisa. Tuttavia, la temperatura non è un argomento esplicito, e deve essere definito all’interno della lista api_arg. Per i parametri validi consulta la documentazione API del fornitore del modello.
Ellmer permette di gestire le chat in diversi modi:
- fornisce un’interfaccia chatbot (R console o browser)
- salva e restituisce i risultati in forma testuale
- salva i risultati senza stream
Utilizzo in ambiente Shiny
Con liveconsole(mychat), puoi aprirci una finestra chiamata in R console. Per il browser, utilizza livebrowser(mychat).
Con il metodo di chiamata interattivo:
my_results
my_chat$chat()
Se si usa my_chat nuovamente per domande, il contesto precedente si mantiene:
my_results2 <-
my_chat$chat("Now color turquoise please")
Questo permette a future conversazioni di ricollegarsi al contesto storico:
Sharon Machlis
Se utilizzate Ellmer fuori da ambiente interactive, la documentazione consiglia di "incapsulare" il codice in una funzione in R:
my_function
Questa volta my_answer è solo una stringa testuale.
Vari funzionalità in ellmer
Ellmer offre, tra i tanti benefici:
- chiamata di tool e funzioni
- progettazione di prompty
- estrazione dei dati
Siamo riusciti insieme a shinychat per aggiungere chatbot funzioni su un’app Shiny. Ecco un esempio in GitHub per costruire un’interfaccia chat Shiny semplice per modelli Ollama locali (include un menu a tendina per model selection e un bottone download).
Tidyllm
Questo strumento ha origini tedesche e fu sviluppato da Eduard Brüll, ricercatore presso il Leibniz-Zentrum für Europäische Wirtschaftsforschung. tidyllm e ellmer condividono molte funzionalità, ma differiscono per l'interfaccia utente e la filosofia del design.
Con tidyllm, i verbi, come chat() o send_batch(), vengono combinati con i fornitori per richieste come test embedding, chat ed elaborazione batch.
I modelli supportati includono:
- Anthropic (Claude)
- OpenAI
- Google (Gemini)
- Mistral
- Groq (non Grok)
- Perplexity
- Azure OpenAI
- Ollama per modelli locali
Se si utilizza un fornico cloud, devi specificare l’API Key usando sys.setenv(), o una file .Renviron.
Una semplice richiesta di chat comincia con llm_message() e un oggetto LLMMessage creato per passare alla funzione chat():
library(tidyllm)
my_conversation
chat(openai(.model = "gpt-4o-mini", .temperature = 0, .stream = FALSE))
La funzione llmmessage() può anche contenere messaggi .systemprompt.
Il risultato di my_conversation è solo un testo che puoi stampare. Per aggiungere nuovi messaggi:
my_conversation2
llm_message("Come posso ruotare le etichette sull’asse X a 90 gradi?") |>
chat(openai(.model = "gpt-4o-mini", .temperature = 0, .stream = FALSE))
print(my_conversation2)
← Back to news