SuHoU commited on
Commit
52d0c85
·
verified ·
1 Parent(s): 92efef2

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +31 -5
src/streamlit_app.py CHANGED
@@ -1,6 +1,5 @@
1
- # app.py
2
  import streamlit as st
3
- from rag import rag_chain # импортируем цепочку из rag.py
4
 
5
  st.set_page_config(page_title="Поиск фильмов", layout="centered")
6
  st.title("🎬 RAG-поиск по фильмам")
@@ -12,15 +11,42 @@ if "messages" not in st.session_state:
12
  # Отображение истории
13
  for msg in st.session_state.messages:
14
  st.chat_message(msg["role"]).write(msg["content"])
 
 
 
 
 
15
 
16
  # Ввод пользователя
17
  if prompt := st.chat_input("Например: 'Порекомендуй фильм про космос'"):
18
  st.session_state.messages.append({"role": "user", "content": prompt})
19
  st.chat_message("user").write(prompt)
20
 
 
 
 
 
 
 
 
 
 
 
21
  # Генерация ответа
22
  with st.spinner("Ищу фильмы..."):
23
  response = rag_chain.invoke(prompt)
24
-
25
- st.session_state.messages.append({"role": "assistant", "content": response})
26
- st.chat_message("assistant").write(response)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
+ from rag import rag_chain, retriever # ← добавьте экспорт retriever из rag.py
3
 
4
  st.set_page_config(page_title="Поиск фильмов", layout="centered")
5
  st.title("🎬 RAG-поиск по фильмам")
 
11
  # Отображение истории
12
  for msg in st.session_state.messages:
13
  st.chat_message(msg["role"]).write(msg["content"])
14
+ if "posters" in msg:
15
+ cols = st.columns(min(5, len(msg["posters"])))
16
+ for i, url in enumerate(msg["posters"]):
17
+ if url:
18
+ cols[i % len(cols)].image(url, width=130)
19
 
20
  # Ввод пользователя
21
  if prompt := st.chat_input("Например: 'Порекомендуй фильм про космос'"):
22
  st.session_state.messages.append({"role": "user", "content": prompt})
23
  st.chat_message("user").write(prompt)
24
 
25
+ # Получаем документы ДО генерации ответа (чтобы показать те же фильмы, что использовал LLM)
26
+ docs = retriever.invoke(prompt)
27
+
28
+ # Извлекаем poster_url из метаданных
29
+ posters = [
30
+ doc.metadata.get("poster_url", "")
31
+ for doc in docs
32
+ if doc.metadata.get("poster_url")
33
+ ]
34
+
35
  # Генерация ответа
36
  with st.spinner("Ищу фильмы..."):
37
  response = rag_chain.invoke(prompt)
38
+
39
+ # Сохраняем в историю с постерами
40
+ st.session_state.messages.append({
41
+ "role": "assistant",
42
+ "content": response,
43
+ "posters": posters
44
+ })
45
+
46
+ # Вывод ответа и постеров
47
+ st.chat_message("assistant").write(response)
48
+ if posters:
49
+ st.write("##### 🎞️ Найденные фильмы:")
50
+ cols = st.columns(min(5, len(posters)))
51
+ for i, url in enumerate(posters):
52
+ cols[i % len(cols)].image(url, width=130)