File size: 2,461 Bytes
27ac102
1e10170
b2920f0
39874b2
1e10170
cc992a1
6d71514
1e10170
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c213287
 
 
 
 
 
 
69dc507
c213287
69dc507
d4b3e89
 
94b332e
c213287
 
 
 
1bbdf9c
a894004
1bbdf9c
 
1e10170
 
2cfc355
c213287
 
0ba7a96
69dc507
0ba7a96
1e10170
 
 
 
2cfc355
1e10170
 
f56fb57
036e9e5
1e10170
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
import os
import gradio as gr
import openai
openai.api_key = os.environ['OPENAI_API_KEY']

user_db = {os.environ['username']: os.environ['password']}

messages = [{"role": "system", "content": 'You are a helpful technology assistant.'}]

def audioGPT(audio):
    global messages 

    audio_file = open(audio, "rb")
    transcript = openai.Audio.transcribe("whisper-1", audio_file)

    messages.append({"role": "user", "content": transcript["text"]})

    response = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages)

    system_message = response["choices"][0]["message"]
    messages.append(system_message)

    chats = ""
    for msg in messages:
        if msg['role'] != 'system':
            chats += msg['role'] + ": " + msg['content'] + "\n\n"

    return chats


def textGPT(text):
    global messages

    messages.append({"role": "user", "content": text})

    response = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages)

    system_message = response["choices"][0]["message"]
    messages.append(system_message)

    chats = ""
    for msg in messages:
        if msg['role'] != 'system':
            chats += msg['role'] + ": " + msg['content'] + "\n\n"

    return chats




def textGPT2(chat_history, text):
    global messages

    messages.append({"role": "user", "content": text})

    #response = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages)

    #system_message = response["choices"][0]["message"]
    system_message = text.type() + "121234123"
    #system_message = text + "121234123"
    messages.append(system_message)
    
    return chat_history + [[text, system_message]]


def clear():
    global messages
    messages = [{"role": "system", "content": 'You are a helpful technology assistant.'}]
    return


with gr.Blocks() as test:
    chatbot = gr.Chatbot()
    msg = gr.Textbox()
    clear_btn = gr.Button("Clear")
    msg.submit(textGPT2, [chatbot, msg], chatbot)
    clear_btn.click(fn=clear, inputs=None, outputs=chatbot, queue=False)


text = gr.Interface(fn=textGPT, inputs="text", outputs="text")
audio = gr.Interface(fn=audioGPT, inputs=gr.Audio(source="microphone", type="filepath"), outputs="text")
demo = gr.TabbedInterface([text, audio, test], [ "chatGPT", "audioGPT", "test"])

if __name__ == "__main__":
    demo.launch(enable_queue=False, auth=lambda u, p: user_db.get(u) == p,
        auth_message="Welcome to Yichuan GPT!")
    #demo.launch()