CoolFace
Apppublic

dhanuhs/Orca

sourceHugging Faceupdated 10mo agoView on Hugging Face
0likes
script.py99 linesDownload Raw Back to root
1import os
2import streamlit as st
3import speech_recognition as sr
4from langchain.document_loaders import PyPDFLoader
5from langchain.vectorstores import FAISS
6from langchain.embeddings import HuggingFaceEmbeddings
7from langchain.chains import RetrievalQA
8from google.generativeai import configure, GenerativeModel
9
10
11GEMINI_API_KEY = "AIzaSyDyOQa8cnZcO9227h8W26tgMxRHv6Ma7xM"
12configure(api_key=GEMINI_API_KEY)
13
14
15PDF_FOLDER = "DataSets/"
16if not os.path.exists(PDF_FOLDER):
17    os.makedirs(PDF_FOLDER)
18
19
20def load_and_index_pdfs():
21    pdf_files = [os.path.join(PDF_FOLDER, f) for f in os.listdir(PDF_FOLDER) if f.endswith(".pdf")]
22    if not pdf_files:
23        return None
24    
25    documents = []
26    for pdf in pdf_files:
27        loader = PyPDFLoader(pdf)
28        documents.extend(loader.load())
29
30    embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
31    vectorstore = FAISS.from_documents(documents, embeddings)
32    return vectorstore
33
34
35def chat_with_gemini(prompt, history):
36    model = GenerativeModel("gemini-2.0-pro-exp-02-05")  
37    conversation = "\n".join(history) + "\nUser: " + prompt
38    response = model.generate_content(conversation)
39    return response.text
40
41
42st.set_page_config(page_title="DGCT Guide for AI&DS", page_icon="๐Ÿ“˜")
43st.image("Assests/logo.png", width=150)  
44st.title("๐Ÿ“˜ DGCT Guide for AI&DS")
45st.subheader("Conversational AI Chatbot powered by Gemini")
46
47
48vector_db = load_and_index_pdfs()
49retriever = vector_db.as_retriever() if vector_db else None
50
51
52if "chat_history" not in st.session_state:
53    st.session_state.chat_history = []
54
55
56with st.sidebar:
57    show_history = st.checkbox("๐Ÿ“œ Show Chat History", value=False)
58
59if show_history:
60    st.sidebar.subheader("Previous Conversations")
61    for i in range(0, len(st.session_state.chat_history), 2):
62        st.sidebar.markdown(f"๐Ÿง‘โ€๐Ÿ’ฌ **You:** {st.session_state.chat_history[i]}")
63        if i + 1 < len(st.session_state.chat_history):
64            st.sidebar.markdown(f"๐Ÿค– **AI:** {st.session_state.chat_history[i + 1]}")
65    st.sidebar.markdown("---")
66    if st.sidebar.button("โŒ Clear Chat History"):
67        st.session_state.chat_history = []
68        st.sidebar.success("Chat history cleared!")
69
70
71for i in range(0, len(st.session_state.chat_history), 2):
72    with st.chat_message("user"):
73        st.markdown(st.session_state.chat_history[i])  
74    if i + 1 < len(st.session_state.chat_history):
75        with st.chat_message("assistant"):
76            st.markdown(st.session_state.chat_history[i + 1])  
77
78
79query = st.chat_input("Ask a question...")
80if query:
81    with st.chat_message("user"):
82        st.markdown(query)
83    
84    with st.spinner("Thinking... ๐Ÿ’ก"):
85        context = ""
86        if retriever:
87            docs = retriever.get_relevant_documents(query)
88            context = "\n".join([doc.page_content for doc in docs])
89
90        final_prompt = f"{context}\n\nUser: {query}"
91        response = chat_with_gemini(final_prompt, st.session_state.chat_history)
92
93        
94        st.session_state.chat_history.append(f"{query}")  
95        st.session_state.chat_history.append(f"{response}")  
96
97        with st.chat_message("assistant"):
98            st.markdown(response)
99