Serg4451D commited on
Commit
2f71b8a
·
verified ·
1 Parent(s): d882819

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +79 -12
app.py CHANGED
@@ -1,8 +1,52 @@
1
  import streamlit as st
2
  from g4f.client import Client
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
  # Инициализация клиента
5
- client = Client()
 
 
 
 
6
 
7
  # Функция для получения ответа от GPT
8
  def get_gpt_response(messages):
@@ -12,9 +56,6 @@ def get_gpt_response(messages):
12
  )
13
  return response.choices[0].message.content
14
 
15
- # Заголовок приложения
16
- st.title("Чат с GPT")
17
-
18
  # Инициализация состояния для хранения сообщений
19
  if 'messages' not in st.session_state:
20
  st.session_state.messages = []
@@ -23,34 +64,60 @@ if 'messages' not in st.session_state:
23
  def display_messages():
24
  for msg in st.session_state.messages:
25
  if msg['role'] == 'user':
26
- st.markdown(f"<div style='text-align: right; color: blue;'><b>Вы:</b> {msg['content']}</div>", unsafe_allow_html=True)
 
 
 
 
 
 
 
27
  else:
28
- st.markdown(f"<div style='text-align: left; color: green;'><b>GPT:</b> {msg['content']}</div>", unsafe_allow_html=True)
 
 
 
 
 
 
 
 
 
 
29
 
30
  # Отображение предыдущих сообщений
31
- st.header("История сообщений")
32
  display_messages()
33
 
34
  # Поле ввода для нового сообщения
35
  user_input = st.text_input("Введите ваше сообщение:", key="input")
36
 
 
 
 
37
  # Обработка отправки сообщения
38
- if st.button("Отправить"):
39
  if user_input:
40
  # Сохранение сообщения пользователя
41
  st.session_state.messages.append({"role": "user", "content": user_input})
42
 
43
- # Получение ответа от GPT
44
- gpt_response = get_gpt_response(st.session_state.messages)
 
45
 
46
  # Сохранение ответа GPT
47
  st.session_state.messages.append({"role": "assistant", "content": gpt_response})
48
 
49
  # Очистка поля ввода
50
  st.session_state.input = ""
 
 
 
51
 
52
  # Кнопка для сброса чата
53
- if st.button("Сбросить чат"):
54
  st.session_state.messages = []
55
  st.session_state.input = ""
56
-
 
 
 
 
1
  import streamlit as st
2
  from g4f.client import Client
3
+ import time
4
+
5
+ # Настройка страницы
6
+ st.set_page_config(page_title="Чат с GPT", page_icon="🤖", layout="wide")
7
+
8
+ # Стили CSS
9
+ st.markdown("""
10
+ <style>
11
+ .stTextInput > div > div > input {
12
+ background-color: #f0f2f6;
13
+ }
14
+ .stButton > button {
15
+ width: 100%;
16
+ border-radius: 20px;
17
+ }
18
+ .chat-message {
19
+ padding: 1.5rem; border-radius: 0.5rem; margin-bottom: 1rem; display: flex
20
+ }
21
+ .chat-message.user {
22
+ background-color: #2b313e
23
+ }
24
+ .chat-message.bot {
25
+ background-color: #475063
26
+ }
27
+ .chat-message .avatar {
28
+ width: 20%;
29
+ }
30
+ .chat-message .avatar img {
31
+ max-width: 78px;
32
+ max-height: 78px;
33
+ border-radius: 50%;
34
+ object-fit: cover;
35
+ }
36
+ .chat-message .message {
37
+ width: 80%;
38
+ padding: 0 1.5rem;
39
+ color: #fff;
40
+ }
41
+ </style>
42
+ """, unsafe_allow_html=True)
43
 
44
  # Инициализация клиента
45
+ @st.cache_resource
46
+ def get_client():
47
+ return Client()
48
+
49
+ client = get_client()
50
 
51
  # Функция для получения ответа от GPT
52
  def get_gpt_response(messages):
 
56
  )
57
  return response.choices[0].message.content
58
 
 
 
 
59
  # Инициализация состояния для хранения сообщений
60
  if 'messages' not in st.session_state:
61
  st.session_state.messages = []
 
64
  def display_messages():
65
  for msg in st.session_state.messages:
66
  if msg['role'] == 'user':
67
+ st.markdown(f"""
68
+ <div class="chat-message user">
69
+ <div class="avatar">
70
+ <img src="https://i.imgur.com/Yx5c8e1.png">
71
+ </div>
72
+ <div class="message">{msg['content']}</div>
73
+ </div>
74
+ """, unsafe_allow_html=True)
75
  else:
76
+ st.markdown(f"""
77
+ <div class="chat-message bot">
78
+ <div class="avatar">
79
+ <img src="https://i.imgur.com/nGF1K8f.jpg">
80
+ </div>
81
+ <div class="message">{msg['content']}</div>
82
+ </div>
83
+ """, unsafe_allow_html=True)
84
+
85
+ # Заголовок приложения
86
+ st.title("🤖 Чат с GPT")
87
 
88
  # Отображение предыдущих сообщений
 
89
  display_messages()
90
 
91
  # Поле ввода для нового сообщения
92
  user_input = st.text_input("Введите ваше сообщение:", key="input")
93
 
94
+ # Создание двух колонок для кнопок
95
+ col1, col2 = st.columns(2)
96
+
97
  # Обработка отправки сообщения
98
+ if col1.button("Отправить"):
99
  if user_input:
100
  # Сохранение сообщения пользователя
101
  st.session_state.messages.append({"role": "user", "content": user_input})
102
 
103
+ with st.spinner('GPT обрабатывает ваш запрос...'):
104
+ # Получение ответа от GPT
105
+ gpt_response = get_gpt_response(st.session_state.messages)
106
 
107
  # Сохранение ответа GPT
108
  st.session_state.messages.append({"role": "assistant", "content": gpt_response})
109
 
110
  # Очистка поля ввода
111
  st.session_state.input = ""
112
+
113
+ # Перезагрузка страницы для отображения нового сообщения
114
+ st.experimental_rerun()
115
 
116
  # Кнопка для сброса чата
117
+ if col2.button("Сбросить чат"):
118
  st.session_state.messages = []
119
  st.session_state.input = ""
120
+ st.experimental_rerun()
121
+
122
+ # Добавление пространства внизу страницы
123
+ st.markdown("<br><br>", unsafe_allow_html=True)