Spaces:
Paused
Paused
| import streamlit as st | |
| from RAG import get_retriever_links, RAG_with_memory | |
| # In re-write query prompt, could try and get the AI to re-write the query in a more google-search like fashion | |
| # Ex. Instead of "tell me more about the moon landing" say "moon landing" | |
| st.title("RAG Web Search") | |
| # Initialize chat history | |
| if "messages" not in st.session_state: | |
| st.session_state.messages = [] | |
| # Display chat messages from history on app rerun | |
| for message in st.session_state.messages: | |
| with st.chat_message(message["role"]): | |
| st.markdown(message["content"]) | |
| # React to user input | |
| if prompt := st.chat_input("What's up?"): | |
| # Display user message in chat message container | |
| st.chat_message("user").markdown(prompt) | |
| # Add user message to chat history | |
| st.session_state.messages.append({"role": "user", "content": prompt}) | |
| rag_llm = RAG_with_memory() | |
| if len(st.session_state.messages) > 2: | |
| print("Rewriting query") | |
| rag_llm.load_history(st.session_state.messages) | |
| print(rag_llm.history) | |
| prompt = rag_llm.rewrite_query(prompt) | |
| retriever, sources = get_retriever_links(prompt, "./api_keys.json") | |
| rag_llm.add_retriever(retriever) | |
| response = rag_llm.generate(prompt) | |
| # Display assistant response in chat message container | |
| with st.chat_message("assistant"): | |
| st.markdown(response) | |
| # Add assistant response to chat history | |
| st.session_state.messages.append({"role": "assistant", "content": response}) | |
| display_sources = [ | |
| dict( | |
| title=s["title"], | |
| link=s["link"], | |
| snippet=s["snippet"] | |
| ) for s in sources | |
| ] | |
| st.json({ | |
| "LLM Query:" : prompt, | |
| "Sources" : display_sources | |
| }, expanded=False) |