VishnuRamDebyez commited on
Commit
ea3dde8
·
verified ·
1 Parent(s): 0525cbf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -83
app.py CHANGED
@@ -9,100 +9,62 @@ from langchain_community.vectorstores import FAISS
9
  from langchain_community.document_loaders import PyPDFDirectoryLoader
10
  from langchain_google_genai import GoogleGenerativeAIEmbeddings
11
  from dotenv import load_dotenv
12
- import time
13
-
14
- # Load environment variables
15
  load_dotenv()
16
- groq_api_key = os.getenv('groqapi')
17
- os.environ["GOOGLE_API_KEY"] = os.getenv("GOOGLE_API_KEY")
18
 
19
- # Check for missing API keys
20
- if not groq_api_key or not os.environ["GOOGLE_API_KEY"]:
21
- st.error("API keys are missing. Check your .env file.")
22
- st.stop()
23
 
24
- # Title
25
  st.title("Legal Assistant")
26
 
27
- # Initialize LLM
28
- llm = ChatGroq(
29
- groq_api_key=groq_api_key,
30
- model_name="Llama3-8b-8192"
31
- )
32
 
33
- # Define prompt
34
- prompt = ChatPromptTemplate.from_template(
35
- """
36
- Answer the questions based on the provided context only.
37
- Please provide the most accurate response based on the question.
38
- <context>
39
- {context}
40
- <context>
41
- Questions: {input}
42
- """
43
  )
44
 
45
- # Function to handle vector embedding
46
  def vector_embedding():
 
47
  if "vectors" not in st.session_state:
48
- try:
49
- # Initialize embeddings
50
- st.session_state.embeddings = GoogleGenerativeAIEmbeddings(model="models/embedding-001")
51
-
52
- # Load documents
53
- st.session_state.loader = PyPDFDirectoryLoader("./new") # Data ingestion
54
- st.session_state.docs = st.session_state.loader.load()
55
-
56
- if not st.session_state.docs:
57
- st.error("No documents found in the directory './new'. Please add PDFs.")
58
- return
59
-
60
- # Split documents into chunks
61
- st.session_state.text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
62
- st.session_state.final_documents = st.session_state.text_splitter.split_documents(st.session_state.docs)
63
-
64
- if not st.session_state.final_documents:
65
- st.error("Document splitting failed. Check the loaded documents.")
66
- return
67
-
68
- # Generate vector embeddings
69
- st.session_state.vectors = FAISS.from_documents(st.session_state.final_documents, st.session_state.embeddings)
70
-
71
- except Exception as e:
72
- st.error(f"Error during vector embedding: {e}")
73
-
74
- # Call vector_embedding function
75
  vector_embedding()
76
 
77
- # User input for query
78
- prompt1 = st.text_input("Enter Your Question From Documents")
 
 
 
 
 
 
 
 
79
 
80
  if prompt1:
81
- try:
82
- # Create document chain and retrieval chain
83
- document_chain = create_stuff_documents_chain(llm, prompt)
84
- retriever = st.session_state.vectors.as_retriever()
85
- retrieval_chain = create_retrieval_chain(retriever, document_chain)
86
-
87
- # Measure response time
88
- start = time.process_time()
89
- response = retrieval_chain.invoke({'input': prompt1})
90
- end = time.process_time()
91
-
92
- # Display response and response time
93
- if "answer" in response:
94
- st.write(response["answer"])
95
- else:
96
- st.error("No answer could be generated. Please try a different query.")
97
-
98
- st.write(f"Response time: {end - start:.2f} seconds")
99
-
100
- except Exception as e:
101
- st.error(f"Error processing the query: {e}")
102
-
103
- # Reset session state button
104
- if st.button("Reset Session"):
105
- for key in ["embeddings", "loader", "docs", "text_splitter", "final_documents", "vectors"]:
106
- if key in st.session_state:
107
- del st.session_state[key]
108
- st.experimental_rerun()
 
9
  from langchain_community.document_loaders import PyPDFDirectoryLoader
10
  from langchain_google_genai import GoogleGenerativeAIEmbeddings
11
  from dotenv import load_dotenv
12
+ import os
 
 
13
  load_dotenv()
 
 
14
 
15
+ ## load the GROQ And OpenAI API
16
+
17
+ groq_api_key=os.getenv('groqapi')
18
+ os.environ["GOOGLE_API_KEY"]=os.getenv("GOOGLE_API_KEY")
19
 
 
20
  st.title("Legal Assistant")
21
 
22
+ llm=ChatGroq(groq_api_key=groq_api_key,
23
+ model_name="Llama3-8b-8192")
 
 
 
24
 
25
+ prompt=ChatPromptTemplate.from_template(
26
+ """
27
+ Answer the questions based on the provided context only.
28
+ Please provide the most accurate response based on the question
29
+ <context>
30
+ {context}
31
+ <context>
32
+ Questions:{input}
33
+
34
+ """
35
  )
36
 
 
37
  def vector_embedding():
38
+
39
  if "vectors" not in st.session_state:
40
+
41
+ st.session_state.embeddings=GoogleGenerativeAIEmbeddings(model = "models/embedding-001")
42
+ st.session_state.loader=PyPDFDirectoryLoader("./new") ## Data Ingestion
43
+ st.session_state.docs=st.session_state.loader.load() ## Document Loading
44
+ st.session_state.text_splitter=RecursiveCharacterTextSplitter(chunk_size=1000,chunk_overlap=200) ## Chunk Creation
45
+ st.session_state.final_documents=st.session_state.text_splitter.split_documents(st.session_state.docs[:20]) #splitting
46
+ st.session_state.vectors=FAISS.from_documents(st.session_state.final_documents,st.session_state.embeddings) #vector OpenAI embeddings
47
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  vector_embedding()
49
 
50
+
51
+
52
+ prompt1=st.text_input("Enter Your Question From Doduments")
53
+
54
+
55
+
56
+
57
+ import time
58
+
59
+
60
 
61
  if prompt1:
62
+ document_chain=create_stuff_documents_chain(llm,prompt)
63
+ retriever=st.session_state.vectors.as_retriever()
64
+ retrieval_chain=create_retrieval_chain(retriever,document_chain)
65
+ start=time.process_time()
66
+ response=retrieval_chain.invoke({'input':prompt1})
67
+ print("Response time :",time.process_time()-start)
68
+ st.write(response['answer'])
69
+
70
+