Spaces:
Sleeping
Sleeping
import streamlit as st | |
from streamlit import session_state as ss | |
from langchain.memory import ConversationBufferWindowMemory, StreamlitChatMessageHistory | |
from streamlit_pdf_viewer import pdf_viewer | |
from utils.qa import chain | |
def get_answer(query): | |
response = chain.invoke(query) | |
return response['result'] | |
def pdf_v(): | |
# Declare variable. | |
if 'pdf_ref' not in ss: | |
ss.pdf_ref = None | |
# Access the uploaded ref via a key. | |
st.file_uploader("Upload PDF file", type=('pdf'), key='pdf') | |
if ss.pdf: | |
ss.pdf_ref = ss.pdf # backup | |
# Now you can access "pdf_ref" anywhere in your app. | |
if ss.pdf_ref: | |
binary_data = ss.pdf_ref.getvalue() | |
pdf_viewer(input=binary_data, width=700) | |
memory_storage = StreamlitChatMessageHistory(key="chat_messages") | |
memory = ConversationBufferWindowMemory(memory_key="chat_history", human_prefix="User", chat_memory=memory_storage, k=3) | |
for i, msg in enumerate(memory_storage.messages): | |
name = "user" if i % 2 == 0 else "assistant" | |
st.chat_message(name).markdown(msg.content) | |
if user_input := st.chat_input("User Input"): | |
with st.chat_message("user"): | |
st.markdown(user_input) | |
with st.spinner("Generating Response..."): | |
with st.chat_message("assistant"): | |
response = get_answer(user_input) | |
answer = response | |
st.markdown(answer) | |