alexkueck commited on
Commit
947c6de
·
verified ·
1 Parent(s): bbf2eba

Update utils.py

Browse files
Files changed (1) hide show
  1. utils.py +49 -1
utils.py CHANGED
@@ -263,7 +263,7 @@ def document_retrieval_chroma(llm, prompt):
263
  # rag_chain Alternative für RAg mit Bild-Upload, da hier das llm so nicht genutzt werden kann und der prompt mit den RAG Erweiterungen anders übergeben wird
264
  #langchain nutzen, um prompt an llm zu leiten, aber vorher in der VektorDB suchen, um passende splits zum Prompt hinzuzufügen
265
  #prompt mit RAG!!!
266
- def rag_chain(prompt, db, k=3):
267
  rag_template = "Nutze ausschließlich die folgenden Kontext Teile am Ende, um die Frage zu beantworten . " + template + "Frage: " + prompt + "Kontext Teile: "
268
  retrieved_chunks = db.similarity_search(prompt, k)
269
 
@@ -282,9 +282,57 @@ def rag_chain(prompt, db, k=3):
282
  for chunk in chunks_dict:
283
  neu_prompt += f"{chunk['chunk_index']}. {chunk['page_content']}\n"
284
 
 
 
285
  return neu_prompt, chunks_dict # returning both the new prompt and the dictionary
286
 
287
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
288
 
289
 
290
  ###################################################
 
263
  # rag_chain Alternative für RAg mit Bild-Upload, da hier das llm so nicht genutzt werden kann und der prompt mit den RAG Erweiterungen anders übergeben wird
264
  #langchain nutzen, um prompt an llm zu leiten, aber vorher in der VektorDB suchen, um passende splits zum Prompt hinzuzufügen
265
  #prompt mit RAG!!!
266
+ def rag_chainback(prompt, db, k=3):
267
  rag_template = "Nutze ausschließlich die folgenden Kontext Teile am Ende, um die Frage zu beantworten . " + template + "Frage: " + prompt + "Kontext Teile: "
268
  retrieved_chunks = db.similarity_search(prompt, k)
269
 
 
282
  for chunk in chunks_dict:
283
  neu_prompt += f"{chunk['chunk_index']}. {chunk['page_content']}\n"
284
 
285
+ print("dict.............................."+ json.dumps(chunks_dict, indent=4, ensure_ascii=False))
286
+
287
  return neu_prompt, chunks_dict # returning both the new prompt and the dictionary
288
 
289
 
290
+ ###############################################
291
+ #Langchain anlegen
292
+ ###############################################
293
+ #langchain nutzen, um prompt an LLM zu leiten - llm und prompt sind austauschbar
294
+ def llm_chain(llm, prompt):
295
+ llm_chain = LLMChain(llm = llm, prompt = LLM_CHAIN_PROMPT)
296
+ result = llm_chain.run({"question": prompt})
297
+ return result
298
+
299
+ #nur für HF-um bei chatverlauf kurzbeschreibung zu erzeugen
300
+ def llm_chain2(llm, prompt):
301
+ llm_chain = LLMChain(llm = llm, prompt = LLM_CHAIN_PROMPT2)
302
+ result = llm_chain.run({"question": prompt})
303
+ return result
304
+ #############################################
305
+ #langchain nutzen, um prompt an llm zu leiten, aber vorher in der VektorDB suchen, um passende splits zum Prompt hinzuzufügen
306
+ def rag_chain(llm, prompt, retriever):
307
+ #Langgraph nutzen für ein wenig mehr Intelligenz beim Dokumente suchen
308
+ relevant_docs=[]
309
+ filtered_docs=[]
310
+ relevant_docs = retriever.get_relevant_documents(prompt)
311
+ print("releant docs1......................")
312
+ print(relevant_docs)
313
+ if (len(relevant_docs)>0):
314
+ filtered_docs = grade_documents_direct(prompt, relevant_docs)
315
+
316
+ neu_prompt=prompt
317
+ if (len(filtered_docs)<2): #frage neu formulieren
318
+ relevant_docs=[]
319
+ neu_prompt = transform_query_direct(prompt)
320
+ relevant_docs = retriever.get_relevant_documents(neu_prompt)
321
+ if (len(relevant_docs)>0):
322
+ print("releant docs2......................")
323
+ print(relevant_docs)
324
+ filtered_docs = grade_documents_direct(neu_prompt, relevant_docs)
325
+
326
+ if (len(filtered_docs)>0):
327
+ llm_chain = LLMChain(llm = llm, prompt = RAG_CHAIN_PROMPT)
328
+ result = llm_chain.run({"context": filtered_docs, "question": neu_prompt})
329
+ else:
330
+ #Normale Abfrage, da keine relevanten Dokumente gefunden
331
+ llm_chain = LLMChain(llm = llm, prompt = LLM_CHAIN_PROMPT)
332
+ result = llm_chain.run({"question": neu_prompt})
333
+ return result
334
+
335
+
336
 
337
 
338
  ###################################################