Update utils.py
Browse files
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
|
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 |
###################################################
|