Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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
|
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 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
|
24 |
-
# Title
|
25 |
st.title("Legal Assistant")
|
26 |
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
|
33 |
-
|
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 |
-
|
54 |
-
|
55 |
-
|
|
|
|
|
|
|
56 |
|
57 |
-
|
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 |
-
|
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 |
-
|
79 |
-
|
|
|
|
|
80 |
|
81 |
if prompt1:
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
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 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|