File size: 2,677 Bytes
67219c7
 
 
2d90305
67219c7
 
 
 
 
2d90305
67219c7
 
2d90305
67219c7
 
 
2d90305
 
67219c7
2d90305
67219c7
2d90305
 
 
 
 
67219c7
 
2d90305
67219c7
 
 
 
2d90305
 
67219c7
2d90305
67219c7
 
 
 
 
 
2d90305
67219c7
2d90305
 
67219c7
2d90305
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import streamlit as st
from openai import OpenAI

# Инициализация клиента для DeepSeek
client = OpenAI(
    api_key="sk-a02694cf3c8640c9ae60428ee2c5a62e",  # Замените ключ на свой
    base_url="https://api.deepseek.com"
)

st.set_page_config(page_title="Чат с deepseek-reasoner", layout="centered")
st.title("Чат с deepseek-reasoner")

# Храним историю переписки в Session State
if "messages" not in st.session_state:
    st.session_state["messages"] = []

# Многострочное поле ввода
user_input = st.text_area("Ваш вопрос:", "", height=80)

# Кнопка для отправки
if st.button("Отправить"):
    # Убираем лишние пробелы/переносы
    content = user_input.strip()
    if content:
        # Добавляем пользовательский ввод в историю
        st.session_state["messages"].append({"role": "user", "content": content})

        try:
            # Отправляем всю историю в модель
            response = client.chat.completions.create(
                model="deepseek-reasoner",
                messages=st.session_state["messages"]
            )
            # Извлекаем ответ (важно: используем .content, а не ["content"])
            assistant_message = response.choices[0].message.content

            # Добавляем ответ модели в историю
            st.session_state["messages"].append(
                {"role": "assistant", "content": assistant_message}
            )
        except Exception as e:
            st.error(f"Ошибка при обращении к API: {e}")

# Разделитель
st.write("---")

# Отображаем историю диалога в «пузырьках»
for msg in st.session_state["messages"]:
    if msg["role"] == "user":
        # Синий «пузырь» справа
        st.markdown(
            f"<div style='text-align: right; background-color: #E8F2FF; "
            f"padding: 10px; margin: 5px; border-radius: 10px; "
            f"display: inline-block; max-width: 80%;'>"
            f"{msg['content']}</div>",
            unsafe_allow_html=True
        )
    else:
        # Серый «пузырь» слева (ответ модели)
        st.markdown(
            f"<div style='text-align: left; background-color: #F0F0F0; "
            f"padding: 10px; margin: 5px; border-radius: 10px; "
            f"display: inline-block; max-width: 80%;'>"
            f"{msg['content']}</div>",
            unsafe_allow_html=True
        )