apahilaj commited on
Commit
1f23632
·
1 Parent(s): 73338b2

updated app

Browse files
Files changed (1) hide show
  1. app.py +82 -4
app.py CHANGED
@@ -1,7 +1,85 @@
1
  import gradio as gr
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
- def greet(name):
4
- return "Hello " + name + "!!"
5
 
6
- iface = gr.Interface(fn=greet, inputs="text", outputs="text")
7
- iface.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import gradio as gr
2
+ import pandas as pd
3
+ from langchain.embeddings import HuggingFaceEmbeddings
4
+ from langchain.vectorstores import Chroma, faiss
5
+ from langchain_community.llms import HuggingFaceEndpoint, HuggingFaceHub
6
+ from langchain.chains import LLMChain
7
+ from langchain_community.document_loaders.csv_loader import CSVLoader
8
+ from langchain_community.document_loaders import PyPDFLoader
9
+ from langchain.text_splitter import CharacterTextSplitter
10
+ from langchain_community.document_loaders import TextLoader
11
+ from langchain_community import vectorstores
12
+ from langchain.prompts import PromptTemplate
13
+ from langchain.chains import RetrievalQA
14
+ from langchain.memory import ConversationBufferMemory
15
+ from langchain.chains import ConversationalRetrievalChain
16
+ from langchain.text_splitter import CharacterTextSplitter, RecursiveCharacterTextSplitter
17
+ from langchain.vectorstores import DocArrayInMemorySearch
18
+ from langchain.document_loaders import TextLoader
19
+ from langchain.chains import RetrievalQA, ConversationalRetrievalChain
20
+ from langchain.memory import ConversationBufferMemory
21
+ from langchain.chat_models import ChatOpenAI
22
+ from langchain.document_loaders import TextLoader
23
+ from langchain.document_loaders import PyPDFLoader
24
+ import panel as pn
25
+ import param
26
+ import re
27
+ import os
28
 
29
+ api_token = os.environ.get('HUGGINGFACEHUB_API_TOKEN')
 
30
 
31
+ memory = ConversationBufferMemory(
32
+ memory_key="chat_history",
33
+ return_messages=True
34
+ )
35
+
36
+ model = HuggingFaceHub(
37
+ huggingfacehub_api_token=api_token,
38
+ repo_id="mistralai/Mistral-7B-Instruct-v0.2",
39
+ task="conversational",
40
+ model_kwargs={"temperature": 0.8, "max_length": 1000},
41
+ )
42
+ template = """Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer. Use three sentences maximum. Keep the answer as concise as possible. Always say "thanks for asking!" at the end of the answer.
43
+ {context}
44
+ Question: {question}
45
+ Helpful Answer:"""
46
+ QA_CHAIN_PROMPT = PromptTemplate.from_template(template)
47
+
48
+ def load_db(file, k):
49
+ # load documents
50
+ loader = PyPDFLoader(file)
51
+ documents = loader.load()
52
+ # split documents
53
+ text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=150)
54
+ docs = text_splitter.split_documents(documents)
55
+ # define embedding
56
+ embeddings = HuggingFaceEmbeddings()
57
+ # create vector database from data
58
+ db = vectorstores.FAISS.from_documents(docs, embeddings)
59
+ # define retriever
60
+ retriever = db.as_retriever(search_type="similarity", search_kwargs={"k": k})
61
+ # create a chatbot chain. Memory is managed externally.
62
+ question_generator_chain = LLMChain(llm=model, prompt=QA_CHAIN_PROMPT)
63
+
64
+ qa = ConversationalRetrievalChain.from_llm(
65
+ llm=model,
66
+ chain_type="stuff",
67
+ retriever=retriever,
68
+ return_source_documents=True,
69
+ return_generated_question=True,
70
+ )
71
+
72
+ return qa
73
+
74
+ def greet(name, pdf_file):
75
+ a = load_db(pdf_file, 3)
76
+ r = a.invoke({"question": name, "chat_history": []})
77
+ match = re.search(r'Helpful Answer:(.*)', r['answer'])
78
+ if match:
79
+ helpful_answer = match.group(1).strip()
80
+ return helpful_answer
81
+ else:
82
+ return "No helpful answer found."
83
+
84
+ iface = gr.Interface(fn=greet, inputs=["text", "file"], outputs="text")
85
+ iface.launch()