Abobasnik commited on
Commit
135dce9
·
verified ·
1 Parent(s): 3cee8c7

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +48 -29
src/streamlit_app.py CHANGED
@@ -1,35 +1,54 @@
1
  import streamlit as st
2
  from transformers import pipeline
 
3
 
4
- # 1. Настройка внешнего вида сайта
5
- st.set_page_config(page_title="HiperAI", page_icon="🤖")
6
- st.title("HiperAI — Моя личная нейросеть")
7
- st.markdown("---")
8
 
9
- # 2. Загрузка модели (кешируем, чтобы не грузить при каждом клике)
 
 
 
 
 
 
 
 
 
 
10
  @st.cache_resource
11
  def load_model():
12
- # Используем TinyLlama — она идеально подходит для бесплатного хостинга
13
- return pipeline("text-generation", model="TinyLlama/TinyLlama-1.1B-Chat-v1.0", device_map="auto")
14
-
15
- with st.spinner('Загрузка мозгов ИИ...'):
16
- generator = load_model()
17
-
18
- # 3. Поле ввода
19
- user_input = st.text_input("Напиши сообщение своему ИИ (лучше на английском):", placeholder="Hello, who are you?")
20
-
21
- if user_input:
22
- with st.spinner('HiperAI думает...'):
23
- # Настройка генерации: max_new_tokens — длина ответа, temperature — креативность
24
- result = generator(user_input, max_new_tokens=100, do_sample=True, temperature=0.7)
25
-
26
- # Вырезаем ответ (убираем сам вопрос из начала текста)
27
- full_text = result[0]['generated_text']
28
- answer = full_text.replace(user_input, "").strip()
29
-
30
- # Вывод на экран
31
- st.write("### Ответ:")
32
- st.info(answer if answer else "ИИ задумался и ничего не выдал. Попробуй еще раз!")
33
-
34
- st.markdown("---")
35
- st.caption("Работает локально на Hugging Face Spaces без использования внешних API.")
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
  from transformers import pipeline
3
+ import torch
4
 
5
+ # Настройка страницы
6
+ st.set_page_config(page_title="HiperAI Pro", page_icon="🧠", layout="centered")
 
 
7
 
8
+ # Кастомный CSS для красоты
9
+ st.markdown("""
10
+ <style>
11
+ .main { background-color: #0e1117; }
12
+ .stChatMessage { border-radius: 15px; padding: 10px; margin-bottom: 10px; }
13
+ </style>
14
+ """, unsafe_allow_input_with_html=True)
15
+
16
+ st.title("🚀 HiperAI: Твой личный ИИ")
17
+
18
+ # Загрузка модели (Qwen2.5 — одна из лучших маленьких моделей для русского языка)
19
  @st.cache_resource
20
  def load_model():
21
+ model_id = "Qwen/Qwen2.5-1.5B-Instruct"
22
+ return pipeline("text-generation", model=model_id, device_map="auto", torch_dtype="auto")
23
+
24
+ generator = load_model()
25
+
26
+ # Инициализация истории чата
27
+ if "messages" not in st.session_state:
28
+ st.session_state.messages = []
29
+
30
+ # Отображение истории чата
31
+ for message in st.session_state.messages:
32
+ with st.chat_message(message["role"]):
33
+ st.markdown(message["content"])
34
+
35
+ # Поле ввода
36
+ if prompt := st.chat_input("Спроси меня о чем угодно..."):
37
+ # Добавляем сообщение пользователя в историю
38
+ st.session_state.messages.append({"role": "user", "content": prompt})
39
+ with st.chat_message("user"):
40
+ st.markdown(prompt)
41
+
42
+ # Ответ ИИ
43
+ with st.chat_message("assistant"):
44
+ with st.spinner("Думаю..."):
45
+ # Формируем промпт для диалога
46
+ messages = [{"role": "user", "content": prompt}]
47
+
48
+ # Генерация
49
+ output = generator(messages, max_new_tokens=512, do_sample=True, temperature=0.7)
50
+ response = output[0]['generated_text'][-1]['content']
51
+
52
+ st.markdown(response)
53
+ st.session_state.messages.append({"role": "assistant", "content": response})
54
+