Learn R Programming

shinychat

shinychat provides a Shiny toolkit for building generative AI applications like chatbots and streaming content. It's designed to work alongside the ellmer package, which handles response generation.

Installation

You can install shinychat from CRAN with:

install.packages("shinychat")

Or, install the development version of shinychat from GitHub with:

# install.packages("pak")
pak::pak("posit-dev/shinychat/pkg-r")

Example

To run this example, you'll first need to create an OpenAI API key, and set it in your environment as OPENAI_API_KEY.

You'll also need to install the ellmer package (with install.packages("ellmer")).

library(shiny)
library(shinychat)

ui <- bslib::page_fillable(
  chat_ui(
    id = "chat",
    messages = "**Hello!** How can I help you today?"
  ),
  fillable_mobile = TRUE
)

server <- function(input, output, session) {
  chat <-
    ellmer::chat_openai(
      system_prompt = "Respond to the user as succinctly as possible."
    )

  observeEvent(input$chat_user_input, {
    stream <- chat$stream_async(input$chat_user_input)
    chat_append("chat", stream)
  })
}

shinyApp(ui, server)

Next steps

Ready to start building a chatbot with shinychat? See Get Started to learn more.

Copy Link

Version

Install

install.packages('shinychat')

Monthly Downloads

2,940

Version

0.3.0

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Garrick Aden-Buie

Last Published

November 20th, 2025

Functions in shinychat (0.3.0)

chat_append

Append an assistant response (or user message) to a chat control
update_chat_user_input

Update the user input of a chat control
contents_shinychat

Format ellmer content for shinychat
chat_append_message

Low-level function to append a message to a chat control
chat_restore

Add Shiny bookmarking for shinychat
output_markdown_stream

Create a UI element for a markdown stream.
markdown_stream

Stream markdown content
chat_ui

Create a chat UI element
chat_app

Open a live chat application in the browser
shinychat-package

shinychat: Chat UI Component for 'shiny'
chat_clear

Clear all messages from a chat control