Samarth991 commited on
Commit
ef9e1ba
1 Parent(s): 443f232

Adding Langchain QA

Browse files
Files changed (1) hide show
  1. app.py +16 -8
app.py CHANGED
@@ -6,9 +6,10 @@ from langchain.text_splitter import RecursiveCharacterTextSplitter
6
  from langchain.embeddings import SentenceTransformerEmbeddings
7
  from langchain.vectorstores import FAISS
8
  from langchain import HuggingFaceHub
 
 
9
 
10
-
11
- DEVICE = 'cpu '
12
  FILE_EXT = ['pdf','text','csv','word','wav']
13
 
14
 
@@ -36,14 +37,14 @@ def get_hugging_face_model(model_id,API_key,temperature=0.1):
36
  model_kwargs={"temperature": temperature, "max_new_tokens": 2048})
37
  return chat_llm
38
 
39
- def chat_application(llm_model,key):
40
  if llm_model == 'HuggingFace':
41
  llm = get_hugging_face_model(model_id='tiiuae/falcon-7b-instruct',API_key=key)
42
  else:
43
  llm_model = get_openai_chat_model(API_key=key)
44
 
45
 
46
- def document_loader(file_data,doc_type='pdf',key=None):
47
  embedding_model = SentenceTransformerEmbeddings(model_name='all-mpnet-base-v2',model_kwargs={"device": DEVICE})
48
  document = None
49
  if doc_type == 'pdf':
@@ -54,15 +55,21 @@ def document_loader(file_data,doc_type='pdf',key=None):
54
  document = process_csv_document(document_file_name=file_data)
55
  elif doc_type == 'word':
56
  document = process_word_document(document_file_name=file_data)
57
-
58
  if document:
59
  texts = process_documents(documents=document)
60
- global vectordb
61
- vectordb = FAISS.from_documents(documents=texts, embedding= embedding_model)
 
 
 
 
 
 
62
  else:
63
  return "Error in loading Documents "
64
 
65
- return "Document loaded - Embeddings ready "
66
 
67
 
68
  def process_text_document(document_file_name):
@@ -125,6 +132,7 @@ with gr.Blocks(css=css) as demo:
125
  submit_button = gr.Button("Send Message")
126
  load_pdf.click(loading_file, None, langchain_status, queue=False)
127
  load_pdf.click(document_loader, inputs=[pdf_doc,file_extension,API_key], outputs=[langchain_status], queue=False)
 
128
  # question.submit(add_text, [chatbot, question], [chatbot, question]).then(
129
  # bot, chatbot, chatbot
130
  # )
 
6
  from langchain.embeddings import SentenceTransformerEmbeddings
7
  from langchain.vectorstores import FAISS
8
  from langchain import HuggingFaceHub
9
+ from langchain.chains import RetrievalQA
10
+ from langchain.prompts import PromptTemplate
11
 
12
+ DEVICE = 'cpu'
 
13
  FILE_EXT = ['pdf','text','csv','word','wav']
14
 
15
 
 
37
  model_kwargs={"temperature": temperature, "max_new_tokens": 2048})
38
  return chat_llm
39
 
40
+ def chat_application(llm_service,key):
41
  if llm_model == 'HuggingFace':
42
  llm = get_hugging_face_model(model_id='tiiuae/falcon-7b-instruct',API_key=key)
43
  else:
44
  llm_model = get_openai_chat_model(API_key=key)
45
 
46
 
47
+ def document_loader(file_data,api_key,doc_type='pdf',llm='Huggingface'):
48
  embedding_model = SentenceTransformerEmbeddings(model_name='all-mpnet-base-v2',model_kwargs={"device": DEVICE})
49
  document = None
50
  if doc_type == 'pdf':
 
55
  document = process_csv_document(document_file_name=file_data)
56
  elif doc_type == 'word':
57
  document = process_word_document(document_file_name=file_data)
58
+ print(document)
59
  if document:
60
  texts = process_documents(documents=document)
61
+ vector_db = FAISS.from_documents(documents=texts, embedding= embedding_model)
62
+ global qa
63
+ qa = RetrievalQA.from_chain_type(llm=chat_application(llm_service=llm,key=api_key),
64
+ chain_type='stuff',
65
+ retriever=vector_db.as_retriever(),
66
+ # chain_type_kwargs=chain_type_kwargs,
67
+ return_source_documents=True
68
+ )
69
  else:
70
  return "Error in loading Documents "
71
 
72
+ return "Ready..."
73
 
74
 
75
  def process_text_document(document_file_name):
 
132
  submit_button = gr.Button("Send Message")
133
  load_pdf.click(loading_file, None, langchain_status, queue=False)
134
  load_pdf.click(document_loader, inputs=[pdf_doc,file_extension,API_key], outputs=[langchain_status], queue=False)
135
+
136
  # question.submit(add_text, [chatbot, question], [chatbot, question]).then(
137
  # bot, chatbot, chatbot
138
  # )