Hammaad
re configured the prompts
2e4fd26
raw
history blame
2.51 kB
"""
/*************************************************************************
*
* CONFIDENTIAL
* __________________
*
* Copyright (2023-2024) AI Labs, IronOne Technologies, LLC
* All Rights Reserved
*
* Author : Theekshana Samaradiwakara
* Description :Python Backend API to chat with private data
* CreatedDate : 14/11/2023
* LastModifiedDate : 18/03/2024
*************************************************************************/
"""
import os
import time
import logging
logger = logging.getLogger(__name__)
from dotenv import load_dotenv
from reggpt.chains.llmChain import get_qa_chain
from reggpt.output_parsers.output_parser import qa_chain_output_parser
from reggpt.configs.model import QA_MODEL_TYPE
from reggpt.utils.retriever import load_ensemble_retriever
load_dotenv()
verbose = os.environ.get('VERBOSE')
qa_model_type=QA_MODEL_TYPE
# retriever=load_faiss_retriever()
retriever=load_ensemble_retriever()
# retriever=load_multi_query_retriever(multi_query_model_type)
logger.info("retriever loaded:")
qa_chain= get_qa_chain(qa_model_type,retriever)
def run_qa_chain(query):
try:
logger.info(f"run_qa_chain : Question: {query}")
# Get the answer from the chain
start = time.time()
# res = qa_chain(query)
res = qa_chain.invoke({"question": query, "chat_history":""})
if 'I dont know' in res["answer"] or "don't know" in res["answer"]:
res['answer'] = "I currently do not have the information to answer this question. Please rephrase your question or ask another question."
# res = response
# answer, docs = res['result'],res['source_documents']
end = time.time()
# log the result
logger.info(f"Answer (took {round(end - start, 2)} s.) \n: {res}")
return qa_chain_output_parser(res)
except Exception as e:
logger.exception(e)
raise e
def run_qa_chain_answer_only(query):
try:
logger.info(f"run_qa_chain : Question: {query}")
# Get the answer from the chain
start = time.time()
# res = qa_chain(query)
res = qa_chain.invoke({"question": query, "chat_history":""})
# res = response
# answer, docs = res['result'],res['source_documents']
end = time.time()
# log the result
logger.info(f"Answer (took {round(end - start, 2)} s.) \n: {res}")
return res["answer"]
except Exception as e:
logger.exception(e)
raise e