Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| from dotenv import load_dotenv | |
| from Components.FindKeyword import filter_keywords | |
| from Components.PreprocessText import get_pdf_text | |
| from Components.model_Responce import model_prediction | |
| from Components.GooglePalmChat import get_qa_chain | |
| from Components.Vector_db import encode_question, save_vector_store | |
| from streamlit_extras.add_vertical_space import add_vertical_space | |
| from langchain.text_splitter import CharacterTextSplitter | |
| from langchain.embeddings import OpenAIEmbeddings, HuggingFaceInstructEmbeddings | |
| from langchain.vectorstores import FAISS | |
| from htmlTemplates import css, bot_template, user_template | |
| from InstructorEmbedding import INSTRUCTOR | |
| import numpy as np | |
| from sklearn.metrics.pairwise import cosine_similarity | |
| def get_text_chunks(text): | |
| text_splitter = CharacterTextSplitter( | |
| separator="\n", | |
| chunk_size=1000, | |
| chunk_overlap=200, | |
| length_function=len | |
| ) | |
| chunks = text_splitter.split_text(text) | |
| return chunks | |
| def button_function(all_text): | |
| # Add your desired functionality here | |
| # predictions = [] | |
| for item in all_text: | |
| text = item['text'] | |
| # filename = item['filename'] | |
| pred = model_prediction(text) | |
| # predictions.append({"filename": filename, "prediction": pred}) | |
| item['prediction'] = pred | |
| return all_text | |
| # Main body | |
| def main(): | |
| # vector_store = None | |
| load_dotenv() | |
| st.header("Resume Filter using Keywords π¬") | |
| # Sidebar contents | |
| with st.sidebar: | |
| st.title('π€π¬ LLM Chat App') | |
| # upload a PDF file | |
| pdfs = st.file_uploader("Upload your Resumes", type='pdf',accept_multiple_files=True) | |
| # Get user preference for matching keywords | |
| # match_all_keywords = st.checkbox("Match All Keywords") | |
| # Choose functionality: Prediction or Filtering | |
| functionality = st.radio("Choose functionality:", ("Make Predictions", "Filter Keywords","Predict the Suitable canditate","Ask Questions")) | |
| # if functionality == "Ask Questions": | |
| add_vertical_space(5) | |
| st.write('Made with β€οΈ by Fazni Farook') | |
| if pdfs is not None: | |
| all_text = get_pdf_text(pdfs) | |
| # if 'conversation' not in st.session_state: | |
| # st.session_state.conversation = None | |
| # if 'chat_history' not in st.session_state: | |
| # st.session_state.chat_history = None | |
| if functionality == "Make Predictions": | |
| if st.button('Make Prediction'): | |
| with st.spinner("Progressing"): | |
| all_text = button_function(all_text) | |
| for item in all_text: | |
| filename = item["filename"] | |
| text = item["text"] | |
| pred = item["prediction"] | |
| st.markdown(f"**Filename: {filename}**") | |
| # st.markdown(text, unsafe_allow_html=True) | |
| st.markdown(f"**Prediction: {pred}**") | |
| st.markdown("---") | |
| elif functionality == "Filter Keywords": | |
| # getting the keywords | |
| keyword_input = st.text_input("Keyword") | |
| keywords = [keyword.strip() for keyword in keyword_input.split(",")] | |
| if st.button('Filter Keywords'): | |
| with st.spinner("Progressing"): | |
| filtered_text = filter_keywords(all_text, keywords) | |
| for item in filtered_text: | |
| filename = item["filename"] | |
| text = item["text"] | |
| st.markdown(f"**Filename: {filename}**") | |
| st.markdown(text, unsafe_allow_html=True) | |
| st.markdown("---") | |
| elif functionality == "Predict the Suitable canditate": | |
| # getting the keywords | |
| keyword = st.text_input("Keyword") | |
| if st.button('Filter Resumes'): | |
| with st.spinner("Progressing"): | |
| all_text = button_function(all_text) | |
| # filtered_text = filter_keywords(all_text, keywords) | |
| count = 0 | |
| for item in all_text: | |
| filename = item["filename"] | |
| prediction = item["prediction"] | |
| if keyword.lower()==prediction.lower(): | |
| count+=1 | |
| st.markdown(f"**Filename: {filename}**") | |
| st.markdown(prediction, unsafe_allow_html=True) | |
| st.markdown("---") | |
| if count==0: | |
| st.markdown("No match found") | |
| elif functionality == "Ask Questions": | |
| embeddings = HuggingFaceInstructEmbeddings() | |
| # new_db = FAISS.load_local("faiss_index_V2", embeddings) | |
| if st.button('Create Knowledgebase'): | |
| with st.spinner("Processing"): | |
| # embeddings = HuggingFaceInstructEmbeddings() | |
| # get pdf text | |
| raw_text = get_pdf_text(pdfs, preprocess=False) | |
| # get the text chunk | |
| text_chunks = get_text_chunks(raw_text) | |
| # create vector store | |
| save_vector_store(text_chunks,embeddings) | |
| st.write(css,unsafe_allow_html=True) | |
| # create conversation chain | |
| # st.session_state.conversation = get_conversation_chain(vector_store) | |
| question = st.text_input("Ask Question: ") | |
| if st.button('Ask Question'): | |
| with st.spinner("Processing"): | |
| if question: | |
| # Convert the question to a vector | |
| # question_vector = encode_question(question,embeddings) | |
| # Convert the vector store to a compatible format | |
| # output = new_db.similarity_search_by_vector(question_vector) | |
| # page_content = output[0].page_content | |
| # Asking Questions using Google Palm | |
| chain = get_qa_chain(embeddings) | |
| response = chain(question) | |
| st.header("Answer: ") | |
| st.write(response["result"]) | |
| if __name__=='__main__': | |
| main() |