Spaces:
Sleeping
Sleeping
| 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) | |