jamesredd commited on
Commit
e02ffcf
·
1 Parent(s): 56279e6
Files changed (1) hide show
  1. app.py +36 -0
app.py CHANGED
@@ -61,6 +61,28 @@ class DocumentManager:
61
  def set_provide_citation(self, value):
62
  self.provide_citation = value
63
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  def reset_qa(self):
65
  documents = self.text_splitter.split_documents(self.docs)
66
  self.retriever = Chroma.from_documents(documents, OpenAIEmbeddings(openai_api_key=self.api_key)).as_retriever(search_type="mmr", search_kwargs={'fetch_k': 30}, return_source_documents=True)
@@ -100,7 +122,9 @@ class DocumentManager:
100
 
101
  summed_history = " ".join(sum(history, []))
102
  question = "You have access to these documents:" + self.generate_file_markdown() + ". Do not make things up, only say what you have a primary source document for. ---- CHAT HISTORY : " + summed_history + " --- SYSTEM PROMPT: " + self.user_prompt + " -- Answer this question: " + message
 
103
  result = self.qa({"query": question})
 
104
  self.source_documents = result["source_documents"]
105
  self.result = result["result"]
106
  self.question = question
@@ -130,6 +154,12 @@ class DocumentManager:
130
 
131
  return gr.Markdown(self.generate_file_markdown(), label="Uploaded files")
132
 
 
 
 
 
 
 
133
  def create_demo():
134
  doc_manager = DocumentManager()
135
 
@@ -163,6 +193,12 @@ def create_demo():
163
  prompt_textbox = gr.Textbox(label="Prompt", value=doc_manager.get_user_prompt())
164
  prompt_textbox.change(doc_manager.set_user_prompt, prompt_textbox)
165
 
 
 
 
 
 
 
166
  settings_tab.select(doc_manager.create_api_key_status_display, outputs=api_key_status)
167
 
168
  return demo
 
61
  def set_provide_citation(self, value):
62
  self.provide_citation = value
63
 
64
+ def delete_files(self):
65
+ self.docs = []
66
+ self.files = []
67
+ self.source_documents = []
68
+ self.db = Chroma(embedding_function=OpenAIEmbeddings(openai_api_key=self.api_key))
69
+
70
+ self.db._client_settings.allow_reset = True
71
+ self.db._client.reset()
72
+
73
+ self.retreiver = self.db.as_retriever(search_type="mmr", search_kwargs={'fetch_k': 30}, return_source_documents=True)
74
+ self.llm = ChatOpenAI(model_name="gpt-4", temperature=0, streaming=True, openai_api_key=self.api_key)
75
+
76
+ self.qa = RetrievalQA.from_chain_type(
77
+ llm=self.llm,
78
+ chain_type="stuff",
79
+ retriever=Chroma(
80
+ embedding_function=OpenAIEmbeddings(openai_api_key=self.api_key))
81
+ .as_retriever(search_type="mmr", search_kwargs={'fetch_k': 30}, return_source_documents=True),
82
+ return_source_documents=True)
83
+
84
+ return gr.Markdown(self.generate_file_markdown(), label="Uploaded files")
85
+
86
  def reset_qa(self):
87
  documents = self.text_splitter.split_documents(self.docs)
88
  self.retriever = Chroma.from_documents(documents, OpenAIEmbeddings(openai_api_key=self.api_key)).as_retriever(search_type="mmr", search_kwargs={'fetch_k': 30}, return_source_documents=True)
 
122
 
123
  summed_history = " ".join(sum(history, []))
124
  question = "You have access to these documents:" + self.generate_file_markdown() + ". Do not make things up, only say what you have a primary source document for. ---- CHAT HISTORY : " + summed_history + " --- SYSTEM PROMPT: " + self.user_prompt + " -- Answer this question: " + message
125
+
126
  result = self.qa({"query": question})
127
+
128
  self.source_documents = result["source_documents"]
129
  self.result = result["result"]
130
  self.question = question
 
154
 
155
  return gr.Markdown(self.generate_file_markdown(), label="Uploaded files")
156
 
157
+ def create_delete_button(self, value):
158
+ if value and self.api_key:
159
+ return gr.Button("Delete files", scale=4, interactive=True)
160
+ else:
161
+ return gr.Button("Delete files", scale=4, interactive=False)
162
+
163
  def create_demo():
164
  doc_manager = DocumentManager()
165
 
 
193
  prompt_textbox = gr.Textbox(label="Prompt", value=doc_manager.get_user_prompt())
194
  prompt_textbox.change(doc_manager.set_user_prompt, prompt_textbox)
195
 
196
+ with gr.Row():
197
+ allow_delete_checkbox = gr.Checkbox(value=False, label="Allow deletion of files")
198
+ delete_button = doc_manager.create_delete_button(False)
199
+ delete_button.click(doc_manager.delete_files, outputs=file_output)
200
+ allow_delete_checkbox.select(doc_manager.create_delete_button, outputs=delete_button, inputs=allow_delete_checkbox)
201
+
202
  settings_tab.select(doc_manager.create_api_key_status_display, outputs=api_key_status)
203
 
204
  return demo