Spaces:
Runtime error
Runtime error
File size: 1,593 Bytes
12da214 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
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([])
@solara.component
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)
|