Ask_from_Web / app.py
Soumya79's picture
Update app.py
70c7cb4 verified
import streamlit as st
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.runnables import RunnablePassthrough
import os
from dotenv import load_dotenv
load_dotenv()
from langchain_community.document_loaders import WebBaseLoader
from langchain.vectorstores import FAISS
from langchain_core.output_parsers import StrOutputParser
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.prompts import ChatPromptTemplate
from langchain_huggingface import HuggingFaceEmbeddings
st.title("Ask From Website")
user_url = st.text_input("Enter your URL here")
user_question = st.text_input("Enter your question from the website:")
query_button = st.button("View Results")
def data_ingestion(path):
loader = WebBaseLoader(path)
data = loader.load()
return data
def VectorStore(data, embedding):
splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=500)
chunks = splitter.split_documents(data)
vector = FAISS.from_documents(chunks, embedding)
retriever = vector.as_retriever()
return retriever
def prompt_helper():
template = """ Answer Based on the following context:
{context}
Question: {question}
Provide only helpful information.
"""
prompt = ChatPromptTemplate.from_template(template)
return prompt
def main():
if user_url and user_question:
data = data_ingestion(user_url)
retriever = VectorStore(data, embedding)
prompt = prompt_helper()
chain = (
{'context': retriever, 'question': RunnablePassthrough()}
| prompt
| llm
| StrOutputParser()
)
response = chain.invoke(user_question)
return response
llm = ChatGoogleGenerativeAI(model='gemini-1.5-flash')
embedding = HuggingFaceEmbeddings(model_name='sentence-transformers/all-MiniLM-L6-v2')
if query_button:
response = main()
if response:
st.markdown(response)