Spaces:
Runtime error
Runtime error
| import solara | |
| from typing import List | |
| from typing_extensions import TypedDict | |
| class MessageDict(TypedDict): | |
| role: str | |
| content: str | |
| messages: solara.Reactive[List[MessageDict]] = solara.reactive([]) | |
| def Page(): | |
| with solara.Column(style={"padding": "30px"}): | |
| solara.Title("EchoBot") | |
| solara.Markdown("#EchoBot") | |
| user_message_count = len([m for m in messages.value if m["role"] == "user"]) | |
| def send(message): | |
| messages.value = [ | |
| *messages.value, | |
| {"role": "user", "content": message}, | |
| ] | |
| def response(message): | |
| messages.value = [ | |
| *messages.value, | |
| {"role": "assistant", "content": message} | |
| ] | |
| def result(): | |
| if messages.value !=[]: response(messages.value[-1]["content"]) | |
| result = solara.use_memo(result, [user_message_count]) | |
| print(messages.value) | |
| with solara.Column(style={"width": "70%"}): | |
| with solara.lab.ChatBox(): | |
| for item in messages.value: | |
| with solara.lab.ChatMessage( | |
| user=item["role"] == "user", | |
| name="Echobot" if item["role"] == "assistant" else "User", | |
| avatar_background_color="#33cccc" if item["role"] == "assistant" else "#ff991f", | |
| border_radius="20px", | |
| ): | |
| solara.Markdown(item["content"]) | |
| solara.lab.ChatInput(send_callback=send) | |