Spaces:
Runtime error
Runtime error
import pandas as pd | |
import streamlit as st | |
import google.generativeai as palm | |
import pandas as pd | |
from langchain.text_splitter import RecursiveCharacterTextSplitter | |
from langchain.embeddings import HuggingFaceEmbeddings | |
from langchain.embeddings import GooglePalmEmbeddings | |
from langchain.llms import GooglePalm | |
from langchain.document_loaders import PyPDFLoader,DirectoryLoader | |
# from langchain.llms import CTransformers | |
from langchain.vectorstores import FAISS | |
from langchain.chains import RetrievalQA,ConversationalRetrievalChain | |
from langchain.prompts import PromptTemplate | |
from langchain.cache import InMemoryCache | |
from langchain.llms import VLLM | |
from langchain.memory.buffer import ConversationBufferMemory | |
from langchain.chains.conversation.memory import ConversationSummaryBufferMemory | |
import gradio as gr | |
import requests | |
import os | |
from langchain.embeddings import HuggingFaceBgeEmbeddings | |
# models = [m for m in palm.list_models() if "generateText" in m.supported_generation_methods] | |
# model = models[0].name | |
# print('Imports Done') | |
db_path = './vectordb/db_faiss' | |
# print('Reading Document') | |
# os.mkdir('/home/Sparsh/data') | |
# url = 'https://ia803106.us.archive.org/13/items/Encyclopedia_Of_Agriculture_And_Food_Systems/Encyclopedia%20of%20Agriculture%20and%20Food%20Systems.pdf' | |
# response = requests.get(url) | |
# with open('/home/Sparsh/data/document.pdf', 'wb') as f: | |
# f.write(response.content) | |
# | |
# print('Creating Chunks') | |
# loader = DirectoryLoader('C:/Users/HP/PycharmProjects/MLSCBot/venv/MLSCBot',glob = "*.pdf",loader_cls = PyPDFLoader) | |
# data = loader.load() | |
# splitter = RecursiveCharacterTextSplitter(chunk_size = 500,chunk_overlap = 100) | |
# chunks = splitter.split_documents(data) | |
# | |
# print('Mapping Embeddings') | |
model_name = "BAAI/bge-base-en" | |
encode_kwargs = {'normalize_embeddings': True} # set True to compute cosine similarity | |
model_norm = HuggingFaceBgeEmbeddings(model_name=model_name, | |
encode_kwargs=encode_kwargs) | |
embeddings = model_norm | |
# # db = FAISS.from_documents(chunks,embeddings) | |
# # db.save_local(db_path) | |
db = FAISS.load_local(db_path,embeddings) | |
# print('Prompt Chain') | |
custom_prompt_template = """You are a helpful NGO bot working for Join The Dots foundation designd to answer the questions of the basic CS fundamentals, your task is to accurately answer the students and resolve their query using any information that you have if you think it is correct | |
Use the following context (delimited by <ctx></ctx>) and the chat history (delimited by <hs></hs>) to answer the question: | |
------ | |
<ctx> | |
{context} | |
</ctx> | |
------ | |
<hs> | |
{history} | |
</hs> | |
------ | |
{question} | |
Only return the helpful answer and no extra information.Mention your name and what do now every message | |
Helpful answer: | |
""" | |
prompt = PromptTemplate(template=custom_prompt_template, | |
input_variables=['history','context', 'question']) | |
# memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True) | |
# print('Creating LLM') | |
llm2 = GooglePalm( | |
max_new_tokens=1024, | |
top_k=10, | |
top_p=0.5, | |
temperature=0.5) | |
print(llm2("What is the capital of France ?")) | |
# qa_chain = ConversationalRetrievalChain.from_llm(llm2,retriever=db.as_retriever(search_kwargs={'k': 2}), | |
# return_source_documents=False, | |
# memory=memory) | |
qa_chain = RetrievalQA.from_chain_type(llm=llm2, | |
chain_type='stuff', | |
retriever=db.as_retriever(search_kwargs={'k': 1}), | |
return_source_documents=False, | |
chain_type_kwargs={'prompt': prompt | |
,'memory' : ConversationBufferMemory( | |
memory_key="history", | |
input_key = "question")}) | |
history_df = pd.DataFrame(columns = ['Question','Answer']) | |
def qa_bot(query): | |
response = qa_chain({'query': query}) | |
print(response) | |
return (response['result']) | |
st.markdown("<h1 style='text-align: center; color: white; font: Charcuterie'>JTDoubts</h1>", unsafe_allow_html=True) | |
hide_streamlit_style = """ | |
<style> | |
#MainMenu {visibility: hidden;} | |
header {visibility: hidden;} | |
footer {visibility: hidden;} | |
</style> | |
""" | |
st.markdown(hide_streamlit_style, unsafe_allow_html=True) | |
# st.image('./banner.png',use_column_width=True) | |
if "messages" not in st.session_state: | |
st.session_state.messages = [] | |
for message in st.session_state.messages: | |
with st.chat_message(message["role"]): | |
st.markdown(message["content"]) | |
if prompt := st.chat_input("Hello!How can I help you?"): | |
st.session_state.messages.append({"role": "user", "content": prompt}) | |
with st.chat_message("user"): | |
st.markdown(prompt) | |
with st.chat_message("assistant"): | |
message_placeholder = st.empty() | |
full_response = qa_bot(prompt) | |
message_placeholder.markdown(full_response + "▌") | |
message_placeholder.markdown(full_response) | |
st.session_state.messages.append({"role": "assistant", "content": full_response}) | |
# with gr.Blocks(theme='upsatwal/mlsc_tiet') as demo: | |
# title = gr.HTML("<h1>MLSCBot</h1>") | |
# with gr.Row(): | |
# img = gr.Image('C:/Users/HP/Downlo0ads/banner.png',label = 'MLSC Logo',show_label = False,elem_id = 'image',height = 200) | |
# input = gr.Textbox(label="How can I assist you?") # Textbox for user input | |
# output = gr.Textbox(label="Here you go:") # Textbox for chatbot response | |
# btn = gr.Button(value="Answer",elem_classes="button-chatbot",variant = "primary") # Button to trigger the agent call | |
# btn.click(fn=qa_bot, inputs=input,outputs=output) | |
# demo.launch(share=True, debug=True,show_api = False,show_error = False) | |