Amelia-James's picture
Update app.py
142a1cd verified
raw
history blame
4.95 kB
# 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 based on the input text
# def generate_mcqs_from_text(user_text):
# prompt = f"""
# Based on the following text, generate between 30 to 50 multiple-choice questions.
# Each question should have four answer options, with one correct answer and three distractors.
# Make sure the questions are clear and test the user's understanding of the content.
# Provide the questions in the following format:
# 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 model that supports chat completions
# )
# return chat_completion.choices[0].message.content
# # Function to evaluate user answers
# def evaluate_answers(mcqs, user_answers):
# prompt = f"""
# Here are the user's answers to the following multiple-choice questions.
# Please evaluate them as an experienced teacher, providing feedback on correctness,
# and explain why each answer is right or wrong.
# MCQs: {mcqs}
# User Answers: {user_answers}
# """
# chat_completion = client.chat.completions.create(
# messages=[{"role": "user", "content": prompt}],
# model="gemma2-9b-it", # Use a valid model
# )
# return chat_completion.choices[0].message.content
# # Streamlit App
# st.title("Study Assistant - MCQ Generator & Evaluator")
# st.sidebar.header("Input Settings")
# # Input text from user
# user_text = st.sidebar.text_area("Enter the text for generating MCQs:", height=200)
# if st.sidebar.button("Generate MCQs"):
# if user_text.strip():
# with st.spinner("Generating MCQs..."):
# mcqs = generate_mcqs_from_text(user_text)
# st.subheader("Generated MCQs:")
# st.text_area("MCQs", value=mcqs, height=400)
# st.session_state["mcqs"] = mcqs # Store MCQs for evaluation
# else:
# st.error("Please enter text for generating MCQs.")
# # Input user answers for evaluation
# if "mcqs" in st.session_state:
# user_answers = st.text_area("Enter your answers (e.g., A, B, C, D for each question):", height=100)
# if st.button("Evaluate Answers"):
# if user_answers.strip():
# with st.spinner("Evaluating answers..."):
# evaluation_result = evaluate_answers(st.session_state["mcqs"], user_answers)
# st.subheader("Evaluation Result:")
# st.text_area("Evaluation", value=evaluation_result, height=400)
# else:
# st.error("Please enter your answers for evaluation.")
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. Provide the correct answer with each MCQ.
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
# 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)
st.subheader("Generated MCQs with Correct Answers:")
st.text_area("MCQs", value=mcqs, height=600)
else:
st.error("Please enter text for generating MCQs.")