# %%capture # !pip install -q transformers einops accelerate langchain bitsandbytes !huggingface-cli login !mkdir pdfs # %%capture # pip install pypdf # %%capture # pip install langchain-community from langchain.document_loaders import PyPDFDirectoryLoader loader=PyPDFDirectoryLoader("pdfs") data=loader.load() # we are going to create the chunks from langchain.text_splitter import RecursiveCharacterTextSplitter text_chunks=RecursiveCharacterTextSplitter(chunk_size=300,chunk_overlap=20) chunks=text_chunks.split_documents(data) len(chunks) # creating embeddings using huggingface embedding model from langchain.embeddings import HuggingFaceEmbeddings # Commented out IPython magic to ensure Python compatibility. # %%capture # pip install sentence-transformers embeddings=HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2") # %%capture # pip install faiss-cpu from langchain.vectorstores import FAISS vectordabase=FAISS.from_documents(chunks,embeddings) question="what is generative ai?" vectordabase.similarity_search(question) model="google/flan-t5-large" from transformers import AutoTokenizer, AutoModelForSeq2SeqLM,pipeline from langchain import HuggingFacePipeline tokenizer=AutoTokenizer.from_pretrained(model) # tokenization(token) model1=AutoModelForSeq2SeqLM.from_pretrained(model) # (generation) pipe=pipeline("text2text-generation",model=model1,tokenizer=tokenizer) llm=HuggingFacePipeline(pipeline=pipe, model_kwargs={"temperature": 0, "max_length": 512}) # retrieval qa takes prompt template and llm from langchain.prompts import PromptTemplate template = """use the context to provide a concise answer and if you don't know just say don't now. {context} Question: {question} Helpful Answer:""" QA_CHAIN_PROMPT = PromptTemplate.from_template(template) from langchain.chains import RetrievalQA qa_chain = RetrievalQA.from_chain_type( llm, retriever=vectordabase.as_retriever(), chain_type_kwargs={"prompt": QA_CHAIN_PROMPT} ) qa_chain.run("what is generative ai?") question="more detail about generative ai?" result = qa_chain({"query": question}) print(result["result"]) def fetch(question,history): result=qa_chain({"query":question}) return result["result"] # %%capture # pip install gradio import gradio as gr gr.ChatInterface( fetch, chatbot=gr.Chatbot(height=300), textbox=gr.Textbox(placeholder="You can ask a question", container=False, scale=7), title="A Generative AI chatbot", description="You can ask questions related to Generative AI", theme="soft", examples=["what is Generative AI?", "what are the examples?", "what is LLM?"], cache_examples=True, retry_btn=None, undo_btn="Delete Previous", clear_btn="Clear", ).launch(share=True)