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
|