Creați rapoarte și tutoriale cu AI generativ de la r

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

(Acest articol a fost publicat pentru prima dată pe BLUECOLOGIE BLOGși a contribuit cu drag la R-Bloggers). (Puteți raporta problema despre conținutul de pe această pagină aici)


Doriți să vă împărtășiți conținutul pe R-Bloggers? Faceți clic aici dacă aveți un blog sau aici dacă nu.

Mai mulți furnizori de modele AI au capacități de căutare web integrate în modelele lor de limbă mare. Încercam să folosesc aceste caracteristici prin R ellmer pachet. Cu toate acestea, modificările la LLM sunt atât de frecvente încât ellmer nu se ține pasul.

Am primit ellmer Pentru a rula modelul de căutare sonar al lui Perplexity, cu toate acestea nu mi -a oferit referințele, care sunt esențiale.

Dacă nu ați văzut aceste rapoarte generate de AI, consultați exemplul la sfârșit. Este o modalitate utilă de a obține un rezumat rapid al literaturii sau de a crea tutoriale R personalizate.

Aici anunț doar câteva scripturi R simple pe care le puteți utiliza pentru a face rapoarte AI de căutare pe web cu serviciul OpenRouter.

Tocmai am creat două funcții (cu ajutorul Copilotului, desigur), una care face un apel către API -ul OpenRouter pentru a trimite o întrebare unui model. A doua funcție procesează ieșirea (care este în format JSON) pentru a face un QMD frumos, cu referințele hiper-legate (asigurați-vă că verificați adresa URL înainte de a face clic pe ele, cine știe ce va apărea AI!). De acolo puteți reda QMD pentru a obține un raport PDF/Word/HTML.

Funcțiile sunt ușor de utilizat. Mai întâi descărcați sau copiați aceste funcții din github -ul meu.

NOTĂ NICIODATĂ NICIODATĂ NICIODATĂ NICIUN COD DE APLICĂ ALTE care să trimită cereri către LLMS! Ar putea include prompturi nocive. Vă recomand să citiți tot codul care trimite prompturi către LLMS doar pentru a vă asigura că știți ce face.

Utilizarea codului pentru a face o căutare și a crea un raport

După ce aveți cele două funcții ale mele, va trebui să vă configurați cheia API OpenRouter și să salvați cheia undeva (de exemplu, puteți utiliza usethis::edit_r_environ() și salvați-l acolo ca OpenRouter_API_KEY = „My-key-here”)

Iată un exemplu de utilizare a funcției:

library(httr)
library(jsonlite)

source("perplexity-search-functions.R")

openrouter_api_key <- Sys.getenv("OPENROUTER_API_KEY")

user_message <- "I want to learn how to use the NIMBLE package to fit autoregressive time-series models"

system_message <- "You are a helpful AI agent who creates statistical analysis tutorials in R. 
        Rules: 
        1. Include text and examples of code in your responses. 
        2. Produce reports that are less than 10000 words."

#Send response to openrouter 
response <- call_openrouter_api(
  openrouter_api_key,
  model = "perplexity/sonar-deep-research",
  system_message = system_message,
  user_message,
  search_context_size = "medium"
  #Options "low"  "medium", "high"
)

#Save the response as a qmd
save_response_as_qmd(response, "results/AR-models-in-NIMBLE.qmd")

Intrări pentru LLM

Mesajul utilizatorului este promptul dvs. pentru căutarea. Mesajul de sistem stabilește sfera de aplicare a modului în care este creat raportul. Rețineți că orice pentru căutarea pe web intră în mesajul utilizatorului, nu mesajul de sistem Vedeți orientările privind perplexitatea pentru mai multe informații despre sfaturi solicitate, este diferit decât pentru LLM -urile obișnuite.

De exemplu, o altă idee pentru un prompt de sistem ar putea fi:

system_message <- "You are a helpful AI agent who creates summary reports of the scientific literature. 
        Rules: 
        1. Produce reports that are less than 2000 words.
        2. Include a Summary section that summarizes key research trends. "

user_message <- "What are the impacts of climate warming on fish physiology documented in the peer-reviewed academic literature"

search_context_size este menit să controleze cât de mult efort depune, este greu de spus dacă acest lucru afectează sau nu rezultatele, consultați documentele lui Openrouter pentru mai multe informații.

Alegeri de model

Alte modele de încercat sunt:

  • perplexity/sonar Pentru o căutări mai simple, mai ieftine, inclusiv citări.

  • perplexity/sonar-deep-research Pentru căutări mai profunde și mai scumpe, cu citări și raționament.

  • openai/o4-mini Este o altă opțiune, dar nu returnează citările.

Explorați site -ul OpenRouter pentru alte LLM -uri de căutare pe web.

Personalizare

call_openrouter_api.R Funcția este un șablon pentru personalizare, nu un cadru cuprinzător pentru utilizarea API -ului OpenRouter. Este de fapt foarte ușor de conectat la LLMS de la R (chiar dacă majoritatea exemplelor online sunt în Python sau TypScript). Iată un șablon de bază:

library(httr)
library(jsonlite)
response <- POST(
    url = "https://openrouter.ai/api/v1/chat/completions",
    add_headers(
      "Content-Type" = "application/json",
      "Authorization" = paste("Bearer", openrouter_api_key)
    ),
    body = toJSON(list(
      model = model,
      messages = list(
        list(
          role = "system",
          content = system_message
        ),  
        list(
          role = "user",
          content = user_message
        )
      )
    ), auto_unbox = TRUE),
    encode = "raw"
  )

Atunci trucul este formatarea ieșirii, ceea ce face cealaltă funcție a mea (concentrându -se pe modelele de perplexități).

Exemplu de raport

Mai jos este un exemplu, am cerut să folosesc promptul de sistem de mai sus și am întrebat despre montarea modelelor de producție excedentare (pentru știința pescuitului) cu pachetul nimbil. Notă o eroare minoră cu funcția mea Conversia referințelor QMD la hyperlink-uri, potențialul face și sub-scripturi. Ceva la care să lucrezi mai târziu. Iată raportul AI:

Puteți încadra un Model de producție excedentară (SPM) Cu pachetul Nimble din R, scriind modelul în limbajul Bugs, care Nimble se extinde, specificând probabilitatea dvs. (de exemplu, dinamica producției cu date de captură) și priori pentru parametri, apoi utilizând capacitățile MCMC ale Nimble pentru a estima distribuțiile posterioare ale parametrilor. Iată o abordare în trepte cu fragmente de cod de exemplu:

  1. Specificați modelul de producție excedent în codul bug -urilor:
    Acest lucru modelează de obicei biomasa (B_T) în timp ce evoluează în timp în funcție de o creștere logistică sau modelul Gompertz minus capturi (C_T). De exemplu, modelul Schaefer poate fi exprimat ca:
    (B_ {t + 1} = b_t + r b_t left (1 – frac {b_t} {k} dreapta) – c_t + epsilon_t)
    unde (R) este o rată de creștere intrinsecă, (k) are o capacitate de transport și ( epsilon_t) modele de proces.
library(nimble)

# Define the model in BUGS syntax
spm_code <- nimbleCode({
  # Priors for parameters
  r ~ dunif(0, 2)           # growth rate
  K ~ dunif(maxCatch, 10 * maxCatch)  # carrying capacity (expand as appropriate)
  sigma ~ dunif(0, 5)       # process noise SD

  B(1) ~ dunif(0, K)       # initial biomass
  
  for(t in 1:(nYears - 1)) {
    mu
    B(t + 1) ~ dnorm(mu
  }
})
  1. Pregătiți datele și constantele (de exemplu, seria de timp de captură, numărul de ani):
data <- list(catch = catch_vector)  # your observed catches
constants <- list(nYears = length(catch_vector), maxCatch = max(catch_vector))
inits <- list(r = 0.5, K = max(catch_vector)*5, sigma = 0.1, B = rep(NA, length(catch_vector)))
  1. Construiți, compilați și rulați modelul cu Nimble:
# Create model object
spm_model <- nimbleModel(spm_code, data = data, inits = inits, constants = constants)

# Compile model
c_spm_model <- compileNimble(spm_model)

# Configure MCMC; default samplers are usually fine
mcmc_conf <- configureMCMC(spm_model)
mcmc <- buildMCMC(mcmc_conf)
c_mcmc <- compileNimble(mcmc, project = spm_model)

# Run MCMC sampling
samples <- runMCMC(c_mcmc, niter = 10000, nburnin = 2000, thin = 5)

# Check results
summary(samples)

Acest flux de lucru urmează abordarea generală a lui Nimble de a specifica modele ierarhice Bayesiene într -un limbaj BUGS extins, compilând versiuni rapide C ++ ale modelului și eșantioane și rulând algoritmi MCMC (1) (2) (4) (7). Cheia este codificarea dinamicii producției excedentare în mod explicit ca ecuații de tranziție de stat cu observație sau eroare de proces, după cum este necesar.

Pentru claritate, iată un Exemplu minim cu date de captură manechin:

library(nimble)

catch_vector <- c(100, 120, 90, 80, 110) # example catches

spm_code <- nimbleCode({
  r ~ dunif(0, 2)
  K ~ dunif(maxCatch, 10 * maxCatch)
  sigma ~ dunif(0, 5)

  B(1) ~ dunif(0, K)
  for(t in 1:(nYears - 1)) {
    mu
    B(t+1) ~ dnorm(mu
  }
})

data <- list(catch = catch_vector)
constants <- list(nYears = length(catch_vector), maxCatch = max(catch_vector))
inits <- list(r = 0.5, K = max(catch_vector)*5, sigma = 0.1, B = rep(NA, length(catch_vector)))

spm_model <- nimbleModel(spm_code, data = data, inits = inits, constants = constants)
c_spm_model <- compileNimble(spm_model)

mcmc_conf <- configureMCMC(spm_model)
mcmc <- buildMCMC(mcmc_conf)
c_mcmc <- compileNimble(mcmc, project = spm_model)

samples <- runMCMC(c_mcmc, niter = 5000, nburnin = 1000, thin = 2)
print(summary(samples))

Acest exemplu modelează dinamica biomasei probabilistic și se potrivește parametrilor (R), (k) și nivelul de zgomot ( sigma), având în vedere capturile cunoscute folosind inferența bayesiană.

Dacă doriți să implementați în schimb o potrivire a probabilității maxime, Nimble vă permite să compilați modelul și să evaluați probabilitățile de optimizare, așa cum s -a demonstrat în tutoriale (1).

În concluzie:

  • Scrieți -vă modelul de producție excedentar în limbajul lui Nimble’s BugsDefinirea dinamicii biomasei, a capturilor și a prizilor pentru parametri
  • Compilează și rulează MCMC eșantionare în Nimble pentru a se potrivi modelului
  • Extrageți probe posterioare pentru rata de creștere, capacitatea de transport, biomasa și incertitudinea
  • Opțional, utilizați Metode bazate pe probabilitate prin compilarea modelului și definirea propriei funcții de optimizator în R (1) (7).

Această abordare folosește puterea lui Nimble pentru modelele de evaluare a stocurilor de timp ierarhice, bayesiene, inclusiv modele de producție excedentare.

  1. oliviergimenez.github.io/banana-book/intronimble.html
  2. www.rdocumentation.org/packages/nimble/versions/1.3.0/topics/nimble-package
  3. www.youtube.com/watch
  4. github.com/nimble-dev/nimble
  5. r-nimble.org/documentare-2
  6. cran.r-project.org/web/packages/nimblecarbon/vignettes/nimble_carbon_vignette.html
  7. r-nimble.org/
  8. www.rdocumentation.org/packages/nimble/versions/1.3.0

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.