Spaces:
Paused
Paused
Update app.py
Browse files
app.py
CHANGED
|
@@ -20,12 +20,15 @@ if 'openai_api_key' not in st.session_state:
|
|
| 20 |
st.session_state.openai_api_key = st.sidebar.text_input("Enter your OpenAI API Key:", type="password",
|
| 21 |
value=st.session_state.openai_api_key)
|
| 22 |
|
| 23 |
-
# Initialize session state for messages
|
| 24 |
if "messages" not in st.session_state:
|
| 25 |
st.session_state.messages = [
|
| 26 |
{"role": "assistant", "content": "Ask me a question about the documents you uploaded!"}
|
| 27 |
]
|
| 28 |
|
|
|
|
|
|
|
|
|
|
| 29 |
# Function to read PDF files
|
| 30 |
def read_pdf(file):
|
| 31 |
with pdfplumber.open(file) as pdf:
|
|
@@ -64,7 +67,11 @@ def load_data(uploaded_files):
|
|
| 64 |
# Function to save the conversation
|
| 65 |
def save_conversation():
|
| 66 |
with open("conversations.json", "a") as f:
|
| 67 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 68 |
f.write("\n")
|
| 69 |
|
| 70 |
# Function to load previous conversations
|
|
@@ -88,6 +95,8 @@ def delete_selected_conversations(selected_indices):
|
|
| 88 |
uploaded_files = st.file_uploader("Upload PDF or DOCX files", type=["pdf", "docx"], accept_multiple_files=True)
|
| 89 |
|
| 90 |
if uploaded_files and st.session_state.openai_api_key:
|
|
|
|
|
|
|
| 91 |
index = load_data(uploaded_files)
|
| 92 |
chat_engine = index.as_chat_engine(chat_mode="condense_question", verbose=True)
|
| 93 |
|
|
@@ -146,8 +155,9 @@ if st.session_state.show_conversations:
|
|
| 146 |
selected_indices = []
|
| 147 |
for i, conv in enumerate(conversations):
|
| 148 |
st.sidebar.write(f"Conversation {i + 1}:")
|
| 149 |
-
for message in conv:
|
| 150 |
st.sidebar.write(f"{message['role']}: {message['content']}")
|
|
|
|
| 151 |
# Checkbox for selecting conversation to delete
|
| 152 |
if st.sidebar.checkbox(f"Select Conversation {i + 1} for Deletion", key=f"delete_checkbox_{i}"):
|
| 153 |
selected_indices.append(i)
|
|
@@ -155,7 +165,7 @@ if st.session_state.show_conversations:
|
|
| 155 |
if st.sidebar.button("Delete Selected Conversations"):
|
| 156 |
if selected_indices:
|
| 157 |
delete_selected_conversations(selected_indices)
|
| 158 |
-
st.success("Selected conversations deleted. Please
|
| 159 |
st.session_state.messages = [] # Optional: reset messages for a fresh start
|
| 160 |
|
| 161 |
else:
|
|
|
|
| 20 |
st.session_state.openai_api_key = st.sidebar.text_input("Enter your OpenAI API Key:", type="password",
|
| 21 |
value=st.session_state.openai_api_key)
|
| 22 |
|
| 23 |
+
# Initialize session state for messages and uploaded files
|
| 24 |
if "messages" not in st.session_state:
|
| 25 |
st.session_state.messages = [
|
| 26 |
{"role": "assistant", "content": "Ask me a question about the documents you uploaded!"}
|
| 27 |
]
|
| 28 |
|
| 29 |
+
if 'uploaded_file_names' not in st.session_state:
|
| 30 |
+
st.session_state.uploaded_file_names = []
|
| 31 |
+
|
| 32 |
# Function to read PDF files
|
| 33 |
def read_pdf(file):
|
| 34 |
with pdfplumber.open(file) as pdf:
|
|
|
|
| 67 |
# Function to save the conversation
|
| 68 |
def save_conversation():
|
| 69 |
with open("conversations.json", "a") as f:
|
| 70 |
+
conversation_data = {
|
| 71 |
+
"messages": st.session_state.messages,
|
| 72 |
+
"file_names": st.session_state.uploaded_file_names
|
| 73 |
+
}
|
| 74 |
+
json.dump(conversation_data, f)
|
| 75 |
f.write("\n")
|
| 76 |
|
| 77 |
# Function to load previous conversations
|
|
|
|
| 95 |
uploaded_files = st.file_uploader("Upload PDF or DOCX files", type=["pdf", "docx"], accept_multiple_files=True)
|
| 96 |
|
| 97 |
if uploaded_files and st.session_state.openai_api_key:
|
| 98 |
+
# Store the names of the uploaded files
|
| 99 |
+
st.session_state.uploaded_file_names = [uploaded_file.name for uploaded_file in uploaded_files]
|
| 100 |
index = load_data(uploaded_files)
|
| 101 |
chat_engine = index.as_chat_engine(chat_mode="condense_question", verbose=True)
|
| 102 |
|
|
|
|
| 155 |
selected_indices = []
|
| 156 |
for i, conv in enumerate(conversations):
|
| 157 |
st.sidebar.write(f"Conversation {i + 1}:")
|
| 158 |
+
for message in conv['messages']:
|
| 159 |
st.sidebar.write(f"{message['role']}: {message['content']}")
|
| 160 |
+
st.sidebar.write(f"Files: {', '.join(conv['file_names'])}")
|
| 161 |
# Checkbox for selecting conversation to delete
|
| 162 |
if st.sidebar.checkbox(f"Select Conversation {i + 1} for Deletion", key=f"delete_checkbox_{i}"):
|
| 163 |
selected_indices.append(i)
|
|
|
|
| 165 |
if st.sidebar.button("Delete Selected Conversations"):
|
| 166 |
if selected_indices:
|
| 167 |
delete_selected_conversations(selected_indices)
|
| 168 |
+
st.success("Selected conversations deleted. Please refresh to see the effect!")
|
| 169 |
st.session_state.messages = [] # Optional: reset messages for a fresh start
|
| 170 |
|
| 171 |
else:
|