import pdfplumber import streamlit as st from groq import Groq # Replace with your actual API key API_KEY = "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" # Initialize the Groq client with the API key client = Groq(api_key=API_KEY) # Function to extract text from the PDF def extract_text_from_pdf(pdf_path): with pdfplumber.open(pdf_path) as pdf: full_text = "" for page in pdf.pages: full_text += page.extract_text() return full_text # Function to search for relevant information based on the query def search_relevant_info(query, text): lower_text = text.lower() lower_query = query.lower() if lower_query in lower_text: start = lower_text.find(lower_query) end = start + 1000 # Extracting a portion of the text (adjustable) return text[start:end] else: return "Sorry, I couldn't find any relevant information." # Function to generate response from Groq API def generate_response_with_retrieved_info(query, retrieved_text): chat_completion = client.chat.completions.create( messages=[ { "role": "user", "content": f"Query: {query}\nContext: {retrieved_text}", } ], model="llama3-8b-8192", ) return chat_completion.choices[0].message.content # Main chatbot function def chatbot(query, pdf_path): # Step 1: Extract text from the PDF extracted_text = extract_text_from_pdf(pdf_path) # Step 2: Search for relevant information based on the query retrieved_text = search_relevant_info(query, extracted_text) # Step 3: Generate a response using the Groq API response = generate_response_with_retrieved_info(query, retrieved_text) return response # Streamlit UI def main(): st.title("University Information Chatbot") # Upload PDF pdf_file = st.file_uploader("Upload the University Information PDF", type=["pdf"]) if pdf_file: # Text input for user query query = st.text_input("Ask a question about the university:") if query: # Process the query with st.spinner("Searching for relevant information..."): response = chatbot(query, pdf_file) st.write("Response:", response) if __name__ == "__main__": main()