Releases: posit-dev/shinychat
r-shinychat 0.3.0
Breaking changes
chat_mod_server()now returns a list of reactives forlast_inputandlast_turn, as well functions toupdate_user_input(),append()andclear()the chat. (#130, #143, #145)
New features
-
Added
chat_restore()which adds Shiny bookmarking hooks to save and restore the{ellmer}chat client. (#28, #82) -
Added
update_chat_user_input()for programmatically updating the user input of a chat UI element. (#78) -
shinychat now shows tool call request and results in the UI, and the feature is enabled by default in
chat_app()and the chat module (chat_mod_server()). When usingchat_append()withchat_ui(), setstream = "content"when you call the$stream_async()method on theellmer::Chatclient to ensure tool calls are included in the chat stream output. Learn more in the tool calling UI article. (#52) -
Added
chat_append(icon=...)andchat_ui(icon_assistant=...)for customizing the icon that appears next to assistant responses. (#88)
Improvements
-
chat_app()now correctly restores the chat client state when refreshing the app, e.g. by reloading the page. (#71) -
External links in chat messages in
chat_ui()now open in a new tab by default, with a confirmation dialog. (#120)
Bug fixes
- The chat input no longer submits incomplete text when the user has activated IME completions (e.g. while typing in Japanese or Chinese). (#85)
Internal changes
-
We consolidated the
<shiny-chat-message>and<shiny-user-message>components into a single<shiny-chat-message>component with adata-roleattribute to indicate whether it's an "assistant" or "user" message. This likely has minimal impact on your apps, other than custom styles. You should update anyshiny-user-messagerules to useshiny-chat-message[data-role="user"]. (#101) -
The chat UI's send input button is now identified by the class
.shiny-chat-btn-send. (@DeepanshKhurana, #138)
py-shinychat 0.2.8
Bug fixes
- Allow
chatlas.types.ToolResultDisplayto be imported withoutpydantic.
py-shinychat 0.2.7
Bug fixes
- Only import
pydanticifchatlasis relevant.
py-shinychat 0.2.6
Bug fixes
pydanticis (once again) a soft dependency (included in theprovidersextra).
py-shinychat 0.2.5
chatlas is (once again) a soft dependency (included in the providers extra).
py-shinychat 0.2.4
Bug fixes
- Fixed an issue (introduced in v0.2.0) where statically rendered messages with HTML dependencies weren't being handled properly. (#134)
py-shinychat 0.2.3
Bug fixes
message_content()andmessage_content_chunk()correctly extract content from achatlas.Turn. (#133)
py-shinychat 0.2.2
Improvements
message_content()andmessage_content_chunk()can now takeChatMessage()as input. (#132)
py-shinychat 0.2.1
py-shinychat 0.2.0
New features
-
New and improved UI for tool calls that occur via chatlas. As a reminder, tool call displays are enabled by setting
content="all"in chatlas'.stream()(or.stream_async()) method. See the tests under thepkg-py/tests/playwright/toolsdirectory for inspiration of what is now possible with custom tool displays via the newToolResultDisplayclass. (#107) -
Added new
message_content()andmessage_content_chunk()generic (singledispatch) functions. These functions aren't intended to be called directly by users, but instead, provide an opportunity to teachChat.append_message()/Chat.append_message_stream()to extract message contents from different types of objects. (#96) -
External links in chat messages in
chat_ui()now open in a new tab by default, with a confirmation dialog. (#120)
Bug fixes
- The chat input no longer submits incomplete text when the user has activated IME completions (e.g. while typing in Japanese or Chinese). (#85)
Deprecations
-
Numerous
Chat()features have been deprecated in preparation for future removal to simplify the API (#91)Chat(messages=...)was deprecated. Usechat.ui(messages=...)instead.Chat(tokenizer=...)was deprecated. This is only relevant for.messages(token_limits=...)which is also now deprecated.- All parameters to
.messages()were deprecated. This reflects an overall change philosophy for maintaining the conversation history sent to the LLM --Chatshould no longer be responsible for maintaining it -- another stateful object (perhaps the one provided by chatlas, LangChain, etc.) should be used instead. That said,.messages()is still useful if you want to access UI message state. - The
.transform_user_inputand.transform_assistant_responsedecorators were deprecated. Instead, transformation of input/responses should be done manually and independently ofChat. - As a result of the previous deprecations,
.user_input(transform=...)was also deprecated.
-
We consolidated the
<shiny-chat-message>and<shiny-user-message>components into a single<shiny-chat-message>component with adata-roleattribute to indicate whether it's an "assistant" or "user" message. This likely has minimal impact on your apps, other than custom styles. You should update anyshiny-user-messagerules to useshiny-chat-message[data-role="user"]. (#101)