Added new output_markdown_stream() and
markdown_stream() functions to allow for streaming markdown
content to the client. This is useful for showing Generative AI
responses in real-time in a Shiny app, outside of a chat interface.
(#23)
Both chat_ui() and
output_markdown_stream() now support arbitrary Shiny UI
elements inside of messages. This allows for gathering input from the
user (e.g., selectInput()), displaying of rich output
(e.g., {htmlwidgets} like {plotly}), and more.
(#29)
Added a new chat_clear() function to clear the chat
of all messages. (#25)
Added chat_app(), chat_mod_ui() and
chat_mod_server(). chat_app() takes an
ellmer::Chat client and launches a simple Shiny app
interface with the chat. chat_mod_ui() and
chat_mod_server() replicate the interface as a Shiny
module, for easily adding a simple chat interface connected to a
specific ellmer::Chat client. (#36)
The promise returned by chat_append() now resolves
to the content streamed into the chat. (#49)
chat_append(), chat_append_message()
and chat_clear() now all work in Shiny modules without
needing to namespace the id of the Chat component.
(#37)
chat_append() now logs and throws a silent error if
the stream errors for any reason. This prevents the app from crashing if
the stream is interrupted. You can still use
promises::catch() to handle the error in your app code if
desired. (#46)