Boris commited on
Commit
118e0c4
·
1 Parent(s): 2535840
Files changed (1) hide show
  1. src/streamlit_app.py +70 -70
src/streamlit_app.py CHANGED
@@ -4,77 +4,77 @@ from get_classification import get_graph_class
4
  from datetime import datetime
5
 
6
 
7
- # def message_to_dict(messages):
8
- # result = []
9
- # for message in messages:
10
- # if isinstance(message, HumanMessage) or isinstance(message, AIMessage):
11
- # print("message:", message.content)
12
- # if message.content == "" or message.content is None:
13
- # continue
14
- # if isinstance(message, HumanMessage):
15
- # result.append({"role": "user", "content": message.content})
16
- # elif isinstance(message, AIMessage):
17
- # result.append({"role": "assistant", "content": message.content})
18
- # print("-" * 100)
19
- # return result
20
-
21
-
22
- # def find_last_bot_message(messages):
23
- # """Находит последнее сообщение бота"""
24
- # for message in messages[::-1]:
25
- # if isinstance(message, AIMessage) and len(message.content) > 0:
26
- # return message.content
27
- # return None
28
-
29
-
30
- # def display_chat_messages():
31
- # """Отображает историю сообщений в чате"""
32
- # for message in st.session_state.messages:
33
- # with st.chat_message(message["role"]):
34
- # st.markdown(message["content"])
35
-
36
-
37
- # def save_broken_case():
38
- # messages_dict = st.session_state.messages
39
- # result_str = ""
40
- # for elem in messages_dict:
41
- # role = elem["role"]
42
- # content = elem["content"]
43
- # result_str += f"{role}: {content}\n"
44
 
45
- # current_datetime = datetime.now()
46
- # formatted_datetime = current_datetime.strftime("%Y-%m-%d %H:%M:%S")
47
-
48
- # # with open("/Users/admin/my_documents/retrieval_part/services/broken_cases.txt", "a") as file:
49
- # # file.write(f"{formatted_datetime}\n" + result_str + "\n" + "-" * 50 + "\n\n")
50
-
51
-
52
- # def handle_user_input():
53
- # """Обрабатывает ввод пользователя и генерирует ответ бота"""
54
- # if prompt := st.chat_input("Введите ваш вопрос"):
55
- # st.session_state.messages.append({"role": "user", "content": prompt})
56
- # if prompt.lower().startswith("log"):
57
- # save_broken_case()
58
- # st.session_state.messages = []
59
- # display_chat_messages()
60
- # else:
61
- # with st.chat_message("user"):
62
- # st.markdown(prompt)
63
 
64
- # try:
65
- # if "bot" not in st.session_state:
66
- # st.session_state.bot = get_graph_class(prompt)
67
- # st.session_state.bot.invoke(prompt)
68
- # except Exception as e:
69
- # st.error(f"Ошибка: {str(e)}")
70
 
71
- # # Извлекаем последнее сообщение бота
72
- # last_bot_message = find_last_bot_message(st.session_state.bot.messages)
73
- # st.session_state.messages.append(
74
- # {"role": "assistant", "content": last_bot_message}
75
- # )
76
- # with st.chat_message("assistant"):
77
- # st.markdown(last_bot_message)
78
 
79
 
80
  def clear_chat():
@@ -96,8 +96,8 @@ def main():
96
  st.session_state.messages = []
97
 
98
  # Отображение чата и обработка ввода
99
- # display_chat_messages()
100
- # handle_user_input()
101
 
102
 
103
  if __name__ == "__main__":
 
4
  from datetime import datetime
5
 
6
 
7
+ def message_to_dict(messages):
8
+ result = []
9
+ for message in messages:
10
+ if isinstance(message, HumanMessage) or isinstance(message, AIMessage):
11
+ print("message:", message.content)
12
+ if message.content == "" or message.content is None:
13
+ continue
14
+ if isinstance(message, HumanMessage):
15
+ result.append({"role": "user", "content": message.content})
16
+ elif isinstance(message, AIMessage):
17
+ result.append({"role": "assistant", "content": message.content})
18
+ print("-" * 100)
19
+ return result
20
+
21
+
22
+ def find_last_bot_message(messages):
23
+ """Находит последнее сообщение бота"""
24
+ for message in messages[::-1]:
25
+ if isinstance(message, AIMessage) and len(message.content) > 0:
26
+ return message.content
27
+ return None
28
+
29
+
30
+ def display_chat_messages():
31
+ """Отображает историю сообщений в чате"""
32
+ for message in st.session_state.messages:
33
+ with st.chat_message(message["role"]):
34
+ st.markdown(message["content"])
35
+
36
+
37
+ def save_broken_case():
38
+ messages_dict = st.session_state.messages
39
+ result_str = ""
40
+ for elem in messages_dict:
41
+ role = elem["role"]
42
+ content = elem["content"]
43
+ result_str += f"{role}: {content}\n"
44
 
45
+ current_datetime = datetime.now()
46
+ formatted_datetime = current_datetime.strftime("%Y-%m-%d %H:%M:%S")
47
+
48
+ # with open("/Users/admin/my_documents/retrieval_part/services/broken_cases.txt", "a") as file:
49
+ # file.write(f"{formatted_datetime}\n" + result_str + "\n" + "-" * 50 + "\n\n")
50
+
51
+
52
+ def handle_user_input():
53
+ """Обрабатывает ввод пользователя и генерирует ответ бота"""
54
+ if prompt := st.chat_input("Введите ваш вопрос"):
55
+ st.session_state.messages.append({"role": "user", "content": prompt})
56
+ if prompt.lower().startswith("log"):
57
+ save_broken_case()
58
+ st.session_state.messages = []
59
+ display_chat_messages()
60
+ else:
61
+ with st.chat_message("user"):
62
+ st.markdown(prompt)
63
 
64
+ try:
65
+ if "bot" not in st.session_state:
66
+ st.session_state.bot = get_graph_class(prompt)
67
+ st.session_state.bot.invoke(prompt)
68
+ except Exception as e:
69
+ st.error(f"Ошибка: {str(e)}")
70
 
71
+ # Извлекаем последнее сообщение бота
72
+ last_bot_message = find_last_bot_message(st.session_state.bot.messages)
73
+ st.session_state.messages.append(
74
+ {"role": "assistant", "content": last_bot_message}
75
+ )
76
+ with st.chat_message("assistant"):
77
+ st.markdown(last_bot_message)
78
 
79
 
80
  def clear_chat():
 
96
  st.session_state.messages = []
97
 
98
  # Отображение чата и обработка ввода
99
+ display_chat_messages()
100
+ handle_user_input()
101
 
102
 
103
  if __name__ == "__main__":