Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from data_loader import load_documents | |
| from chunker import build_chunk_dataset | |
| from rag_pipeline import RAGSystem | |
| # Налаштування сторінки | |
| st.set_page_config(page_title="RAG News System (Groq Edition)", layout="wide") | |
| st.title("RAG System with Groq") | |
| st.markdown(""" | |
| ### Про систему | |
| Це RAG-система, яка відповідає на питання по новинах `ag_news`. | |
| **Powered by Groq** (Llama-3.1) — надшвидка генерація. | |
| """) | |
| # Сайдбар | |
| with st.sidebar: | |
| st.header("Доступ") | |
| # Підказка, де взяти ключ | |
| st.markdown("Потрібен ключ Groq (безкоштовно): [Отримати тут](https://console.groq.com/keys)") | |
| api_key = st.text_input("Введіть Groq API Key (gsk_...):", type="password") | |
| st.divider() | |
| st.header("Пошук") | |
| use_bm25 = st.checkbox("BM25 (Ключові слова)", value=True) | |
| use_dense = st.checkbox("Dense (Семантичний)", value=True) | |
| # Основна частина | |
| query = st.text_input("Ваше запитання (англійською):", placeholder="Example: What are the latest tech trends?") | |
| # Ініціалізація (Load once) | |
| if 'rag' not in st.session_state: | |
| with st.spinner("Завантаження датасету та моделей..."): | |
| # Завантажуємо перші 1000 новин для швидкості | |
| docs = load_documents("ag_news") | |
| chunks = build_chunk_dataset(docs[:1000]) | |
| st.session_state.rag = RAGSystem(chunks) | |
| st.success("Система готова!") | |
| # Кнопка | |
| if st.button("Запитати Groq"): | |
| if not api_key: | |
| st.warning("Будь ласка, введіть API ключ у меню зліва.") | |
| elif not query: | |
| st.warning("Введіть запит.") | |
| else: | |
| with st.spinner("Groq думає..."): | |
| answer, refs = st.session_state.rag.run( | |
| query, | |
| api_key=api_key, | |
| use_bm25=use_bm25, | |
| use_dense=use_dense | |
| ) | |
| col1, col2 = st.columns([2, 1]) | |
| with col1: | |
| st.subheader("Відповідь:") | |
| st.write(answer) | |
| with col2: | |
| st.subheader("Джерела:") | |
| st.text(refs) |