|
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: {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 |