File size: 2,210 Bytes
25ac852
 
4cabe54
25ac852
 
 
 
4cabe54
25ac852
 
f049aec
142a1cd
4cabe54
 
142a1cd
 
 
 
 
 
ebaeb7c
142a1cd
 
78d1477
 
 
 
25ac852
 
1ad69d1
4cabe54
 
78d1477
 
142a1cd
ce8e40e
 
 
ebaeb7c
 
 
 
 
 
1ad69d1
142a1cd
 
1ad69d1
 
142a1cd
1ad69d1
142a1cd
1ad69d1
 
25ac852
ebaeb7c
142a1cd
ebaeb7c
ce8e40e
1ad69d1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import os
from dotenv import load_dotenv
from groq import Groq
import streamlit as st

# Load environment variables
load_dotenv()

# Initialize the Groq client with API key
client = Groq(api_key=os.getenv("GROQ_API_KEY"))

# Function to generate MCQs as a 35-year experienced educator
def generate_mcqs_from_text(user_text):
    prompt = f"""
    You are a 35-year experienced educator specializing in crafting challenging and insightful MCQs. 
    Based on the following text, generate between 30 to 50 multiple-choice questions (MCQs). 
    Each question should:
    1. Test critical thinking and understanding of the content.
    2. Include four options (A, B, C, D), with one correct answer and three well-designed distractors.
    3. Provide clear, concise language and avoid ambiguity.
    4. Avoid using any special characters or formatting like '*' or '#' in the output.

    Format the output as:
    Question: [Your question here]  
    A. [Option 1]  
    B. [Option 2]  
    C. [Option 3]  
    D. [Option 4]  
    Correct Answer: [Correct Option]
    
    Text: {user_text}
    """
    chat_completion = client.chat.completions.create(
        messages=[{"role": "user", "content": prompt}],
        model="gemma2-9b-it",  # Use a valid Groq-supported model
    )
    return chat_completion.choices[0].message.content

# Function to clean the output and remove unwanted characters
def clean_output(mcqs):
    # Remove special characters like '*' and '#'
    mcqs = mcqs.replace("*", "").replace("#", "")
    return mcqs

# Streamlit App
st.title("MCQ Generator with Correct Answers")
st.write("Paste your text below, and the app will generate MCQs with the correct answers.")

# Input text from user
user_text = st.text_area("Enter the text for generating MCQs:", height=200)

if st.button("Generate MCQs"):
    if user_text.strip():
        with st.spinner("Generating MCQs..."):
            mcqs = generate_mcqs_from_text(user_text)
            cleaned_mcqs = clean_output(mcqs)  # Clean the MCQs output
        st.subheader("Generated MCQs with Correct Answers:")
        st.text_area("MCQs", value=cleaned_mcqs, height=600)
    else:
        st.error("Please enter text for generating MCQs.")