Learn R Programming

⚠️There's a newer version (0.12.0) of this package.Take me there.

gemini.R

R package to use Google's gemini via API on R

Installation

From CRAN

install.packages("gemini.R")

From R-universe (development version)

install.packages("gemini.R",
  repos = c("https://jhk0530.r-universe.dev", "https://cloud.r-project.org")
)

From Github (development version)

# install.packages("pak")
pak::pak("jhk0530/gemini.R")

Usage

Gemini with AI Studio API

Text

library(gemini.R)

setAPI("your API key") # check https://makersuite.google.com/app/apikey
gemini("Explain about the gemini in astrology in one line")

# text 
# "Gemini, the third astrological sign, is associated with 
# communication, adaptability, and a thirst for knowledge." 

Image

# uses default prompt as "Explain this image"
# uses included image of gemini.R package
gemini_image(image = system.file("docs/reference/figures/image.png", package = "gemini.R"))

# text 
# " The image shows a table with a white tablecloth. On the table are two cups of coffee, 
# a bowl of blueberries, and five scones. The scones are covered in blueberries and have 
# a crumbly texture. There are also some pink flowers on the table. The background is a 
# dark blue color. The image is taken from a top-down perspective." 

Audio

# use default prompt as "Describe this audio"
# uses included audio of gemini.R package
gemini_audio(audio = system.file("docs/reference/helloworld.mp3", package = "gemini.R"))

# text
# "The audio contains a clear, crisp recording of a person saying \"Hello world\".  
# Following the phrase is a distinct, repeated percussive sound, possibly a rhythmic 
# tapping or clicking noise. The sound is consistent and mechanical in nature.\n"

Image via Shiny

To use gemini_image function, image file required. and I recommend to use shiny app with fileInput function.

library(shiny)
library(gemini.R)

setAPI("YOUR KEY")
ui <- fluidPage(
  sidebarLayout(
    NULL,
    mainPanel(
      fileInput(
        inputId = "file",
        label = "Choose file to upload",
      ),
      imageOutput(outputId = "image1"),
      textInput(
        inputId = "prompt", 
        label = "Prompt", 
        placeholder = "Enter Prompts Here"
      ),
      actionButton("goButton", "Ask to gemini"),
      textOutput("text1")
    )
  )
)

server <- function(input, output) {
  
  observeEvent(input$file, {
    path <- input$file$datapath
    output$image1 <- renderImage({
      list(
        src = path
      )
    }, deleteFile = FALSE)
  })
  
  observeEvent(input$goButton, {
    output$text1 <- renderText({
      gemini_image(input$prompt, input$file$datapath)
    })
  })
}

shinyApp(ui = ui, server = server)

Gemini with Vertex AI API

Text

tokens <- token.vertex("YOUR_API_KEY.json", model_id = "1.5-flash")
prompt <- "What is sachins Jersy number?"

gemini.vertex(prompt, tokens)

Image

tokens <- token.vertex("YOUR_API_KEY.json", model_id = "1.5-flash")

gemini_image.vertex(image = "YOUR_IMAGE.png", type, tokens)

Audio

tokens <- token.vertex("YOUR_API_KEY.json", model_id = "1.5-flash")

gemini_audio.vertex(audio = "YOUR_AUDIO.mp3", tokens)
  • File upload to Google Cloud using API not supported.
  • Instead you must use uploaded file. (e.g. Google Cloud Storage)
  • Example sound from soundbible

Rstudio Addins

Function documentation (Roxygen)

You may customize keyboard shortcut for this feature.

Unit testing (testthat)

Terms

Before use the API, I recommend that you to check at least the following.

There may be more terms and conditions that you need to check. Any app which uses the API should be compliant with the Google Terms of Service.

[!note]

image is from Google AI for Developers

I've got many inspiration from Deepanshu Bhalla's article

Copy Link

Version

Install

install.packages('gemini.R')

Monthly Downloads

1,159

Version

0.8.0

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Jinhwan Kim

Last Published

February 6th, 2025

Functions in gemini.R (0.8.0)

gemini_audio.vertex

Analyze Audio using Gemini Vertex API
gemini.vertex

Generate text from text with Gemini Vertex API
gemini

Generate text from text with Gemini
gemini_image.vertex

Generate text from text and image with Gemini Vertex API
gemini_image

Generate text from text and image with Gemini
gemini_chat

Multi-turn conversations (chat)
addHistory

Add history for chating context
gemini_audio

Analyze audio using Gemini
setAPI

Set API key
gen_tests

Generates unit test code for an R function.
gen_docs

Generate Roxygen Documentation
token.vertex

Generate Gemini Access Token and Endpoint URL