Spaces:
Sleeping
Sleeping
# Prerequisite libraries | |
from dotenv import load_dotenv | |
from langchain.embeddings import HuggingFaceEmbeddings | |
from langchain.llms import HuggingFaceHub | |
from langchain.document_loaders import YoutubeLoader | |
from langchain.chains import LLMChain | |
from langchain.prompts import (SystemMessagePromptTemplate,HumanMessagePromptTemplate, | |
ChatPromptTemplate) | |
from langchain.text_splitter import RecursiveCharacterTextSplitter | |
from langchain.vectorstores import FAISS | |
import textwrap | |
from langchain_google_genai import GoogleGenerativeAI | |
load_dotenv() | |
def app(url,querry): | |
loader = YoutubeLoader.from_youtube_url(youtube_url=url) | |
transcript = loader.load() | |
embeddings = HuggingFaceEmbeddings() | |
rcts = RecursiveCharacterTextSplitter(chunk_size=400,chunk_overlap=20) | |
docs = rcts.split_documents(transcript) | |
db = FAISS.from_documents(docs,embeddings) | |
docs = db.similarity_search(querry, k=3) | |
docs_page_content = " ".join([d.page_content for d in docs]) | |
template = """ | |
hey you are a very helpful Ai assistant who is able to answer question about youtube videos based on the video's | |
transcript: {source} | |
Only use the factual imformation gathered from the transcript to answer the question also answer it in a very detailed manner more than 30 words. | |
If you feel that you dont have enough imformation to answer the question say "I dont have enough imformation in order to answer this question". | |
""" | |
llm = GoogleGenerativeAI(model="models/text-bison-001") | |
system_msg_template = SystemMessagePromptTemplate.from_template(template) | |
human_template = "Answer the following question: {question}" | |
human_msg_template = HumanMessagePromptTemplate.from_template(human_template) | |
chat_prompt = ChatPromptTemplate.from_messages( | |
[system_msg_template,human_msg_template], | |
) | |
chain = LLMChain(llm = llm,prompt = chat_prompt) | |
responce = chain.run(question = querry,source = docs_page_content) | |
return responce, docs | |