Divyanshh commited on
Commit
802aee5
·
verified ·
1 Parent(s): 5841bd2

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +68 -0
app.py ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # streamlit_app.py
2
+
3
+ import streamlit as st
4
+ from langchain.vectorstores import Chroma
5
+ from langchain.text_splitter import RecursiveCharacterTextSplitter
6
+ from langchain.document_loaders import TextLoader
7
+ from langchain.document_loaders import PyPDFLoader
8
+ from langchain.document_loaders import DirectoryLoader
9
+ import dotenv
10
+ import os
11
+ from InstructorEmbedding import INSTRUCTOR
12
+ from langchain.embeddings import HuggingFaceInstructEmbeddings
13
+ import google.generativeai as genai
14
+
15
+ # Load environment variables
16
+ dotenv.load_dotenv()
17
+
18
+ # Configure Google Generative AI
19
+ genai.configure(api_key=os.getenv('GOOGLE_API_KEY'))
20
+
21
+ llm = genai.GenerativeModel('gemini-pro')
22
+
23
+ # Streamlit UI
24
+ st.title("AI Response Generator")
25
+
26
+ # Input text box
27
+ input_text = st.text_area("Enter your input text:", "What's the point of making myself less accessible?")
28
+
29
+ loader = DirectoryLoader('./', glob="./*.pdf", loader_cls=PyPDFLoader)
30
+ documents = loader.load()
31
+
32
+ text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
33
+ texts = text_splitter.split_documents(documents)
34
+
35
+ instructor_embeddings = HuggingFaceInstructEmbeddings(model_name="hkunlp/instructor-xl", model_kwargs={"device": "cpu"})
36
+
37
+ persist_directory = 'db'
38
+ embedding = instructor_embeddings
39
+
40
+ vectordb = Chroma.from_documents(documents=texts, embedding=embedding, persist_directory=persist_directory)
41
+ vectordb.persist()
42
+ vectordb = Chroma(persist_directory=persist_directory, embedding_function=embedding)
43
+ retriever = vectordb.as_retriever(search_kwargs={"k": 3})
44
+
45
+ # Function to generate response
46
+ def generate_response(input_text):
47
+
48
+ docs = retriever.get_relevant_documents(input_text)
49
+
50
+ text = ""
51
+ for doc in docs:
52
+ text += doc.page_content
53
+
54
+ new_input_text = f"Given the below details:\n{text}\n\n do the following \n{input_text}\n"
55
+ response = llm.generate_content(new_input_text)
56
+
57
+ return response.text
58
+
59
+
60
+
61
+ # Button to generate response
62
+ if st.button("Generate Response"):
63
+ # Generate response
64
+ response_text = generate_response(input_text)
65
+
66
+ # Display the response
67
+ st.subheader("Generated Response:")
68
+ st.write(response_text)