DOGE_Hackathon / app.py
WAQASCHANNA's picture
Update app.py
c675bc7 verified
import streamlit as st
from openai import OpenAI
import time
# Replace with your Grok API key, considering Hugging Face's secrets management
grok_api_key = st.secrets["GROK_API_KEY"]
client = OpenAI(
api_key=grok_api_key,
base_url="https://api.x.ai/v1",
)
def generate_question(topic):
prompt = f"Generate a multiple-choice question about {topic}"
response = client.completions.create(
model="grok-beta",
prompt=prompt,
max_tokens=150, # Limit the response length
n=1, # Generate only 1 response
stop=None, # No specific stop sequence
)
question = response.choices[0].text.split("\n")[0]
choices = response.choices[0].text.split("\n")[1:]
return question, choices
def game_mode(topic):
st.write("Game Mode: Answer quickly!")
# Start a timer for the game mode (30 seconds per question)
start_time = time.time()
question, choices = generate_question(topic)
st.write(question)
# Use session state to track whether the answer has been submitted
if 'submitted' not in st.session_state:
st.session_state.submitted = False
if not st.session_state.submitted:
answer = st.radio("Select your answer:", choices)
submit_button = st.button("Submit")
if submit_button:
st.session_state.submitted = True
st.write("You selected:", answer)
time_elapsed = time.time() - start_time
st.write(f"Time taken: {int(time_elapsed)} seconds")
if time_elapsed >= 30:
st.warning("Time's up!")
else:
st.success("Good job!")
else:
st.write("You've already submitted your answer.")
def quiz_mode(topic):
st.write("Quiz Mode: Take your time!")
question, choices = generate_question(topic)
st.write(question)
# Use session state to track whether the answer has been submitted
if 'submitted' not in st.session_state:
st.session_state.submitted = False
if not st.session_state.submitted:
answer = st.radio("Select your answer:", choices)
submit_button = st.button("Submit")
if submit_button:
st.session_state.submitted = True
st.write("You selected:", answer)
st.success("Great! On to the next question!")
else:
st.write("You've already submitted your answer.")
def main():
st.title("Grok-Powered Quiz App")
mode = st.selectbox("Choose the mode", ["Game Mode", "Quiz Mode"])
topic = st.text_input("Enter a topic:")
if topic:
if mode == "Game Mode":
game_mode(topic)
else:
quiz_mode(topic)
if __name__ == "__main__":
main()