ui.chat_ui
ui.chat_ui(id,
*,
=None,
messages='Enter a message...',
placeholder='min(680px, 100%)',
width='auto',
height=True,
fill**kwargs,
)
UI container for a chat component (Shiny Core).
This function is for locating a Chat
instance in a Shiny Core app. If you are using Shiny Express, use the ui
method instead.
Parameters
id : str
-
A unique identifier for the chat UI.
messages : Optional[Sequence[str |
ChatMessage
]] = None-
A sequence of messages to display in the chat. Each message can be either a string or a dictionary with
content
androle
keys. Thecontent
key should contain a string, and therole
key can be “assistant” or “user”. Content strings are interpreted as markdown and rendered to HTML on the client. Content may also include specially formatted input suggestion links (seeappend_message_stream
for more information). placeholder : str = 'Enter a message…'
-
Placeholder text for the chat input.
width : CssUnit = 'min(680px, 100%)'
-
The width of the chat container.
height : CssUnit = 'auto'
-
The height of the chat container.
fill : bool = True
-
Whether the chat should vertically take available space inside a fillable container.
kwargs : TagAttrValue = {}
-
Additional attributes for the chat container element.
Examples
#| standalone: true
#| components: [editor, viewer]
#| layout: vertical
#| viewerHeight: 400
## file: app.py
from shiny.express import ui
# Set some Shiny page options
ui.page_opts(
title="Hello Shiny Chat",
fillable=True,
fillable_mobile=True,
)
# Create a welcome message
welcome = ui.markdown(
"""
Hi! This is a simple Shiny `Chat` UI. Enter a message below and I will
simply repeat it back to you. For more examples, see this
[folder of examples](https://github.com/posit-dev/py-shiny/tree/main/shiny/templates/chat).
"""
)
# Create a chat instance
chat = ui.Chat(
id="chat",
messages=[welcome],
)
# Display it
chat.ui()
# Define a callback to run when the user submits a message
@chat.on_user_submit
async def handle_user_input(user_input: str):
# Append a response to the chat
await chat.append_message(f"You said: {user_input}")
## file: _template.json
{
"type": "app",
"id": "chat-hello",
"title": "Hello Shiny Chat"
}
## file: requirements.txt
shiny