alexkueck commited on
Commit
1773910
·
verified ·
1 Parent(s): ce120c3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -47
app.py CHANGED
@@ -7,6 +7,8 @@ import io
7
  #from PIL import Image, ImageDraw, ImageOps, ImageFont
8
  #import base64
9
  import tempfile
 
 
10
 
11
  from PyPDF2 import PdfReader, PdfWriter
12
 
@@ -270,6 +272,8 @@ def generate_text (prompt, chatbot, history, retriever, top_p=0.6, temperature=0
270
 
271
 
272
 
 
 
273
  ##############################################################
274
  #Eingaben der GUI verarbeiten
275
  def generate_auswahl(prompt_in, file, file_history, chatbot, history, anzahl_docs=4, top_p=0.6, temperature=0.5, max_new_tokens=4048, max_context_length_tokens=2048, repetition_penalty=1.3,top_k=5, validate=False):
@@ -288,43 +292,42 @@ def generate_auswahl(prompt_in, file, file_history, chatbot, history, anzahl_doc
288
  if vektordatenbank is None:
289
  print("db neu aufbauen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1")
290
  #Splits zu allen Dokumenten in den Verzeichnissen erstellen
291
- PREPROCESSED_SPLITS, SPLIT_TO_ORIGINAL_MAPPING = document_loading_splitting()
292
- if PREPROCESSED_SPLITS:
293
- #Vektordatenbank zu den Splits erstellen
294
- vektordatenbank = document_storage_chroma(PREPROCESSED_SPLITS)
295
- # Speichern des Vektorstores
296
- save_vectorstore(vektordatenbank)
297
-
298
- #Retriever erstellen, um die relevanten Slpits zu einem Prompt zu suchen.... (retrieven)
299
- retriever = vektordatenbank.as_retriever(search_kwargs = {"k": ANZAHL_DOCS})
300
-
301
- #kein Bild hochgeladen -> auf Text antworten...
302
- status = "Antwort der Vektordatenbank"
303
- results, status = generate_text(prompt, chatbot, history, retriever, top_p=0.6, temperature=0.5, max_new_tokens=4048, max_context_length_tokens=2048, repetition_penalty=1.3, top_k=3)
304
-
305
- #in results sind die preprocessed Splits enthalten, dargestellt werden sollen die orginalen:
306
- relevant_docs_org=[]
307
- for result in results['relevant_docs']:
308
- split_id = result.get("metadata", {}).get("split_id")
309
- if split_id:
310
- original_split = SPLIT_TO_ORIGINAL_MAPPING[split_id]
311
- relevant_docs_org.append(original_split)
312
-
313
- relevant_docs = extract_document_info(relevant_docs_org)
314
-
315
- #Ergebnisse für history und chatbot zusammenstellen
316
- summary = str(results['answer']) + "\n\n<b>Auszüge dazu: </b>"
317
- summary += " ".join([
318
- '<div><b>Dokument/Link: </b> <span style="color: #BB70FC;"><a href="' + str(doc['download_link']) + '" target="_blank">' + str(doc['titel']) + '</a></span>'
319
- '(<b>Seite:</span> <span style="color: red;">' + str(doc['seite']) + '</b></span>)<br>'
320
- '<span><b>Auschnitt:</b> ' + str(doc["content"]) + '</span></div><br>'
321
- #'<div><span><b>Link: </b><span style="color: #BB70FC;"><a href="' + str(doc['download_link']) + '" target="_blank">' + str(doc['titel']) + '</a></span></div><br>'
322
- for doc in relevant_docs])
323
-
324
- history = history + [[prompt_in, summary]]
325
-
326
- chatbot[-1][1] = summary
327
- return chatbot, history, None, file_history, ""
328
 
329
 
330
  else: #noch nicht validiert, oder kein Prompt
@@ -335,9 +338,6 @@ def generate_auswahl(prompt_in, file, file_history, chatbot, history, anzahl_doc
335
  def upload_pdf(file):
336
  if file is None:
337
  return None, "Keine Datei hochgeladen."
338
- else:
339
- #damit bei neuer suche die Vektordatenbank neu initialisiert wird
340
- vektordatenbank = None
341
 
342
  # Extrahieren des Dateinamens aus dem vollen Pfad
343
  filename = os.path.basename(file.name)
@@ -353,13 +353,13 @@ def upload_pdf(file):
353
  upload_path = f"chroma/kkg/{filename}"
354
 
355
  # Datei zum Hugging Face Space hochladen
356
- api.upload_file(
357
- path_or_fileobj=file.name,
358
- path_in_repo=upload_path,
359
- repo_id=REPO_ID,
360
- repo_type=REPO_TYPE,
361
- token=HF_WRITE
362
- )
363
  return f"PDF '{filename}' erfolgreich hochgeladen."
364
 
365
  ########################################
 
7
  #from PIL import Image, ImageDraw, ImageOps, ImageFont
8
  #import base64
9
  import tempfile
10
+ import asyncio
11
+ from concurrent.futures import ThreadPoolExecutor
12
 
13
  from PyPDF2 import PdfReader, PdfWriter
14
 
 
272
 
273
 
274
 
275
+
276
+
277
  ##############################################################
278
  #Eingaben der GUI verarbeiten
279
  def generate_auswahl(prompt_in, file, file_history, chatbot, history, anzahl_docs=4, top_p=0.6, temperature=0.5, max_new_tokens=4048, max_context_length_tokens=2048, repetition_penalty=1.3,top_k=5, validate=False):
 
292
  if vektordatenbank is None:
293
  print("db neu aufbauen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1")
294
  #Splits zu allen Dokumenten in den Verzeichnissen erstellen
295
+ vektordatenbank = create_vektorstore()
296
+
297
+ if vektordatenbank:
298
+ #Retriever erstellen, um die relevanten Slpits zu einem Prompt zu suchen.... (retrieven)
299
+ retriever = vektordatenbank.as_retriever(search_kwargs = {"k": ANZAHL_DOCS})
300
+
301
+ #kein Bild hochgeladen -> auf Text antworten...
302
+ status = "Antwort der Vektordatenbank"
303
+ results, status = generate_text(prompt, chatbot, history, retriever, top_p=0.6, temperature=0.5, max_new_tokens=4048, max_context_length_tokens=2048, repetition_penalty=1.3, top_k=3)
304
+
305
+ #in results sind die preprocessed Splits enthalten, dargestellt werden sollen die orginalen:
306
+ relevant_docs_org=[]
307
+ for result in results['relevant_docs']:
308
+ split_id = result.get("metadata", {}).get("split_id")
309
+ if split_id:
310
+ original_split = SPLIT_TO_ORIGINAL_MAPPING[split_id]
311
+ relevant_docs_org.append(original_split)
312
+
313
+ relevant_docs = extract_document_info(relevant_docs_org)
314
+
315
+ #Ergebnisse für history und chatbot zusammenstellen
316
+ summary = str(results['answer']) + "\n\n<b>Auszüge dazu: </b>"
317
+ summary += " ".join([
318
+ '<div><b>Dokument/Link: </b> <span style="color: #BB70FC;"><a href="' + str(doc['download_link']) + '" target="_blank">' + str(doc['titel']) + '</a></span>'
319
+ '(<b>Seite:</span> <span style="color: red;">' + str(doc['seite']) + '</b></span>)<br>'
320
+ '<span><b>Auschnitt:</b> ' + str(doc["content"]) + '</span></div><br>'
321
+ #'<div><span><b>Link: </b><span style="color: #BB70FC;"><a href="' + str(doc['download_link']) + '" target="_blank">' + str(doc['titel']) + '</a></span></div><br>'
322
+ for doc in relevant_docs])
323
+
324
+ history = history + [[prompt_in, summary]]
325
+
326
+ chatbot[-1][1] = summary
327
+ return chatbot, history, None, file_history, ""
328
+ else:
329
+ chatbot[-1][1] = "keine Dokumente gefunden!"
330
+ return chatbot, history, None, file_history, ""
 
331
 
332
 
333
  else: #noch nicht validiert, oder kein Prompt
 
338
  def upload_pdf(file):
339
  if file is None:
340
  return None, "Keine Datei hochgeladen."
 
 
 
341
 
342
  # Extrahieren des Dateinamens aus dem vollen Pfad
343
  filename = os.path.basename(file.name)
 
353
  upload_path = f"chroma/kkg/{filename}"
354
 
355
  # Datei zum Hugging Face Space hochladen
356
+ upload_file_to_huggingface(file.name, upload_path)
357
+
358
+ ############################################
359
+ #Vektorstore neu....
360
+ ############################################
361
+ _ = create_vektorstore()
362
+
363
  return f"PDF '{filename}' erfolgreich hochgeladen."
364
 
365
  ########################################