Spaces:
Sleeping
Sleeping
File size: 2,948 Bytes
a22752c d7be5ca a22752c d7be5ca 80d600f d7be5ca 4b3df4c d7be5ca 80d600f 4b3df4c 80d600f d7be5ca 4b3df4c d7be5ca 80d600f 4b3df4c d7be5ca 4b3df4c d7be5ca 4b3df4c |
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 68 69 70 71 72 73 74 75 76 77 |
import streamlit as st
from transformers import pipeline
import time
# Настройки для экономии памяти
MAX_LENGTH = 200
MODEL_NAME = "sberbank-ai/rugpt3small_based_on_gpt2"
st.set_page_config(page_title="Магистратура Помощник")
st.title("🎓 Помощник по вопросам магистратуры")
st.write("Задайте вопрос о поступлении или обучении в магистратуре")
# Кешируем загрузку модели
@st.cache_resource(show_spinner=False)
def load_model():
with st.spinner("Загружаем модель... Это займет около 30 секунд"):
return pipeline(
"text-generation",
model=MODEL_NAME,
device_map="auto"
)
generator = load_model()
# История диалога
if "history" not in st.session_state:
st.session_state.history = []
# Функция генерации ответа
def generate_answer(question):
prompt = f"Вопрос о магистратуре: {question}\nОтвет:"
try:
result = generator(
prompt,
max_length=MAX_LENGTH,
num_return_sequences=1,
temperature=0.7,
repetition_penalty=1.2,
pad_token_id=50256
)
return result[0]['generated_text'].split("Ответ:")[-1].strip()
except Exception as e:
return f"Ошибка: {str(e)}"
# Форма ввода
with st.form("question_form"):
user_input = st.text_input("Ваш вопрос:", placeholder="Что нужно для поступления?")
submit_button = st.form_submit_button("Спросить")
# Обработка вопроса
if submit_button and user_input:
with st.spinner("Генерируем ответ..."):
start_time = time.time()
response = generate_answer(user_input)
st.session_state.history.append((user_input, response))
# Очищаем поле ввода после отправки
st.rerun()
# Показываем историю диалога
for i, (question, answer) in enumerate(st.session_state.history[::-1]):
st.divider()
st.subheader(f"❓ {question}")
st.write(f"💡 {answer}")
# Информация о модели
st.sidebar.markdown("""
### О приложении
Использует русскоязычную модель [rugpt3small](https://huggingface.co/sberbank-ai/rugpt3small_based_on_gpt2) для ответов на вопросы о магистратуре.
**Примеры вопросов:**
- Какие документы нужны для поступления?
- Сколько длится обучение?
- Чем магистратура отличается от бакалавриата?
- Какие есть направления?
- Есть ли бюджетные места?
""") |