alexkueck commited on
Commit
ecc7333
1 Parent(s): 0626e36

Update utils.py

Browse files
Files changed (1) hide show
  1. utils.py +21 -22
utils.py CHANGED
@@ -283,63 +283,62 @@ def document_storage_chroma(splits):
283
  #Dokumente, die vom Retriever rausgesucht wurden auf Relevanz untersuchen
284
  def grade_documents_direct(prompt, documents):
285
  print("---CHECK RELEVANCE---")
286
- """
287
  # Data model
288
  class grade(BaseModel):
289
  #Binary score for relevance check.
290
  binary_score: str = Field(description="Relevanz Bewertung 'ja' oder 'nein'")
291
- """
292
  # LLM
293
  model = ChatOpenAI(temperature=0.3, model="gpt-3.5-turbo-1106", streaming=True)
294
-
295
- xxx = """Du bist ein Bewerter, der die Relevanz von einem erhaltenen Dokument zu einer Nutzeranfrage bewerten soll. \n
 
296
  Hier ist das erhaltene Dokument: \n\n {context} \n\n
297
  Hier ist die Nutzeranfrage: {question} \n
298
  Wenn das erhaltene Dokument Keywörter oder semantische Bedeutung in Bezug auf die Nutzeranfrage hat, bewerte es als relevant. \n
299
- Gib eine binäre Bewertung von 'ja' oder 'nein' Bewertung, um anzuzeigen ob das Dokuemnt relevant ist zur Nutzeranfrage oder nicht."""
300
- grade_prompt = PromptTemplate(input_variables = ["context", "question"],
301
  template = xxx)
302
 
303
  """
304
  # Tool
305
  grade_tool_oai = convert_to_openai_tool(grade)
306
-
307
  # LLM with tool and enforce invocation
308
  llm_with_tool = model.bind(
309
  tools=[convert_to_openai_tool(grade_tool_oai)],
310
  tool_choice={"type": "function", "function": {"name": "grade"}},
311
  )
312
-
313
  # Parser
314
  parser_tool = PydanticToolsParser(tools=[grade])
315
-
316
  # Prompt
317
  prompt = PromptTemplate(
318
- template="Du bist ein Bewerter, der die Relevanz von einem erhaltenen Dokument zu einer Nutzeranfrage bewerten soll. \n
319
  Hier ist das erhaltene Dokument: \n\n {context} \n\n
320
  Hier ist die Nutzeranfrage: {question} \n
321
  Wenn das erhaltene Dokument Keywörter oder semantische Bedeutung in Bezug auf die Nutzeranfrage hat, bewerte es als relevant. \n
322
- Gib eine binäre Bewertung von 'ja' oder 'nein' Bewertung, um anzuzeigen ob das Dokuemnt relevant ist zur Nutzeranfrage oder nicht.",
323
  input_variables=["context", "question"],
324
  )
325
 
326
  # Chain
327
  chain = prompt | llm_with_tool | parser_tool
328
- """
329
  # Score
330
  filtered_docs = []
331
 
332
- for d in documents:
333
- llm_chain = LLMChain(llm = model, prompt = grade_prompt)
334
- score = llm_chain.run({"question": prompt, "context": d.page_content})
335
- print("hier1..................................")
 
 
 
 
336
 
337
- if not score == "nein":
338
- print("---Bewertung: Dokument ist relevant---")
339
- filtered_docs.append(d)
340
- else:
341
- print("---Bewertung: Dokument irrelevant---")
342
- continue
343
  return filtered_docs
344
 
345
 
 
283
  #Dokumente, die vom Retriever rausgesucht wurden auf Relevanz untersuchen
284
  def grade_documents_direct(prompt, documents):
285
  print("---CHECK RELEVANCE---")
286
+
287
  # Data model
288
  class grade(BaseModel):
289
  #Binary score for relevance check.
290
  binary_score: str = Field(description="Relevanz Bewertung 'ja' oder 'nein'")
291
+
292
  # LLM
293
  model = ChatOpenAI(temperature=0.3, model="gpt-3.5-turbo-1106", streaming=True)
294
+
295
+ """
296
+ xxx = Du bist ein Bewerter, der die Relevanz von einem erhaltenen Dokument zu einer Nutzeranfrage bewerten soll. \n
297
  Hier ist das erhaltene Dokument: \n\n {context} \n\n
298
  Hier ist die Nutzeranfrage: {question} \n
299
  Wenn das erhaltene Dokument Keywörter oder semantische Bedeutung in Bezug auf die Nutzeranfrage hat, bewerte es als relevant. \n
300
+ Gib eine binäre Bewertung von 'ja' oder 'nein' Bewertung, um anzuzeigen ob das Dokuemnt relevant ist zur Nutzeranfrage oder nicht.
301
+ #grade_prompt = PromptTemplate(input_variables = ["context", "question"],
302
  template = xxx)
303
 
304
  """
305
  # Tool
306
  grade_tool_oai = convert_to_openai_tool(grade)
307
+
308
  # LLM with tool and enforce invocation
309
  llm_with_tool = model.bind(
310
  tools=[convert_to_openai_tool(grade_tool_oai)],
311
  tool_choice={"type": "function", "function": {"name": "grade"}},
312
  )
313
+
314
  # Parser
315
  parser_tool = PydanticToolsParser(tools=[grade])
316
+
317
  # Prompt
318
  prompt = PromptTemplate(
319
+ template="""Du bist ein Bewerter, der die Relevanz von einem erhaltenen Dokument zu einer Nutzeranfrage bewerten soll. \n
320
  Hier ist das erhaltene Dokument: \n\n {context} \n\n
321
  Hier ist die Nutzeranfrage: {question} \n
322
  Wenn das erhaltene Dokument Keywörter oder semantische Bedeutung in Bezug auf die Nutzeranfrage hat, bewerte es als relevant. \n
323
+ Gib eine binäre Bewertung von 'ja' oder 'nein' Bewertung, um anzuzeigen ob das Dokuemnt relevant ist zur Nutzeranfrage oder nicht.""",
324
  input_variables=["context", "question"],
325
  )
326
 
327
  # Chain
328
  chain = prompt | llm_with_tool | parser_tool
329
+
330
  # Score
331
  filtered_docs = []
332
 
333
+ score = chain.invoke({"question": question, "context": d.page_content})
334
+ grade = score[0].binary_score
335
+ if grade == "ja":
336
+ print("---Bewertung: Dokument ist relevant---")
337
+ filtered_docs.append(d)
338
+ else:
339
+ print("---Bewertung: Dokument irrelevant---")
340
+ continue
341
 
 
 
 
 
 
 
342
  return filtered_docs
343
 
344