VishnuRamDebyez commited on
Commit
7c614e0
·
verified ·
1 Parent(s): 049cf45

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +39 -75
app.py CHANGED
@@ -9,98 +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
- st.session_state.embeddings = GoogleGenerativeAIEmbeddings(model="models/embedding-001")
50
- st.session_state.loader = PyPDFDirectoryLoader("./new")
51
- st.session_state.docs = st.session_state.loader.load()
52
 
53
- if not st.session_state.docs:
54
- st.error("No documents found in the directory './new'. Please add PDFs.")
55
- return
 
 
 
56
 
57
- st.session_state.text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
58
- st.session_state.final_documents = st.session_state.text_splitter.split_documents(st.session_state.docs)
59
 
60
- if not st.session_state.final_documents:
61
- st.error("Document splitting failed. Check the loaded documents.")
62
- return
63
 
64
- sample_text = st.session_state.final_documents[0].page_content if st.session_state.final_documents else None
65
- if sample_text:
66
- test_embedding = st.session_state.embeddings.embed(sample_text)
67
- st.write(f"Sample embedding generated successfully: {test_embedding[:5]}...")
68
 
69
- st.session_state.vectors = FAISS.from_documents(st.session_state.final_documents, st.session_state.embeddings)
70
- st.write("Vector embeddings created successfully.")
71
 
72
- except Exception as e:
73
- st.error(f"Error during vector embedding: {e}")
74
 
75
- # Call vector_embedding function
76
- vector_embedding()
77
 
78
- # User input for query
79
- prompt1 = st.text_input("Enter Your Question From Documents")
 
 
80
 
81
  if prompt1:
82
- try:
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
- start = time.process_time()
88
- response = retrieval_chain.invoke({'input': prompt1})
89
- end = time.process_time()
90
-
91
- if "answer" in response:
92
- st.write(response["answer"])
93
- else:
94
- st.error("No answer could be generated. Please try a different query.")
95
-
96
- st.write(f"Response time: {end - start:.2f} seconds")
97
-
98
- except Exception as e:
99
- st.error(f"Error processing the query: {e}")
100
-
101
- # Reset session state button
102
- if st.button("Reset Session"):
103
- for key in ["embeddings", "loader", "docs", "text_splitter", "final_documents", "vectors"]:
104
- if key in st.session_state:
105
- del st.session_state[key]
106
- 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("./2") ## 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
+