Engineer786 commited on
Commit
d7bdc33
·
verified ·
1 Parent(s): cfcf06e

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +59 -0
app.py ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from PyPDF2 import PdfReader
3
+ from sentence_transformers import SentenceTransformer
4
+ import faiss
5
+ import os
6
+ from groq import Groq
7
+
8
+ # Initialize Groq client
9
+ client = Groq(api_key=os.environ.get("GROQ_API_KEY"))
10
+
11
+ # Initialize embedding model
12
+ embedding_model = SentenceTransformer('all-MiniLM-L6-v2')
13
+
14
+ # Upload PDF
15
+ st.title("PDF to Quiz Generator")
16
+ uploaded_file = st.file_uploader("Upload a PDF file", type=["pdf"])
17
+
18
+ if uploaded_file:
19
+ # Extract text from PDF
20
+ st.write("Processing PDF...")
21
+ reader = PdfReader(uploaded_file)
22
+ pdf_text = ""
23
+ for page in reader.pages:
24
+ pdf_text += page.extract_text()
25
+
26
+ # Split text into chunks
27
+ chunk_size = 512 # Adjust as needed
28
+ text_chunks = [pdf_text[i:i + chunk_size] for i in range(0, len(pdf_text), chunk_size)]
29
+
30
+ # Generate embeddings
31
+ st.write("Generating embeddings...")
32
+ embeddings = embedding_model.encode(text_chunks)
33
+
34
+ # Store embeddings in FAISS
35
+ dimension = embeddings.shape[1]
36
+ index = faiss.IndexFlatL2(dimension)
37
+ index.add(embeddings)
38
+
39
+ # Generate questions using Groq API
40
+ def generate_question(content):
41
+ response = client.chat.completions.create(
42
+ messages=[{"role": "user", "content": f"Generate a multiple-choice question from: {content}"}],
43
+ model="llama3-8b-8192",
44
+ )
45
+ return response.choices[0].message.content
46
+
47
+ # Generate quiz
48
+ st.write("Generating quiz...")
49
+ quiz = []
50
+ for chunk in text_chunks:
51
+ question = generate_question(chunk)
52
+ quiz.append(question)
53
+
54
+ # Display the quiz
55
+ st.write("Here is your quiz:")
56
+ for i, q in enumerate(quiz, 1):
57
+ st.markdown(f"**Question {i}:** {q}")
58
+
59
+ ---