File size: 1,810 Bytes
ed2935f
41a41ff
ed2935f
41a41ff
ed2935f
 
41a41ff
7e588a7
ed2935f
 
361c9e1
ed2935f
7e588a7
ed2935f
96b2682
ed2935f
 
 
361c9e1
7e588a7
 
ed2935f
361c9e1
 
 
 
41a41ff
96b2682
 
 
ed2935f
96b2682
 
 
 
a099ff3
361c9e1
96b2682
361c9e1
 
 
0875dac
24c1fa1
7e588a7
 
 
361c9e1
7e588a7
 
a099ff3
 
96b2682
a099ff3
 
24c1fa1
 
a099ff3
361c9e1
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

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()