Ilayda-j's picture
Update app.py
361c9e1
raw
history blame
1.81 kB
import gradio as gr
import openai
# Replace with your OpenAI API key
openai.api_key = "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"
def generate_question_and_answer(text):
response = openai.Completion.create(
engine="gpt-3.5-turbo-0301",
prompt=f"Create a multiple-choice question based on the following text: \"{text}\".\nQuestion: ",
max_tokens=50,
n=1,
)
question = response.choices[0].text.strip()
response = openai.Completion.create(
engine="gpt-3.5-turbo-0301",
prompt=f"Generate 4 possible answers for the question: \"{question}\" based on the text: \"{text}\".\n1. Answer A: \n2. Answer B: \n3. Answer C: \n4. Answer D: ",
max_tokens=50,
n=1,
)
answers_text = response.choices[0].text.strip()
answers = answers_text.split("\n")
return question, answers
def get_feedback(text=None, user_answer=None, continue_quiz=None, state=None):
if state is None:
state = {}
if 'step' not in state:
state['step'] = 'get_text'
if state['step'] == 'get_text':
if text:
state['question'], state['answers'] = generate_question_and_answer(text)
state['step'] = 'get_answer'
return f"Question: {state['question']}\nOptions:\n" + "\n".join(state['answers']), state
else:
return "Please input text to generate a question.", state
iface = gr.Interface(
fn=get_feedback,
inputs=[
gr.inputs.Textbox(lines=5, label="Input Text"),
gr.inputs.Radio(choices=["1", "2", "3", "4"], label="Your Answer"),
gr.inputs.Radio(choices=["Yes", "No"], label="Continue?")
],
outputs=[
gr.outputs.Textbox(label="Model Output"),
gr.outputs.State(label="State")
],
live=True
)
iface.launch()