DeepSeek / app.py
vortex123's picture
Update app.py
2d90305 verified
raw
history blame
2.68 kB
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
)