alexkueck commited on
Commit
0356e76
·
verified ·
1 Parent(s): c7f22b4

Update utils.py

Browse files
Files changed (1) hide show
  1. utils.py +19 -22
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
- #HF_MODELL = "t5-small"
151
- #modell_rag = AutoModelForSeq2SeqLM.from_pretrained(HF_MODELL)
152
- #tokenizer_rag = AutoTokenizer.from_pretrained(HF_MODELL)
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 = llm_chain(llm, prompt, combined_content)
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