Boris commited on
Commit
2f48f6b
·
1 Parent(s): 0820945
Files changed (2) hide show
  1. app.py +4 -0
  2. src/streamlit_app.py +89 -95
app.py ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ st.title("Моё приложение")
4
+ st.write("Привет, мир!")
src/streamlit_app.py CHANGED
@@ -1,107 +1,101 @@
1
- # import streamlit as st
2
- # from langchain_core.messages import HumanMessage, AIMessage
3
- # 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
- # if "bot" not in st.session_state:
65
- # st.session_state.bot = get_graph_class(prompt)
66
- # st.session_state.bot.invoke(prompt)
67
 
68
- # # Извлекаем последнее сообщение бота
69
- # last_bot_message = find_last_bot_message(st.session_state.bot.messages)
70
- # st.session_state.messages.append(
71
- # {"role": "assistant", "content": last_bot_message}
72
- # )
73
- # with st.chat_message("assistant"):
74
- # st.markdown(last_bot_message)
75
-
76
-
77
- # def clear_chat():
78
- # """Очищает чат и пересоздает бота"""
79
- # st.session_state.messages = []
80
- # del st.session_state.bot
81
 
82
 
83
- # def main():
84
- # """Основная функция приложения"""
85
- # # Заголовок приложения
86
- # st.title("Чат-бот технической поддержки OpenVPN")
87
 
88
- # # Кнопка очистки чата
89
- # if st.button("Clear"):
90
- # clear_chat()
91
 
92
- # if "messages" not in st.session_state:
93
- # st.session_state.messages = []
 
 
94
 
95
- # # Отображение чата и обработка ввода
96
- # display_chat_messages()
97
- # handle_user_input()
98
 
 
 
99
 
100
- # if __name__ == "__main__":
101
- # main()
 
102
 
103
 
104
- import streamlit as st
105
-
106
- st.title("Моё приложение")
107
- st.write("Привет, мир!")
 
1
+ import streamlit as st
2
+ from langchain_core.messages import HumanMessage, AIMessage
3
+ 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
+ if "bot" not in st.session_state:
65
+ st.session_state.bot = get_graph_class(prompt)
66
+ st.session_state.bot.invoke(prompt)
67
 
68
+ # Извлекаем последнее сообщение бота
69
+ last_bot_message = find_last_bot_message(st.session_state.bot.messages)
70
+ st.session_state.messages.append(
71
+ {"role": "assistant", "content": last_bot_message}
72
+ )
73
+ with st.chat_message("assistant"):
74
+ st.markdown(last_bot_message)
 
 
 
 
 
 
75
 
76
 
77
+ def clear_chat():
78
+ """Очищает чат и пересоздает бота"""
79
+ st.session_state.messages = []
80
+ del st.session_state.bot
81
 
 
 
 
82
 
83
+ def main():
84
+ """Основная функция приложения"""
85
+ # Заголовок приложения
86
+ st.title("Чат-бот технической поддержки OpenVPN")
87
 
88
+ # Кнопка очистки чата
89
+ if st.button("Clear"):
90
+ clear_chat()
91
 
92
+ if "messages" not in st.session_state:
93
+ st.session_state.messages = []
94
 
95
+ # Отображение чата и обработка ввода
96
+ display_chat_messages()
97
+ handle_user_input()
98
 
99
 
100
+ if __name__ == "__main__":
101
+ main()