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) | |