|
import logging
|
|
import time
|
|
from generator.generate_response import generate_response
|
|
from retriever.retrieve_documents import retrieve_top_k_documents
|
|
from generator.compute_metrics import get_metrics
|
|
from generator.extract_attributes import extract_attributes
|
|
|
|
def retrieve_and_generate_response(gen_llm, vector_store, query):
|
|
logging.info(f"Query: {query}")
|
|
|
|
|
|
relevant_docs = retrieve_top_k_documents(vector_store, query, top_k=5)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
response, source_docs = generate_response(gen_llm, vector_store, query, relevant_docs)
|
|
|
|
logging.info(f"Response from LLM ({gen_llm.name}): {response}")
|
|
|
|
return response, source_docs
|
|
|
|
def generate_metrics(val_llm, response, source_docs, query, time_to_wait):
|
|
|
|
|
|
time.sleep(time_to_wait)
|
|
|
|
|
|
logging.info(f"Extracting attributes through validation LLM")
|
|
attributes, total_sentences = extract_attributes(val_llm, query, source_docs, response)
|
|
logging.info(f"Extracted attributes successfully")
|
|
|
|
|
|
metrics = get_metrics(attributes, total_sentences)
|
|
|
|
return attributes, metrics |