Update app.py
Browse files
app.py
CHANGED
@@ -28,7 +28,7 @@ def get_pdf_text(pdf):
|
|
28 |
return text
|
29 |
|
30 |
def get_text_chunks(text: str):
|
31 |
-
|
32 |
text_splitter = RecursiveCharacterTextSplitter(
|
33 |
chunk_size=1000,
|
34 |
chunk_overlap=100,
|
@@ -39,29 +39,32 @@ def get_text_chunks(text: str):
|
|
39 |
return chunks
|
40 |
|
41 |
def get_vectorstore(text_chunks):
|
42 |
-
|
43 |
embeddings = OpenAIEmbeddings()
|
44 |
vectorstore = FAISS.from_texts(texts=text_chunks, embedding=embeddings)
|
45 |
return vectorstore
|
46 |
|
47 |
def search_vectorstore(vectorDB, query):
|
48 |
-
|
49 |
# Specify the search type
|
50 |
search_type = 'similarity'
|
51 |
search_results = vectorDB.search(query, search_type=search_type)
|
52 |
return search_results
|
53 |
|
54 |
def generate_quiz_questions(search_results, num_questions):
|
55 |
-
|
56 |
st.header(f"Quiz Generator: {quiz_name}")
|
57 |
st.subheader(f"Topic: {quiz_topic}")
|
|
|
|
|
|
|
58 |
|
59 |
# Placeholder for quiz questions
|
60 |
quiz_questions = []
|
61 |
|
62 |
# Generate questions using GPT-3.5-turbo-16k with the correct endpoint
|
63 |
for i in range(num_questions):
|
64 |
-
prompt = f"Generate a multiple-choice question
|
65 |
|
66 |
# Prepare messages
|
67 |
messages = [
|
@@ -108,7 +111,7 @@ if __name__ == '__main__':
|
|
108 |
# User inputs
|
109 |
quiz_name = st.text_input('Enter Quiz Name:')
|
110 |
quiz_topic = st.text_input('Enter Quiz Topic:')
|
111 |
-
num_questions = st.number_input('Enter Number of Questions:', min_value=1, value=
|
112 |
pdf_content = st.file_uploader("Upload PDF Content for Questions:", type='pdf')
|
113 |
|
114 |
# Generate quiz if all inputs are provided
|
|
|
28 |
return text
|
29 |
|
30 |
def get_text_chunks(text: str):
|
31 |
+
# This function will split the text into smaller chunks
|
32 |
text_splitter = RecursiveCharacterTextSplitter(
|
33 |
chunk_size=1000,
|
34 |
chunk_overlap=100,
|
|
|
39 |
return chunks
|
40 |
|
41 |
def get_vectorstore(text_chunks):
|
42 |
+
# This function will create a vector database as well as create and store the embedding of the text chunks into the VectorDB
|
43 |
embeddings = OpenAIEmbeddings()
|
44 |
vectorstore = FAISS.from_texts(texts=text_chunks, embedding=embeddings)
|
45 |
return vectorstore
|
46 |
|
47 |
def search_vectorstore(vectorDB, query):
|
48 |
+
# This function searches for specific data or content in the vector database
|
49 |
# Specify the search type
|
50 |
search_type = 'similarity'
|
51 |
search_results = vectorDB.search(query, search_type=search_type)
|
52 |
return search_results
|
53 |
|
54 |
def generate_quiz_questions(search_results, num_questions):
|
55 |
+
# Generate quiz questions with options using GPT-3.5-turbo-16k based on the search results
|
56 |
st.header(f"Quiz Generator: {quiz_name}")
|
57 |
st.subheader(f"Topic: {quiz_topic}")
|
58 |
+
# Process PDF and create vector database
|
59 |
+
if st.button('Generate Quiz'):
|
60 |
+
st.session_state['vectorDB'] = (pdf_content)
|
61 |
|
62 |
# Placeholder for quiz questions
|
63 |
quiz_questions = []
|
64 |
|
65 |
# Generate questions using GPT-3.5-turbo-16k with the correct endpoint
|
66 |
for i in range(num_questions):
|
67 |
+
prompt = f"As a highly intelligent and powerful quiz generator, your task is to Generate a different multiple-choice question and correct answer in a comprehensive and accurate format for the same related to:\n- {random.choice(search_results)} and the response generated by you should be comprehensive and relevant to the topic specified, you should not generate the same content multiple times in a single response, generate the explaination for each correct answer"
|
68 |
|
69 |
# Prepare messages
|
70 |
messages = [
|
|
|
111 |
# User inputs
|
112 |
quiz_name = st.text_input('Enter Quiz Name:')
|
113 |
quiz_topic = st.text_input('Enter Quiz Topic:')
|
114 |
+
num_questions = st.number_input('Enter Number of Questions:', min_value=1, value=5, step=1)
|
115 |
pdf_content = st.file_uploader("Upload PDF Content for Questions:", type='pdf')
|
116 |
|
117 |
# Generate quiz if all inputs are provided
|