""" /************************************************************************* * * 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 *************************************************************************/ """ def qa_chain_output_parser(result): # return { # "question": result["question"], # "answer": result["answer"], # "source_documents": result["source_documents"] # } metadata = [i.metadata for i in result.get("source_documents", [])] source_documents = result.get("source_documents", []) format_data = make_format(metadata, source_documents) return { "user_input": result["question"], "bot_response": result["answer"], "format_data": format_data } def general_qa_chain_output_parser(result): return { "user_input": result["question"], "bot_response": result["text"], "format_data": [] } def out_of_domain_chain_parser(query): return { "user_input": query, "bot_response":"sorry this question is out of my domain.", "format_data":[] } def make_format(metadata, source_documents): """ This function is used to format the metadata and source documents into an array. The output from this function is used when displaying the results on the website. """ formatted_metadata = [] for index, doc in enumerate(source_documents, 1): page_content = doc.page_content source = metadata[index - 1]["source"].split("\\")[-1] formatted_metadata.append({"pageContent": page_content, "source": source}) return formatted_metadata