deletion
Browse files
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
|