Я создаю приложение чат-бота в Streamlit, которое интегрируется с компонентом календаря. Календарь должен отображаться при обнаружении определенных ключевых слов в ответе чат-бота. Однако я сталкиваюсь с проблемами, из-за которых календарь либо отображается неправильно, либо сразу исчезает.
Я сделал ссылку на это на github.
Проблема: календарь отображается на секунду и затем исчезает. Кроме того, импорт событий, Calendar_options, custom_css и ключа d, похоже, не работает должным образом.
Вопрос: Как правильно интегрировать и отобразить компонент календаря в моем приложении чат-бота Streamlit? , обеспечивая его сохранение и правильное функционирование?
Будем очень признательны за любые идеи и предложения!
import streamlit as st
from streamlit_calendar import calendar
from lib.pages.calendar_component import events, calendar_options, custom_css, key
def toggle_button():
st.session_state['button_clicked'] = not st.session_state['button_clicked']
def show_intelliBot_page():
from dotenv import load_dotenv
load_dotenv()
from lib.interpreter.LLMInterpreter import LLMInterpreter
from langchain_community.callbacks.streamlit import StreamlitCallbackHandler
from streamlit_calendar import calendar
if "messages" not in st.session_state:
st.session_state.messages = []
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
if prompt := st.chat_input("How may I help you?"):
# st.session_state.messages.append({"role": "user", "content": prompt})
# Display user message in chat message container
with st.chat_message("user"):
st.markdown(prompt)
# Add user message to chat history
st.session_state.messages.append({"role": "user", "content": prompt})
with (st.chat_message("assistant")):
with st.spinner("Processing..."):
st_callback = StreamlitCallbackHandler(st.container())
interpreter = LLMInterpreter(prompt)
response = interpreter.interpret(prompt, [st_callback])
st.markdown(response)
# Add assistant message to chat history
st.session_state.messages.append({"role": "assistant", "content": response})
if "edd" in response.lower() or "sourcing" in response.lower():
events = [
{
"title": "Event 1",
"color": "#FF6C6C",
"start": "2023-07-03",
"end": "2023-07-05",
"resourceId": "a",
},
{
"title": "Event 2",
"color": "#FFBD45",
"start": "2023-07-01",
"end": "2023-07-10",
"resourceId": "b",
},
{
"title": "Event 3",
"color": "#FF4B4B",
"start": "2023-07-20",
"end": "2023-07-20",
"resourceId": "c",
},
{
"title": "Event 4",
"color": "#FF6C6C",
"start": "2023-07-23",
"end": "2023-07-25",
"resourceId": "d",
},
{
"title": "Event 5",
"color": "#FFBD45",
"start": "2023-07-29",
"end": "2023-07-30",
"resourceId": "e",
},
{
"title": "Event 6",
"color": "#FF4B4B",
"start": "2023-07-28",
"end": "2023-07-20",
"resourceId": "f",
},
{
"title": "Event 7",
"color": "#FF4B4B",
"start": "2023-07-01T08:30:00",
"end": "2023-07-01T10:30:00",
"resourceId": "a",
},
{
"title": "Event 8",
"color": "#3D9DF3",
"start": "2023-07-01T07:30:00",
"end": "2023-07-01T10:30:00",
"resourceId": "b",
},
{
"title": "Event 9",
"color": "#3DD56D",
"start": "2023-07-02T10:40:00",
"end": "2023-07-02T12:30:00",
"resourceId": "c",
},
{
"title": "Event 10",
"color": "#FF4B4B",
"start": "2023-07-15T08:30:00",
"end": "2023-07-15T10:30:00",
"resourceId": "d",
},
{
"title": "Event 11",
"color": "#3DD56D",
"start": "2023-07-15T07:30:00",
"end": "2023-07-15T10:30:00",
"resourceId": "e",
},
{
"title": "Event 12",
"color": "#3D9DF3",
"start": "2023-07-21T10:40:00",
"end": "2023-07-21T12:30:00",
"resourceId": "f",
},
{
"title": "Event 13",
"color": "#FF4B4B",
"start": "2023-07-17T08:30:00",
"end": "2023-07-17T10:30:00",
"resourceId": "a",
},
{
"title": "Event 14",
"color": "#3D9DF3",
"start": "2023-07-17T09:30:00",
"end": "2023-07-17T11:30:00",
"resourceId": "b",
},
{
"title": "Event 15",
"color": "#3DD56D",
"start": "2023-07-17T10:30:00",
"end": "2023-07-17T12:30:00",
"resourceId": "c",
},
{
"title": "Event 16",
"color": "#FF6C6C",
"start": "2023-07-17T13:30:00",
"end": "2023-07-17T14:30:00",
"resourceId": "d",
},
{
"title": "Event 17",
"color": "#FFBD45",
"start": "2023-07-17T15:30:00",
"end": "2023-07-17T16:30:00",
"resourceId": "e",
},
{
"title": "Event 18",
"color": "#3D9DF3",
"duration": "00:40",
"resourceId": "a",
"rrule": {
"freq": 'weekly',
"byweekday": ['tu', 'we'],
"interval": 1,
"dtstart": '2023-07-04T10:00:00', # will also accept '20120201T103000'
"until": '2023-07-20' # will also accept '20120201'
}
},
]
calendar_options = {
"editable": "true",
"navLinks": "true",
"selectable": "true",
"initialView": "multiMonthYear"
}
custom_css = """
.fc-event-past {
opacity: 0.8;
}
.fc-event-time {
font-style: italic;
}
.fc-event-title {
font-weight: 700;
}
.fc-toolbar-title {
font-size: 2rem;
}
"""
key = "multimonth"
calendar_state = calendar(events=st.session_state.get("events", events), options=calendar_options,
custom_css=custom_css, key=key)
st.session_state.messages.append({"role": "assistant", "content": calendar_state})
Подробнее здесь: https://stackoverflow.com/questions/785 ... -displayed