vortex123 commited on
Commit
2d90305
·
verified ·
1 Parent(s): 3c364e3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -14
app.py CHANGED
@@ -1,44 +1,66 @@
1
  import streamlit as st
2
  from openai import OpenAI
3
 
4
- # Инициализация клиента DeepSeek
5
  client = OpenAI(
6
  api_key="sk-a02694cf3c8640c9ae60428ee2c5a62e", # Замените ключ на свой
7
  base_url="https://api.deepseek.com"
8
  )
9
 
 
10
  st.title("Чат с deepseek-reasoner")
11
 
12
- # Храним историю переписки в Session State, чтобы она сохранялась между ререндами
13
  if "messages" not in st.session_state:
14
  st.session_state["messages"] = []
15
 
16
- # Поле ввода для пользователя
17
- user_input = st.text_input("Ваш вопрос:", "")
18
 
19
- # По клику на кнопку отправляем запрос к модели
20
  if st.button("Отправить"):
21
- if user_input.strip():
22
- # Добавляем сообщение пользователя в историю
23
- st.session_state["messages"].append({"role": "user", "content": user_input})
 
 
24
 
25
  try:
26
- # Отправляем весь контекст (историю) модели deepseek-reasoner
27
  response = client.chat.completions.create(
28
  model="deepseek-reasoner",
29
  messages=st.session_state["messages"]
30
  )
31
- assistant_message = response.choices[0].message["content"]
 
32
 
33
- # Сохраняем ответ ассистента в историю
34
  st.session_state["messages"].append(
35
  {"role": "assistant", "content": assistant_message}
36
  )
37
  except Exception as e:
38
  st.error(f"Ошибка при обращении к API: {e}")
39
 
40
- # Выводим чат в формате "Роль: Текст"
41
  st.write("---")
 
 
42
  for msg in st.session_state["messages"]:
43
- role = "Вы" if msg["role"] == "user" else "Модель"
44
- st.markdown(f"**{role}:** {msg['content']}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
  from openai import OpenAI
3
 
4
+ # Инициализация клиента для DeepSeek
5
  client = OpenAI(
6
  api_key="sk-a02694cf3c8640c9ae60428ee2c5a62e", # Замените ключ на свой
7
  base_url="https://api.deepseek.com"
8
  )
9
 
10
+ st.set_page_config(page_title="Чат с deepseek-reasoner", layout="centered")
11
  st.title("Чат с deepseek-reasoner")
12
 
13
+ # Храним историю переписки в Session State
14
  if "messages" not in st.session_state:
15
  st.session_state["messages"] = []
16
 
17
+ # Многострочное поле ввода
18
+ user_input = st.text_area("Ваш вопрос:", "", height=80)
19
 
20
+ # Кнопка для отправки
21
  if st.button("Отправить"):
22
+ # Убираем лишние пробелы/переносы
23
+ content = user_input.strip()
24
+ if content:
25
+ # Добавляем пользовательский ввод в историю
26
+ st.session_state["messages"].append({"role": "user", "content": content})
27
 
28
  try:
29
+ # Отправляем всю историю в модель
30
  response = client.chat.completions.create(
31
  model="deepseek-reasoner",
32
  messages=st.session_state["messages"]
33
  )
34
+ # Извлекаем ответ (важно: используем .content, а не ["content"])
35
+ assistant_message = response.choices[0].message.content
36
 
37
+ # Добавляем ответ модели в историю
38
  st.session_state["messages"].append(
39
  {"role": "assistant", "content": assistant_message}
40
  )
41
  except Exception as e:
42
  st.error(f"Ошибка при обращении к API: {e}")
43
 
44
+ # Разделитель
45
  st.write("---")
46
+
47
+ # Отображаем историю диалога в «пузырьках»
48
  for msg in st.session_state["messages"]:
49
+ if msg["role"] == "user":
50
+ # Синий «пузырь» справа
51
+ st.markdown(
52
+ f"<div style='text-align: right; background-color: #E8F2FF; "
53
+ f"padding: 10px; margin: 5px; border-radius: 10px; "
54
+ f"display: inline-block; max-width: 80%;'>"
55
+ f"{msg['content']}</div>",
56
+ unsafe_allow_html=True
57
+ )
58
+ else:
59
+ # Серый «пузырь» слева (ответ модели)
60
+ st.markdown(
61
+ f"<div style='text-align: left; background-color: #F0F0F0; "
62
+ f"padding: 10px; margin: 5px; border-radius: 10px; "
63
+ f"display: inline-block; max-width: 80%;'>"
64
+ f"{msg['content']}</div>",
65
+ unsafe_allow_html=True
66
+ )