shukdevdatta123 commited on
Commit
164707b
·
verified ·
1 Parent(s): 674ba17

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -28
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 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,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
- conversation_data = {
71
- "messages": st.session_state.messages,
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
- if isinstance(conv, dict): # Ensure conv is a dictionary
163
- st.sidebar.write(f"Conversation {i + 1}:")
164
- for message in conv.get('messages', []): # Use get safely
165
- st.sidebar.write(f"{message['role']}: {message['content']}")
166
- st.sidebar.write(f"Files: {', '.join(conv.get('file_names', []))}")
167
- # Checkbox for selecting conversation to delete
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 refresh to see the effect!")
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: