Zenne commited on
Commit
d55b8b8
1 Parent(s): 478194b

added history in json

Browse files

Record the chat history in a json file, named based on the pinecone index or chroma collection name

Files changed (2) hide show
  1. app.py +23 -3
  2. chat_history/empty_chat_hist.json +0 -0
app.py CHANGED
@@ -14,7 +14,7 @@ import langchain
14
  import pinecone
15
  import streamlit as st
16
  import shutil
17
-
18
 
19
  OPENAI_API_KEY = ''
20
  PINECONE_API_KEY = ''
@@ -52,7 +52,6 @@ def save_file(files):
52
  shutil.copyfileobj(file, f)
53
 
54
 
55
- @st.cache_data()
56
  def load_files():
57
  all_texts = []
58
  n_files = 0
@@ -142,6 +141,20 @@ def setup_em_llm(OPENAI_API_KEY, temperature):
142
  return embeddings, llm
143
 
144
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
145
  pinecone_index_name, chroma_collection_name, persist_directory, docsearch_ready, directory_name = init()
146
 
147
 
@@ -179,6 +192,7 @@ def main(pinecone_index_name, chroma_collection_name, persist_directory, docsear
179
  persist_directory = "./vectorstore"
180
 
181
  if pinecone_index_name or chroma_collection_name:
 
182
  if r_ingest.lower() == 'yes':
183
  files = st.file_uploader(
184
  'Upload Files', accept_multiple_files=True)
@@ -207,12 +221,18 @@ def main(pinecone_index_name, chroma_collection_name, persist_directory, docsear
207
  placeholder='Summarize the context.')
208
  if query:
209
  # Generate a reply based on the user input and chat history
 
 
 
 
210
  reply, source = get_response(query, chat_history, CRqa)
211
  # Update the chat history with the user input and system response
212
  chat_history.append(('User', query))
213
  chat_history.append(('Bot', reply))
 
 
214
  chat_history_str = '\n'.join(
215
- [f'{x[0]}: {x[1]}' for x in chat_history])
216
  st.text_area('Chat record:', value=chat_history_str, height=250)
217
  # Display sources
218
  for i, source_i in enumerate(source):
 
14
  import pinecone
15
  import streamlit as st
16
  import shutil
17
+ import json
18
 
19
  OPENAI_API_KEY = ''
20
  PINECONE_API_KEY = ''
 
52
  shutil.copyfileobj(file, f)
53
 
54
 
 
55
  def load_files():
56
  all_texts = []
57
  n_files = 0
 
141
  return embeddings, llm
142
 
143
 
144
+ def load_chat_history(CHAT_HISTORY_FILENAME):
145
+ try:
146
+ with open(CHAT_HISTORY_FILENAME, 'r') as f:
147
+ chat_history = json.load(f)
148
+ except (FileNotFoundError, json.JSONDecodeError):
149
+ chat_history = []
150
+ return chat_history
151
+
152
+
153
+ def save_chat_history(chat_history, CHAT_HISTORY_FILENAME):
154
+ with open(CHAT_HISTORY_FILENAME, 'w') as f:
155
+ json.dump(chat_history, f)
156
+
157
+
158
  pinecone_index_name, chroma_collection_name, persist_directory, docsearch_ready, directory_name = init()
159
 
160
 
 
192
  persist_directory = "./vectorstore"
193
 
194
  if pinecone_index_name or chroma_collection_name:
195
+ session_name = pinecone_index_name + chroma_collection_name
196
  if r_ingest.lower() == 'yes':
197
  files = st.file_uploader(
198
  'Upload Files', accept_multiple_files=True)
 
221
  placeholder='Summarize the context.')
222
  if query:
223
  # Generate a reply based on the user input and chat history
224
+ CHAT_HISTORY_FILENAME = f"chat_history/{session_name}_chat_hist.json"
225
+ chat_history = load_chat_history(CHAT_HISTORY_FILENAME)
226
+ chat_history = [(user, bot)
227
+ for user, bot in chat_history]
228
  reply, source = get_response(query, chat_history, CRqa)
229
  # Update the chat history with the user input and system response
230
  chat_history.append(('User', query))
231
  chat_history.append(('Bot', reply))
232
+ save_chat_history(chat_history, CHAT_HISTORY_FILENAME)
233
+ latest_chats = chat_history[-4:]
234
  chat_history_str = '\n'.join(
235
+ [f'{x[0]}: {x[1]}' for x in latest_chats])
236
  st.text_area('Chat record:', value=chat_history_str, height=250)
237
  # Display sources
238
  for i, source_i in enumerate(source):
chat_history/empty_chat_hist.json ADDED
File without changes