dhanuhs/Orca
0
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 