Update app.py
Browse files
app.py
CHANGED
|
@@ -51,7 +51,7 @@ _ = load_dotenv(find_dotenv())
|
|
| 51 |
#nur bei ersten Anfrage splitten der Dokumente - um die Vektordatenbank entsprechend zu füllen
|
| 52 |
#splittet = False
|
| 53 |
#DB für Vektorstore
|
| 54 |
-
|
| 55 |
retriever = None
|
| 56 |
|
| 57 |
#############################################
|
|
@@ -325,7 +325,7 @@ def create_assistant_suche_hf(chatbot, prompt):
|
|
| 325 |
#Funktion wird direkt aufgerufen aus der GUI - von hier muss auch die Rückmeldung kommen....
|
| 326 |
#man kann einen Text-Prompt eingeben (mit oder ohne RAG), dazu ein Image hochladen, ein Bild zu einem reinen textprompt erzeugen lassen
|
| 327 |
def generate_auswahl(prompt_in, file, file_history, chatbot, history, rag_option, model_option, openai_api_key, k=3, top_p=0.6, temperature=0.5, max_new_tokens=4048, max_context_length_tokens=2048, repetition_penalty=1.3,top_k=35, websuche="Aus", validate=False):
|
| 328 |
-
global
|
| 329 |
|
| 330 |
#nur wenn man sich validiert hat, kann die Anwendung los legen
|
| 331 |
if (validate and not prompt_in == "" and not prompt_in == None):
|
|
@@ -339,15 +339,15 @@ def generate_auswahl(prompt_in, file, file_history, chatbot, history, rag_option
|
|
| 339 |
|
| 340 |
if (rag_option == "An"):
|
| 341 |
#muss nur einmal ausgeführt werden...
|
| 342 |
-
if
|
| 343 |
print("db neu aufbauen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1")
|
| 344 |
splits = document_loading_splitting()
|
| 345 |
-
|
| 346 |
|
| 347 |
#kein Bild hochgeladen -> auf Text antworten...
|
| 348 |
status = "Antwort der KI ..."
|
| 349 |
if (file == None and file_history == None):
|
| 350 |
-
result, status = generate_text(prompt, chatbot, history, rag_option, model_option, openai_api_key,
|
| 351 |
history = history + [[prompt, result]]
|
| 352 |
else:
|
| 353 |
#Es wurde ein File neu angehängt -> wenn prompt dazu, das Bild analysieren
|
|
@@ -359,9 +359,9 @@ def generate_auswahl(prompt_in, file, file_history, chatbot, history, rag_option
|
|
| 359 |
#herausfinden, ob Bild oder Dokument...
|
| 360 |
ext = analyze_file(neu_file)
|
| 361 |
if (ext == "png" or ext == "PNG" or ext == "jpg" or ext == "jpeg" or ext == "JPG" or ext == "JPEG"):
|
| 362 |
-
result= generate_text_zu_bild(neu_file, prompt, k, rag_option, chatbot, history,
|
| 363 |
else:
|
| 364 |
-
result = generate_text_zu_doc(neu_file, prompt, k, rag_option, chatbot, history,
|
| 365 |
|
| 366 |
#die history erweitern - abhängig davon, ob gerade ein file hochgeladen wurde oder nicht
|
| 367 |
if (file != None):
|
|
@@ -413,13 +413,13 @@ def generate_bild(prompt, chatbot, model_option_zeichnen='HuggingFace', temperat
|
|
| 413 |
|
| 414 |
##################################################
|
| 415 |
#zu einem Bild und Text-Prompt eine Analyse generieren
|
| 416 |
-
def generate_text_zu_bild(file, prompt, k, rag_option, chatbot, history,
|
| 417 |
global splittet
|
| 418 |
print("Text mit Bild ..............................")
|
| 419 |
prompt_neu = generate_prompt_with_history(prompt, history)
|
| 420 |
if (rag_option == "An"):
|
| 421 |
print("Bild mit RAG..............................")
|
| 422 |
-
neu_text_mit_chunks = rag_chain2(prompt,
|
| 423 |
#für Chat LLM:
|
| 424 |
#prompt = generate_prompt_with_history_openai(neu_text_mit_chunks, history)
|
| 425 |
#als reiner prompt:
|
|
@@ -436,14 +436,14 @@ def generate_text_zu_bild(file, prompt, k, rag_option, chatbot, history, vectors
|
|
| 436 |
|
| 437 |
##################################################
|
| 438 |
#zu einem Bild und Text-Prompt eine Analyse generieren
|
| 439 |
-
def generate_text_zu_doc(file, prompt, k, rag_option, chatbot, history,
|
| 440 |
global splittet
|
| 441 |
print("text mit doc ..............................")
|
| 442 |
|
| 443 |
prompt_neu = generate_prompt_with_history(prompt, history)
|
| 444 |
if (rag_option == "An"):
|
| 445 |
print("Doc mit RAG..............................")
|
| 446 |
-
neu_text_mit_chunks = rag_chain2(prompt,
|
| 447 |
#für Chat LLM:
|
| 448 |
#prompt_neu = generate_prompt_with_history_openai(neu_text_mit_chunks, history)
|
| 449 |
#als reiner prompt:
|
|
@@ -456,7 +456,7 @@ def generate_text_zu_doc(file, prompt, k, rag_option, chatbot, history, vectorst
|
|
| 456 |
####################################################
|
| 457 |
#aus einem Text-Prompt die Antwort von KI bekommen
|
| 458 |
#mit oder ohne RAG möglich
|
| 459 |
-
def generate_text (prompt, chatbot, history, rag_option, model_option, openai_api_key,
|
| 460 |
#global splittet
|
| 461 |
#hugchat=False
|
| 462 |
suche_im_Netz="Antwort der KI ..."
|
|
@@ -569,7 +569,7 @@ def generate_text (prompt, chatbot, history, rag_option, model_option, openai_ap
|
|
| 569 |
#Funktion wird direkt aufgerufen aus der GUI - von hier muss auch die Rückmeldung kommen....
|
| 570 |
#man kann einen Text-Prompt eingeben , dazu ein Image hochladen, und dann dazu code erzeugen lassen
|
| 571 |
def generate_code(prompt_in, file, file_history, chatbot, history, model_option, openai_api_key, k=3, top_p=0.6, temperature=0.5, max_new_tokens=4048, max_context_length_tokens=2048, repetition_penalty=1.3,top_k=35):
|
| 572 |
-
global
|
| 573 |
#prompt normalisieren bevor er an die KIs geht
|
| 574 |
prompt = normalise_prompt(prompt_in)
|
| 575 |
#falls schon ein File hochgeladen wurde, ist es in history_file gespeichert - falls ein neues File hochgeladen wurde, wird es anschließend neu gesetzt
|
|
@@ -590,9 +590,9 @@ def generate_code(prompt_in, file, file_history, chatbot, history, model_option
|
|
| 590 |
#herausfinden, ob Bild oder Dokument...
|
| 591 |
ext = analyze_file(neu_file)
|
| 592 |
if (ext == "png" or ext == "PNG" or ext == "jpg" or ext == "jpeg" or ext == "JPG" or ext == "JPEG"):
|
| 593 |
-
result= generate_text_zu_bild(neu_file, prompt, k, rag_option, chatbot, history,
|
| 594 |
else:
|
| 595 |
-
result = generate_text_zu_doc(neu_file, prompt, k, rag_option, chatbot, history,
|
| 596 |
|
| 597 |
#die history erweitern - abhängig davon, ob gerade ein file hochgeladen wurde oder nicht
|
| 598 |
if (file != None):
|
|
|
|
| 51 |
#nur bei ersten Anfrage splitten der Dokumente - um die Vektordatenbank entsprechend zu füllen
|
| 52 |
#splittet = False
|
| 53 |
#DB für Vektorstore
|
| 54 |
+
vektordatenbank = None
|
| 55 |
retriever = None
|
| 56 |
|
| 57 |
#############################################
|
|
|
|
| 325 |
#Funktion wird direkt aufgerufen aus der GUI - von hier muss auch die Rückmeldung kommen....
|
| 326 |
#man kann einen Text-Prompt eingeben (mit oder ohne RAG), dazu ein Image hochladen, ein Bild zu einem reinen textprompt erzeugen lassen
|
| 327 |
def generate_auswahl(prompt_in, file, file_history, chatbot, history, rag_option, model_option, openai_api_key, k=3, top_p=0.6, temperature=0.5, max_new_tokens=4048, max_context_length_tokens=2048, repetition_penalty=1.3,top_k=35, websuche="Aus", validate=False):
|
| 328 |
+
global vektordatenbank, retriever
|
| 329 |
|
| 330 |
#nur wenn man sich validiert hat, kann die Anwendung los legen
|
| 331 |
if (validate and not prompt_in == "" and not prompt_in == None):
|
|
|
|
| 339 |
|
| 340 |
if (rag_option == "An"):
|
| 341 |
#muss nur einmal ausgeführt werden...
|
| 342 |
+
if vektordatenbank == None:
|
| 343 |
print("db neu aufbauen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1")
|
| 344 |
splits = document_loading_splitting()
|
| 345 |
+
vektordatenbank, retriever = document_storage_chroma(splits)
|
| 346 |
|
| 347 |
#kein Bild hochgeladen -> auf Text antworten...
|
| 348 |
status = "Antwort der KI ..."
|
| 349 |
if (file == None and file_history == None):
|
| 350 |
+
result, status = generate_text(prompt, chatbot, history, rag_option, model_option, openai_api_key, vektordatenbank, websuche, k=3, top_p=0.6, temperature=0.5, max_new_tokens=4048, max_context_length_tokens=2048, repetition_penalty=1.3, top_k=3)
|
| 351 |
history = history + [[prompt, result]]
|
| 352 |
else:
|
| 353 |
#Es wurde ein File neu angehängt -> wenn prompt dazu, das Bild analysieren
|
|
|
|
| 359 |
#herausfinden, ob Bild oder Dokument...
|
| 360 |
ext = analyze_file(neu_file)
|
| 361 |
if (ext == "png" or ext == "PNG" or ext == "jpg" or ext == "jpeg" or ext == "JPG" or ext == "JPEG"):
|
| 362 |
+
result= generate_text_zu_bild(neu_file, prompt, k, rag_option, chatbot, history, vektordatenbank)
|
| 363 |
else:
|
| 364 |
+
result = generate_text_zu_doc(neu_file, prompt, k, rag_option, chatbot, history, vektordatenbank)
|
| 365 |
|
| 366 |
#die history erweitern - abhängig davon, ob gerade ein file hochgeladen wurde oder nicht
|
| 367 |
if (file != None):
|
|
|
|
| 413 |
|
| 414 |
##################################################
|
| 415 |
#zu einem Bild und Text-Prompt eine Analyse generieren
|
| 416 |
+
def generate_text_zu_bild(file, prompt, k, rag_option, chatbot, history, vektordatenbank):
|
| 417 |
global splittet
|
| 418 |
print("Text mit Bild ..............................")
|
| 419 |
prompt_neu = generate_prompt_with_history(prompt, history)
|
| 420 |
if (rag_option == "An"):
|
| 421 |
print("Bild mit RAG..............................")
|
| 422 |
+
neu_text_mit_chunks = rag_chain2(prompt, vektordatenbank, k)
|
| 423 |
#für Chat LLM:
|
| 424 |
#prompt = generate_prompt_with_history_openai(neu_text_mit_chunks, history)
|
| 425 |
#als reiner prompt:
|
|
|
|
| 436 |
|
| 437 |
##################################################
|
| 438 |
#zu einem Bild und Text-Prompt eine Analyse generieren
|
| 439 |
+
def generate_text_zu_doc(file, prompt, k, rag_option, chatbot, history, vektordatenbank):
|
| 440 |
global splittet
|
| 441 |
print("text mit doc ..............................")
|
| 442 |
|
| 443 |
prompt_neu = generate_prompt_with_history(prompt, history)
|
| 444 |
if (rag_option == "An"):
|
| 445 |
print("Doc mit RAG..............................")
|
| 446 |
+
neu_text_mit_chunks = rag_chain2(prompt, vektordatenbank, k)
|
| 447 |
#für Chat LLM:
|
| 448 |
#prompt_neu = generate_prompt_with_history_openai(neu_text_mit_chunks, history)
|
| 449 |
#als reiner prompt:
|
|
|
|
| 456 |
####################################################
|
| 457 |
#aus einem Text-Prompt die Antwort von KI bekommen
|
| 458 |
#mit oder ohne RAG möglich
|
| 459 |
+
def generate_text (prompt, chatbot, history, rag_option, model_option, openai_api_key, vektordatenbank, websuche, k=3, top_p=0.6, temperature=0.5, max_new_tokens=4048, max_context_length_tokens=2048, repetition_penalty=1.3, top_k=35):
|
| 460 |
#global splittet
|
| 461 |
#hugchat=False
|
| 462 |
suche_im_Netz="Antwort der KI ..."
|
|
|
|
| 569 |
#Funktion wird direkt aufgerufen aus der GUI - von hier muss auch die Rückmeldung kommen....
|
| 570 |
#man kann einen Text-Prompt eingeben , dazu ein Image hochladen, und dann dazu code erzeugen lassen
|
| 571 |
def generate_code(prompt_in, file, file_history, chatbot, history, model_option, openai_api_key, k=3, top_p=0.6, temperature=0.5, max_new_tokens=4048, max_context_length_tokens=2048, repetition_penalty=1.3,top_k=35):
|
| 572 |
+
global vektordatenbank
|
| 573 |
#prompt normalisieren bevor er an die KIs geht
|
| 574 |
prompt = normalise_prompt(prompt_in)
|
| 575 |
#falls schon ein File hochgeladen wurde, ist es in history_file gespeichert - falls ein neues File hochgeladen wurde, wird es anschließend neu gesetzt
|
|
|
|
| 590 |
#herausfinden, ob Bild oder Dokument...
|
| 591 |
ext = analyze_file(neu_file)
|
| 592 |
if (ext == "png" or ext == "PNG" or ext == "jpg" or ext == "jpeg" or ext == "JPG" or ext == "JPEG"):
|
| 593 |
+
result= generate_text_zu_bild(neu_file, prompt, k, rag_option, chatbot, history, vektordatenbank)
|
| 594 |
else:
|
| 595 |
+
result = generate_text_zu_doc(neu_file, prompt, k, rag_option, chatbot, history, vektordatenbank)
|
| 596 |
|
| 597 |
#die history erweitern - abhängig davon, ob gerade ein file hochgeladen wurde oder nicht
|
| 598 |
if (file != None):
|