Update utils.py
Browse files
utils.py
CHANGED
|
@@ -147,9 +147,9 @@ urls = [
|
|
| 147 |
# Schritt 1: Initialisiere den Sentence-Transformer und das Generierungsmodell
|
| 148 |
embedder_modell = SentenceTransformer("sentence-transformers/all-mpnet-base-v2") #'all-MiniLM-L6-v2')
|
| 149 |
EMBEDDING_MODELL = "sentence-transformers/all-mpnet-base-v2"
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
|
| 154 |
|
| 155 |
|
|
@@ -363,10 +363,21 @@ def llm_chain(llm, prompt, context):
|
|
| 363 |
"llm": llm
|
| 364 |
}
|
| 365 |
sequence = RunnableSequence(params)
|
| 366 |
-
|
| 367 |
result = sequence.invoke()
|
| 368 |
return result
|
| 369 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 370 |
|
| 371 |
#############################################
|
| 372 |
#langchain nutzen, um prompt an llm zu leiten, aber vorher in der VektorDB suchen, um passende splits zum Prompt hinzuzufügen
|
|
@@ -395,31 +406,21 @@ def rag_chain(llm, prompt, retriever):
|
|
| 395 |
|
| 396 |
#Kombiniere die Inhalte aller relevanten Dokumente
|
| 397 |
combined_content = " ".join([doc["content"] for doc in most_relevant_docs])
|
| 398 |
-
|
| 399 |
-
#Formuliere die Eingabe für das Generierungsmodell
|
| 400 |
-
input_text = f"frage: {prompt} kontext: {combined_content}"
|
| 401 |
|
| 402 |
-
"""
|
| 403 |
-
inputs = tokenizer_rag(input_text, return_tensors="pt", max_length=1024, truncation=True)
|
| 404 |
|
| 405 |
-
#Generiere die Antwort
|
| 406 |
-
outputs = modell_rag.generate(inputs['input_ids'], max_length=150, num_beams=2, early_stopping=True)
|
| 407 |
-
answer = tokenizer_rag.decode(outputs[0], skip_special_tokens=True)
|
| 408 |
-
"""
|
| 409 |
#############################################
|
| 410 |
#Verschiedene LLMs ausprobieren als Generierungsmodell
|
| 411 |
#für die Zusammenfassung
|
| 412 |
#############################################
|
| 413 |
#1. Alternative, wenn llm direkt übergeben....................................
|
| 414 |
-
answer =
|
| 415 |
|
| 416 |
-
|
|
|
|
| 417 |
#2. Alternative, wenn mit API_URL ...........................................
|
| 418 |
#answer = query(llm, {"inputs": input_text,})
|
| 419 |
-
|
| 420 |
#3. Alternative: mit pipeline
|
| 421 |
-
#für text-generation:
|
| 422 |
-
#messages = [{"role": "user", "content": input_text},]
|
| 423 |
#für summarizatiuon
|
| 424 |
#answer = llm(input_text,max_length=1024, min_length=150, do_sample=False)
|
| 425 |
|
|
@@ -438,10 +439,6 @@ def rag_chain(llm, prompt, retriever):
|
|
| 438 |
return result
|
| 439 |
|
| 440 |
|
| 441 |
-
def query(api_llm, payload):
|
| 442 |
-
response = requests.post(api_llm, headers=HEADERS, json=payload)
|
| 443 |
-
return response.json()
|
| 444 |
-
|
| 445 |
|
| 446 |
#############################################################
|
| 447 |
#in einem Dictionary die wichtigen Infos zu jedem Dok zusammenstellen
|
|
|
|
| 147 |
# Schritt 1: Initialisiere den Sentence-Transformer und das Generierungsmodell
|
| 148 |
embedder_modell = SentenceTransformer("sentence-transformers/all-mpnet-base-v2") #'all-MiniLM-L6-v2')
|
| 149 |
EMBEDDING_MODELL = "sentence-transformers/all-mpnet-base-v2"
|
| 150 |
+
HF_MODELL = "t5-small"
|
| 151 |
+
modell_rag = AutoModelForSeq2SeqLM.from_pretrained(HF_MODELL)
|
| 152 |
+
tokenizer_rag = AutoTokenizer.from_pretrained(HF_MODELL)
|
| 153 |
|
| 154 |
|
| 155 |
|
|
|
|
| 363 |
"llm": llm
|
| 364 |
}
|
| 365 |
sequence = RunnableSequence(params)
|
|
|
|
| 366 |
result = sequence.invoke()
|
| 367 |
return result
|
| 368 |
|
| 369 |
+
def query(api_llm, payload):
|
| 370 |
+
response = requests.post(api_llm, headers=HEADERS, json=payload)
|
| 371 |
+
return response.json()
|
| 372 |
+
|
| 373 |
+
def llm_chain2(prompt, context):
|
| 374 |
+
full_prompt = RAG_CHAIN_PROMPT.format(context=context, question=prompt)
|
| 375 |
+
inputs = tokenizer_rag(full_prompt, return_tensors="pt", max_length=1024, truncation=True)
|
| 376 |
+
#Generiere die Antwort
|
| 377 |
+
outputs = modell_rag.generate(inputs['input_ids'], max_length=1024, num_beams=2, early_stopping=True)
|
| 378 |
+
answer = tokenizer_rag.decode(outputs[0], skip_special_tokens=True)
|
| 379 |
+
return answer
|
| 380 |
+
|
| 381 |
|
| 382 |
#############################################
|
| 383 |
#langchain nutzen, um prompt an llm zu leiten, aber vorher in der VektorDB suchen, um passende splits zum Prompt hinzuzufügen
|
|
|
|
| 406 |
|
| 407 |
#Kombiniere die Inhalte aller relevanten Dokumente
|
| 408 |
combined_content = " ".join([doc["content"] for doc in most_relevant_docs])
|
|
|
|
|
|
|
|
|
|
| 409 |
|
|
|
|
|
|
|
| 410 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 411 |
#############################################
|
| 412 |
#Verschiedene LLMs ausprobieren als Generierungsmodell
|
| 413 |
#für die Zusammenfassung
|
| 414 |
#############################################
|
| 415 |
#1. Alternative, wenn llm direkt übergeben....................................
|
| 416 |
+
answer = llm_chain2(prompt, combined_content)
|
| 417 |
|
| 418 |
+
#Formuliere die Eingabe für das Generierungsmodell
|
| 419 |
+
#input_text = f"frage: {prompt} kontext: {combined_content}"
|
| 420 |
#2. Alternative, wenn mit API_URL ...........................................
|
| 421 |
#answer = query(llm, {"inputs": input_text,})
|
| 422 |
+
|
| 423 |
#3. Alternative: mit pipeline
|
|
|
|
|
|
|
| 424 |
#für summarizatiuon
|
| 425 |
#answer = llm(input_text,max_length=1024, min_length=150, do_sample=False)
|
| 426 |
|
|
|
|
| 439 |
return result
|
| 440 |
|
| 441 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 442 |
|
| 443 |
#############################################################
|
| 444 |
#in einem Dictionary die wichtigen Infos zu jedem Dok zusammenstellen
|