ui.chat_ui
ui.chat_ui(id,
*,
=None,
messages='Enter a message...',
placeholder='min(680px, 100%)',
width='auto',
height=True,
fill=None,
icon_assistant**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.
icon_assistant :
HTML
| Tag | TagList | None = None-
The icon to use for the assistant chat messages. Can be a HTML or a tag in the form of
HTML
or Tag. IfNone
, a default robot icon is used. kwargs : TagAttrValue = {}
-
Additional attributes for the chat container element.
Examples
#| standalone: true
#| components: [editor, viewer]
#| layout: vertical
#| viewerHeight: 400
## file: app.py
from shiny import App, ui
app_ui = ui.page_fillable(
ui.panel_title("Hello Shiny Chat"),
ui.chat_ui("chat"),
fillable_mobile=True,
)
# Create a welcome message
welcome = """
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).
"""
def server(input, output, session):
chat = ui.Chat(id="chat", messages=[welcome])
# 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}")
app = App(app_ui, server)
## file: requirements.txt
shiny
## file: _template.json
{
"type": "app",
"id": "chat-hello",
"title": "Hello Shiny Chat",
"next_steps": [
"Run the app with `shiny run app.py`."
]
}