jozzy commited on
Commit
60d2957
0 Parent(s):

Duplicate from jozzy/gpt_api

Browse files
Files changed (4) hide show
  1. .gitattributes +34 -0
  2. README.md +14 -0
  3. app.py +142 -0
  4. requirements.txt +7 -0
.gitattributes ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tflite filter=lfs diff=lfs merge=lfs -text
29
+ *.tgz filter=lfs diff=lfs merge=lfs -text
30
+ *.wasm filter=lfs diff=lfs merge=lfs -text
31
+ *.xz filter=lfs diff=lfs merge=lfs -text
32
+ *.zip filter=lfs diff=lfs merge=lfs -text
33
+ *.zst filter=lfs diff=lfs merge=lfs -text
34
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Gpt Api
3
+ emoji: 👀
4
+ colorFrom: pink
5
+ colorTo: purple
6
+ sdk: gradio
7
+ sdk_version: 3.20.1
8
+ app_file: app.py
9
+ pinned: false
10
+ license: apache-2.0
11
+ duplicated_from: jozzy/gpt_api
12
+ ---
13
+
14
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import gradio as gr
3
+ import openai
4
+
5
+ from langdetect import detect
6
+ from gtts import gTTS
7
+ from pdfminer.high_level import extract_text
8
+
9
+ openai.api_key = os.environ['OPENAI_API_KEY']
10
+
11
+ user_db = {os.environ['username1']: os.environ['password1'], os.environ['username2']: os.environ['password2']}
12
+
13
+ messages = [{"role": "system", "content": 'You are a helpful assistant.'}]
14
+
15
+
16
+
17
+ def roleChoice(role):
18
+ global messages
19
+ messages = [{"role": "system", "content": role}]
20
+ return "role:" + role
21
+
22
+
23
+ def audioGPT(audio):
24
+ global messages
25
+
26
+ audio_file = open(audio, "rb")
27
+ transcript = openai.Audio.transcribe("whisper-1", audio_file)
28
+
29
+ messages.append({"role": "user", "content": transcript["text"]})
30
+
31
+ response = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages)
32
+
33
+ system_message = response["choices"][0]["message"]
34
+ messages.append(system_message)
35
+
36
+ chats = ""
37
+ for msg in messages:
38
+ if msg['role'] != 'system':
39
+ chats += msg['role'] + ": " + msg['content'] + "\n\n"
40
+
41
+ return chats
42
+
43
+
44
+ def textGPT(text):
45
+ global messages
46
+
47
+ messages.append({"role": "user", "content": text})
48
+
49
+ response = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages)
50
+
51
+ system_message = response["choices"][0]["message"]
52
+ messages.append(system_message)
53
+
54
+ chats = ""
55
+ for msg in messages:
56
+ if msg['role'] != 'system':
57
+ chats += msg['role'] + ": " + msg['content'] + "\n\n"
58
+
59
+ return chats
60
+
61
+
62
+ def siriGPT(audio):
63
+ global messages
64
+
65
+ audio_file = open(audio, "rb")
66
+ transcript = openai.Audio.transcribe("whisper-1", audio_file)
67
+
68
+ messages.append({"role": "user", "content": transcript["text"]})
69
+
70
+ response = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages)
71
+
72
+ system_message = response["choices"][0]["message"]
73
+ messages.append(system_message)
74
+
75
+ lang = detect(system_message['content'])
76
+
77
+ narrate_ans = gTTS(text=system_message['content'], lang=lang, slow=False)
78
+ narrate_ans.save("narrate.wav")
79
+
80
+ return "narrate.wav"
81
+
82
+
83
+ def fileGPT(prompt, file_obj):
84
+ global messages
85
+
86
+ file_text = extract_text(file_obj.name)
87
+ text = prompt + "\n\n" + file_text
88
+
89
+ messages.append({"role": "user", "content": text})
90
+
91
+ response = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages)
92
+
93
+ system_message = response["choices"][0]["message"]
94
+ messages.append(system_message)
95
+
96
+ chats = ""
97
+ for msg in messages:
98
+ if msg['role'] != 'system':
99
+ chats += msg['role'] + ": " + msg['content'] + "\n\n"
100
+
101
+ return chats
102
+
103
+
104
+
105
+ def clear():
106
+ global messages
107
+ messages = [{"role": "system", "content": 'You are a helpful technology assistant.'}]
108
+ return
109
+
110
+ def show():
111
+ global messages
112
+ chats = ""
113
+ for msg in messages:
114
+ if msg['role'] != 'system':
115
+ chats += msg['role'] + ": " + msg['content'] + "\n\n"
116
+
117
+ return chats
118
+
119
+
120
+ with gr.Blocks() as chatHistory:
121
+ gr.Markdown("Click the Clear button below to remove all the chat history.")
122
+ clear_btn = gr.Button("Clear")
123
+ clear_btn.click(fn=clear, inputs=None, outputs=None, queue=False)
124
+
125
+ gr.Markdown("Click the Display button below to show all the chat history.")
126
+ show_out = gr.Textbox()
127
+ show_btn = gr.Button("Display")
128
+ show_btn.click(fn=show, inputs=None, outputs=show_out, queue=False)
129
+
130
+
131
+
132
+ role = gr.Interface(fn=roleChoice, inputs="text", outputs="text", description = "Choose your GPT roles, e.g. You are a helpful technology assistant. 你是一位 IT 架构师。 你是一位开发者关系顾问。你是一位机器学习工程师。你是一位高级 C++ 开发人员 ")
133
+ text = gr.Interface(fn=textGPT, inputs="text", outputs="text")
134
+ audio = gr.Interface(fn=audioGPT, inputs=gr.Audio(source="microphone", type="filepath"), outputs="text")
135
+ siri = gr.Interface(fn=siriGPT, inputs=gr.Audio(source="microphone", type="filepath"), outputs = "audio")
136
+ file = gr.Interface(fn=fileGPT, inputs=["text", "file"], outputs="text", description = "Enter prompt sentences and your PDF. e.g. lets think step by step, summarize this following text: 或者 让我们一步一步地思考,总结以下的内容:")
137
+ demo = gr.TabbedInterface([role, text, audio, siri, file, chatHistory], [ "roleChoice", "chatGPT", "audioGPT", "siriGPT", "fileGPT", "ChatHistory"])
138
+
139
+ if __name__ == "__main__":
140
+ demo.launch(enable_queue=False, auth=lambda u, p: user_db.get(u) == p,
141
+ auth_message="Welcome to Yichuan GPT!")
142
+ #demo.launch()
requirements.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ https://gradio-builds.s3.amazonaws.com/http-auth/attempt-1/gradio-3.18.1b2-py3-none-any.whl
2
+ openai
3
+ ffmpeg
4
+ langdetect
5
+ gtts
6
+ pdfminer
7
+ pdfminer.six