Download app.py from pxdelta/RAG: direct link, hf CLI and curl.
- Browser
- Download file 4.47 kB
-
https://huggingface.co/spaces/pxdelta/RAG/resolve/2322128c405e7d08c98477ab7240df8a637833fb/app.py
- Command line
-
hf download hf://spaces/pxdelta/RAG@2322128c405e7d08c98477ab7240df8a637833fb/app.py
-
curl -L -o app.py https://huggingface.co/spaces/pxdelta/RAG/resolve/2322128c405e7d08c98477ab7240df8a637833fb/app.py
4.47 kB
| """ | |
| Intelligent Knowledge Retrieval System - Minimal Frontend | |
| """ | |
| import streamlit as st | |
| import time | |
| # ============================================ | |
| # MOCK BACKEND (wird später ersetzt) | |
| # ============================================ | |
| def query_rag_pipeline(user_query: str) -> dict: | |
| mock_response = { | |
| "answer": f" Das ist eine Test-Antwort auf deine Frage: '{user_query}'\n\n", | |
| "sources": [ | |
| {"id": 1, "title": "Mock-Dokument 1", "relevance": 0.95}, | |
| {"id": 2, "title": "Mock-Dokument 2", "relevance": 0.87}, | |
| {"id": 3, "title": "Mock-Dokument 3", "relevance": 0.76} | |
| ], | |
| "processing_time": 0.5 | |
| } | |
| return mock_response | |
| # ============================================ | |
| # HAUPTANWENDUNG | |
| # ============================================ | |
| def main(): | |
| st.set_page_config( | |
| page_title="Knowledge Retrieval System", | |
| page_icon="🤖", | |
| layout="centered" | |
| ) | |
| # Header | |
| st.title("🤖 Intelligent Knowledge Retrieval System") | |
| st.markdown("Stelle Fragen in natürlicher Sprache - das System durchsucht die Wissensdatenbank und generiert eine Antwort.") | |
| st.markdown("---") | |
| # Chat-Historie initialisieren | |
| if "messages" not in st.session_state: | |
| st.session_state.messages = [] | |
| # Willkommensnachricht | |
| st.session_state.messages.append({ | |
| "role": "assistant", | |
| "content": "Hallo! Ich kann dir bei Fragen zu unserer Wissensdatenbank helfen. Was möchtest du wissen?" | |
| }) | |
| # Chat-Historie anzeigen | |
| for message in st.session_state.messages: | |
| with st.chat_message(message["role"]): | |
| st.write(message["content"]) | |
| # Zeige Quellen wenn vorhanden | |
| if message.get("sources"): | |
| with st.expander("📚 Verwendete Quellen"): | |
| for source in message["sources"]: | |
| relevance_percent = source["relevance"] * 100 | |
| st.write(f"• {source['title']} (Relevanz: {relevance_percent:.0f}%)") | |
| # Chat-Eingabe | |
| if prompt := st.chat_input("Stelle eine Frage..."): | |
| # Benutzer-Nachricht hinzufügen und anzeigen | |
| st.session_state.messages.append({"role": "user", "content": prompt}) | |
| with st.chat_message("user"): | |
| st.write(prompt) | |
| # RAG-Antwort generieren | |
| with st.chat_message("assistant"): | |
| with st.spinner("Durchsuche Datenbank und generiere Antwort..."): | |
| # RAG Pipeline aufrufen | |
| response = query_rag_pipeline(prompt) | |
| # Antwort anzeigen | |
| st.write(response["answer"]) | |
| # Antwort in Historie speichern | |
| st.session_state.messages.append({ | |
| "role": "assistant", | |
| "content": response["answer"], | |
| "sources": response.get("sources", []) | |
| }) | |
| # Quellen anzeigen wenn vorhanden | |
| if response.get("sources"): | |
| with st.expander("📚 Verwendete Quellen"): | |
| for source in response["sources"]: | |
| relevance_percent = source["relevance"] * 100 | |
| st.write(f"• {source['title']} (Relevanz: {relevance_percent:.0f}%)") | |
| # Footer mit Info | |
| st.markdown("---") | |
| with st.expander("ℹ️ Für Entwickler"): | |
| st.markdown(""" | |
| **Integration der Backend-Komponenten:** | |
| Ersetzt die Funktion `query_rag_pipeline()` mit eurer echten Implementation: | |
| ```python | |
| def query_rag_pipeline(user_query: str) -> dict: | |
| # 1. Retrieval | |
| documents = database.search(user_query, top_k=5) | |
| # 2. Context erstellen | |
| context = format_documents(documents) | |
| # 3. LLM Generation | |
| answer = llm.generate(user_query, context) | |
| return { | |
| "answer": answer, | |
| "sources": documents | |
| } | |
| ``` | |
| **Erwartete Response-Struktur:** | |
| - `answer`: String mit der generierten Antwort | |
| - `sources`: Liste von Dokumenten (optional) | |
| - `processing_time`: Verarbeitungszeit in Sekunden (optional) | |
| """) | |
| if __name__ == "__main__": | |
| main() |