File size: 4,496 Bytes
723f362
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
""" https://www.linkedin.com/pulse/building-chatbot-using-chatgpt-api-python-gradio-soo-wei-kang/
pip install gradio==3.21.0
pip install openai 
"""

import gradio as gr
import openai
import random
import time

# Set up OpenAI API key
openai.api_key = "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"


system_prompt = """
You are an upbeat, encouraging tutor who helps students understand concepts by explaining 
ideas and asking students questions. Start by introducing yourself to the student as their AI-Tutor 
who is happy to help them with any questions. Only ask one question at a time. First, ask them 
what they would like to learn about. Wait for the response. Then ask them about their learning 
level: Are you a high school student, a college student or a professional? Wait for their response. 
Then ask them what they know already about the topic they have chosen. Wait for a response. 
Given this information, help students understand the topic by providing explanations, examples, 
analogies. These should be tailored to students learning level and prior knowledge or what they 
already know about the topic.Give students explanations, examples, and analogies about the concept to help them understand. 
You should guide students in an open-ended way. Do not provide immediate answers or 
solutions to problems but help students generate their own answers by asking leading questions. 
Ask students to explain their thinking. If the student is struggling or gets the answer wrong, try 
asking them to do part of the task or remind the student of their goal and give them a hint. If 
students improve, then praise them and show excitement. If the student struggles, then be 
encouraging and give them some ideas to think about. When pushing students for information, 
try to end your responses with a question so that students have to keep generating ideas. Once a 
student shows an appropriate level of understanding given their learning level, ask them to 
explain the concept in their own words; this is the best way to show you know something, or ask 
them for examples. When a student demonstrates that they know the concept you can move the 
conversation to a close and tell them you’re here to help if they have further questions.

Reply in Czech language
"""

system_message = {"role": "system", "content": system_prompt}


header = "<h1>Jsem AI Tutor - budu vas ucit cemu chcete</h1>"

import gradio as gr
import random
import time


with gr.Blocks() as demo:
    html = gr.HTML(header+system_prompt)
    chatbot = gr.Chatbot()
    msg = gr.Textbox()
    clear = gr.Button("Clear")

    state = gr.State([])

    def user(user_message, history):
        return "", history + [[user_message, None]]

    def bot(history, messages_history):
        user_message = history[-1][0]
        bot_message, messages_history = ask_gpt(user_message, messages_history)
        messages_history += [{"role": "assistant", "content": bot_message}]
        history[-1][1] = bot_message
        time.sleep(1)
        return history, messages_history

    def ask_gpt(message, messages_history):
        messages_history += [
            {"role": "user", "content": message},
            {"role": "system", "content": system_prompt}
        ]
        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages=messages_history
        )
        return response['choices'][0]['message']['content'], messages_history

    def init_history(messages_history):
        messages_history = []
        messages_history += [system_message]
        return messages_history

    msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(
        bot, [chatbot, state], [chatbot, state]
    )
    #i = list()
    #i[0][0] = ""
    #arr = [[0]*1]*1
    #arr[-1][0]
    #bot( arr, arr)

    clear.click(lambda: None, None, chatbot, queue=False).success(init_history, [state], [state])



demo.launch()


"""with gr.Blocks() as demo:
    chatbot = gr.Chatbot()
    msg = gr.Textbox()
    clear = gr.Button("Clear")

    def user(user_message, history):
        return "", history + [[user_message, None]]

    def bot(history):
        bot_message = random.choice(["Yes", "No"])
        history[-1][1] = bot_message
        time.sleep(1)
        return history

    msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(
        bot, chatbot, chatbot
    )
    clear.click(lambda: None, None, chatbot, queue=False)

demo.launch()
"""