alexkueck commited on
Commit
6a085ba
1 Parent(s): 648129d

Update utils.py

Browse files
Files changed (1) hide show
  1. utils.py +11 -52
utils.py CHANGED
@@ -347,6 +347,7 @@ def document_retrieval_chroma(llm, prompt):
347
  ###############################################
348
  #Langchain anlegen für RAG Chaining
349
  ###############################################
 
350
  #langchain nutzen, um prompt an LLM zu leiten - llm und prompt sind austauschbar
351
  def llm_chain(llm, prompt):
352
  llm_chain = LLMChain(llm = llm, prompt = LLM_CHAIN_PROMPT)
@@ -358,6 +359,8 @@ def llm_chain2(llm, prompt):
358
  llm_chain = LLMChain(llm = llm, prompt = LLM_CHAIN_PROMPT2)
359
  result = llm_chain.run({"question": prompt})
360
  return result
 
 
361
  #############################################
362
  #langchain nutzen, um prompt an llm zu leiten, aber vorher in der VektorDB suchen, um passende splits zum Prompt hinzuzufügen
363
  def rag_chain(llm, prompt, retriever):
@@ -390,63 +393,19 @@ def rag_chain(llm, prompt, retriever):
390
 
391
  #Formuliere die Eingabe für das Generierungsmodell
392
  input_text = f"frage: {prompt} kontext: {combined_content}"
 
 
393
  inputs = tokenizer_rag(input_text, return_tensors="pt", max_length=1024, truncation=True)
394
 
395
  #Generiere die Antwort
396
  outputs = modell_rag.generate(inputs['input_ids'], max_length=150, num_beams=2, early_stopping=True)
397
  answer = tokenizer_rag.decode(outputs[0], skip_special_tokens=True)
 
398
 
 
 
399
 
400
- # Erstelle das Ergebnis-Dictionary
401
- result = {
402
- "answer": answer,
403
- "relevant_docs": most_relevant_docs
404
- }
405
-
406
- else:
407
- # keine relevanten Dokumente gefunden
408
- result = {
409
- "answer": "Keine relevanten Dokumente gefunden",
410
- "relevant_docs": most_relevant_docs
411
- }
412
-
413
- return result
414
-
415
- ################################################################################
416
- #langchain nutzen, um prompt an llm zu leiten, aber vorher in der VektorDB suchen, um passende splits zum Prompt hinzuzufüge
417
- #hier aber mit API-URl zu einem llm auf dem HF Hub
418
- def rag_chain2(prompt, retriever):
419
- #Langgraph nutzen für ein wenig mehr Intelligenz beim Dokumente suchen
420
- relevant_docs=[]
421
- most_relevant_docs=[]
422
- relevant_docs = retriever.get_relevant_documents(prompt)
423
- extracted_docs = extract_document_info(relevant_docs)
424
-
425
- if (len(extracted_docs)>0):
426
- #llm_chain = LLMChain(llm = llm, prompt = RAG_CHAIN_PROMPT)
427
- #result = llm_chain.run({"context": relevant_docs, "question": prompt})
428
- # Erstelle ein PromptTemplate mit Platzhaltern für Kontext und Frage
429
- #RAG_CHAIN_PROMPT = PromptTemplate(template="Context: {context}\n\nQuestion: {question}\n\nAnswer:")
430
-
431
- # Inahlte Abrufen der relevanten Dokumente
432
- doc_contents = [doc["content"] for doc in extracted_docs]
433
-
434
- #Berechne die Ähnlichkeiten und finde das relevanteste Dokument
435
- question_embedding = embedder_modell.encode(prompt, convert_to_tensor=True)
436
- doc_embeddings = embedder_modell.encode(doc_contents, convert_to_tensor=True)
437
- similarity_scores = util.pytorch_cos_sim(question_embedding, doc_embeddings)
438
- most_relevant_doc_indices = similarity_scores.argsort(descending=True).squeeze().tolist()
439
-
440
- #Erstelle eine Liste der relevantesten Dokumente
441
- most_relevant_docs = [extracted_docs[i] for i in most_relevant_doc_indices]
442
-
443
- #Kombiniere die Inhalte aller relevanten Dokumente
444
- combined_content = " ".join([doc["content"] for doc in most_relevant_docs])
445
-
446
- #Formuliere die Eingabe für das Generierungsmodell
447
- input_text = f"frage: {prompt} kontext: {combined_content}"
448
-
449
- answer = query({"inputs": input_text,})
450
 
451
  # Erstelle das Ergebnis-Dictionary
452
  result = {
@@ -464,8 +423,8 @@ def rag_chain2(prompt, retriever):
464
  return result
465
 
466
 
467
- def query(payload):
468
- response = requests.post(API_URL, headers=headers, json=payload)
469
  return response.json()
470
 
471
 
 
347
  ###############################################
348
  #Langchain anlegen für RAG Chaining
349
  ###############################################
350
+ """
351
  #langchain nutzen, um prompt an LLM zu leiten - llm und prompt sind austauschbar
352
  def llm_chain(llm, prompt):
353
  llm_chain = LLMChain(llm = llm, prompt = LLM_CHAIN_PROMPT)
 
359
  llm_chain = LLMChain(llm = llm, prompt = LLM_CHAIN_PROMPT2)
360
  result = llm_chain.run({"question": prompt})
361
  return result
362
+ """
363
+
364
  #############################################
365
  #langchain nutzen, um prompt an llm zu leiten, aber vorher in der VektorDB suchen, um passende splits zum Prompt hinzuzufügen
366
  def rag_chain(llm, prompt, retriever):
 
393
 
394
  #Formuliere die Eingabe für das Generierungsmodell
395
  input_text = f"frage: {prompt} kontext: {combined_content}"
396
+
397
+ """
398
  inputs = tokenizer_rag(input_text, return_tensors="pt", max_length=1024, truncation=True)
399
 
400
  #Generiere die Antwort
401
  outputs = modell_rag.generate(inputs['input_ids'], max_length=150, num_beams=2, early_stopping=True)
402
  answer = tokenizer_rag.decode(outputs[0], skip_special_tokens=True)
403
+ """
404
 
405
+ #llm_chain = LLMChain(llm = llm, prompt = input_text)
406
+ #answer = llm_chain.run({"question": prompt})
407
 
408
+ answer = query(llm, {"inputs": input_text,})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
409
 
410
  # Erstelle das Ergebnis-Dictionary
411
  result = {
 
423
  return result
424
 
425
 
426
+ def query(api_llm, payload):
427
+ response = requests.post(api_llm, headers=headers, json=payload)
428
  return response.json()
429
 
430