Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -20,15 +20,12 @@ 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 |
-
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,23 +64,14 @@ def load_data(uploaded_files):
|
|
67 |
# Function to save the conversation
|
68 |
def save_conversation():
|
69 |
with open("conversations.json", "a") as f:
|
70 |
-
|
71 |
-
|
72 |
-
"file_names": st.session_state.uploaded_file_names
|
73 |
-
}
|
74 |
-
if isinstance(conversation_data, dict):
|
75 |
-
json.dump(conversation_data, f)
|
76 |
-
f.write("\n")
|
77 |
|
78 |
# Function to load previous conversations
|
79 |
def load_conversations():
|
80 |
if os.path.exists("conversations.json"):
|
81 |
with open("conversations.json", "r") as f:
|
82 |
conversations = [json.loads(line) for line in f]
|
83 |
-
# Ensure each conversation is a dictionary
|
84 |
-
for conv in conversations:
|
85 |
-
if not isinstance(conv, dict):
|
86 |
-
print("Warning: Loaded conversation is not a dictionary:", conv)
|
87 |
return conversations
|
88 |
return []
|
89 |
|
@@ -100,8 +88,6 @@ def delete_selected_conversations(selected_indices):
|
|
100 |
uploaded_files = st.file_uploader("Upload PDF or DOCX files", type=["pdf", "docx"], accept_multiple_files=True)
|
101 |
|
102 |
if uploaded_files and st.session_state.openai_api_key:
|
103 |
-
# Store the names of the uploaded files
|
104 |
-
st.session_state.uploaded_file_names = [uploaded_file.name for uploaded_file in uploaded_files]
|
105 |
index = load_data(uploaded_files)
|
106 |
chat_engine = index.as_chat_engine(chat_mode="condense_question", verbose=True)
|
107 |
|
@@ -159,21 +145,17 @@ if st.session_state.show_conversations:
|
|
159 |
if conversations:
|
160 |
selected_indices = []
|
161 |
for i, conv in enumerate(conversations):
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
if st.sidebar.checkbox(f"Select Conversation {i + 1} for Deletion", key=f"delete_checkbox_{i}"):
|
169 |
-
selected_indices.append(i)
|
170 |
-
else:
|
171 |
-
print("Warning: Encountered a non-dictionary conversation:", conv)
|
172 |
|
173 |
if st.sidebar.button("Delete Selected Conversations"):
|
174 |
if selected_indices:
|
175 |
delete_selected_conversations(selected_indices)
|
176 |
-
st.success("Selected conversations deleted. Please
|
177 |
st.session_state.messages = [] # Optional: reset messages for a fresh start
|
178 |
|
179 |
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
|
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 |
# Function to save the conversation
|
65 |
def save_conversation():
|
66 |
with open("conversations.json", "a") as f:
|
67 |
+
json.dump(st.session_state.messages, f)
|
68 |
+
f.write("\n")
|
|
|
|
|
|
|
|
|
|
|
69 |
|
70 |
# Function to load previous conversations
|
71 |
def load_conversations():
|
72 |
if os.path.exists("conversations.json"):
|
73 |
with open("conversations.json", "r") as f:
|
74 |
conversations = [json.loads(line) for line in f]
|
|
|
|
|
|
|
|
|
75 |
return conversations
|
76 |
return []
|
77 |
|
|
|
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 |
|
|
|
145 |
if 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)
|
|
|
|
|
|
|
|
|
154 |
|
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 Refresh to See the Effect!")
|
159 |
st.session_state.messages = [] # Optional: reset messages for a fresh start
|
160 |
|
161 |
else:
|