Spaces:
Running
Running
Update app.py
Browse filesFirst image version
app.py
CHANGED
@@ -11,6 +11,10 @@ import queue
|
|
11 |
import threading
|
12 |
from glob import glob
|
13 |
import copy
|
|
|
|
|
|
|
|
|
14 |
|
15 |
load_dotenv(override=True)
|
16 |
key = os.getenv('OPENAI_API_KEY')
|
@@ -130,7 +134,7 @@ def genUsageStats(do_reset=False):
|
|
130 |
|
131 |
def new_conversation(user):
|
132 |
clean_up(user)
|
133 |
-
return [None, [], None,
|
134 |
|
135 |
def updatePassword(txt):
|
136 |
password = txt.lower().strip()
|
@@ -267,6 +271,10 @@ def final_clean_up(user):
|
|
267 |
except:
|
268 |
continue
|
269 |
|
|
|
|
|
|
|
|
|
270 |
|
271 |
def list_permanent_files():
|
272 |
flist = os.listdir(dataDir)
|
@@ -284,6 +292,26 @@ def list_permanent_files():
|
|
284 |
other_cnt = len(others)
|
285 |
return (str(log_cnt), str(wav_cnt), str(other_cnt), str(others))
|
286 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
287 |
|
288 |
with gr.Blocks() as demo:
|
289 |
history = gr.State([])
|
@@ -406,13 +434,15 @@ with gr.Blocks() as demo:
|
|
406 |
clear_button = gr.Button(value="Restart Conversation")
|
407 |
# gpt_chooser=gr.Radio(choices=[("GPT-3.5","gpt-3.5-turbo"),("GPT-4o","gpt-4o-mini")],
|
408 |
# value="gpt-3.5-turbo", label="GPT Model", interactive=True)
|
|
|
409 |
submit_button = gr.Button(value="Submit Prompt/Question")
|
410 |
speak_output = gr.Button(value="Speak Dialog", visible=False)
|
411 |
prompt_window = gr.Textbox(label = "Prompt or Question")
|
412 |
output_window = gr.Textbox(label = "Dialog")
|
|
|
413 |
submit_button.click(chat, inputs=[prompt_window, user_window, password, history, output_window, model],
|
414 |
outputs=[history, output_window, prompt_window, model])
|
415 |
-
clear_button.click(fn=new_conversation, inputs=user_window, outputs=[prompt_window, history, output_window])
|
416 |
audio_widget.stop_recording(fn=transcribe, inputs=[user_window, password, audio_widget],
|
417 |
outputs=[prompt_window])
|
418 |
audio_widget.pause_recording(fn=pause_message, outputs=[prompt_window])
|
@@ -421,5 +451,7 @@ with gr.Blocks() as demo:
|
|
421 |
audio_out.stop(fn=gen_output_audio, inputs=[q, user_window], outputs = [audio_out, q])
|
422 |
speak_output.click(fn=initial_audio_output, inputs=[output_window, user_window], outputs=[audio_out, q])
|
423 |
output_window.change(fn=set_speak_button, inputs=output_window,outputs=speak_output)
|
|
|
|
|
424 |
# demo.unload(final_clean_up(user))
|
425 |
demo.launch(share=True)
|
|
|
11 |
import threading
|
12 |
from glob import glob
|
13 |
import copy
|
14 |
+
import base64
|
15 |
+
import json
|
16 |
+
from PIL import Image
|
17 |
+
from io import BytesIO
|
18 |
|
19 |
load_dotenv(override=True)
|
20 |
key = os.getenv('OPENAI_API_KEY')
|
|
|
134 |
|
135 |
def new_conversation(user):
|
136 |
clean_up(user)
|
137 |
+
return [None, [], None, None]
|
138 |
|
139 |
def updatePassword(txt):
|
140 |
password = txt.lower().strip()
|
|
|
271 |
except:
|
272 |
continue
|
273 |
|
274 |
+
def delete_image(user):
|
275 |
+
fpath = dataDir + user + '.png'
|
276 |
+
if os.path.exists(fpath):
|
277 |
+
os.remove(fpath)
|
278 |
|
279 |
def list_permanent_files():
|
280 |
flist = os.listdir(dataDir)
|
|
|
292 |
other_cnt = len(others)
|
293 |
return (str(log_cnt), str(wav_cnt), str(other_cnt), str(others))
|
294 |
|
295 |
+
def make_image(prompt, user, pwd):
|
296 |
+
user = user.lower().strip()
|
297 |
+
msg = 'Error: unable to create image.'
|
298 |
+
fpath = None
|
299 |
+
if user in unames and pwd == pwdList[unames.index(user)]:
|
300 |
+
response = client.images.generate(model='dall-e-2', prompt=prompt,size='512x512',
|
301 |
+
quality='standard', response_format='b64_json')
|
302 |
+
try:
|
303 |
+
image_data = response.data[0].b64_json
|
304 |
+
image = Image.open(BytesIO(base64.b64decode(image_data)))
|
305 |
+
fpath = dataDir + user + '.png'
|
306 |
+
image.save(fpath)
|
307 |
+
msg = 'Image created!'
|
308 |
+
except:
|
309 |
+
return [gr.Image(value=None), msg]
|
310 |
+
else:
|
311 |
+
msg = 'Incorrect user name or password'
|
312 |
+
return [gr.Image(value=None), msg]
|
313 |
+
return [fpath, msg]
|
314 |
+
|
315 |
|
316 |
with gr.Blocks() as demo:
|
317 |
history = gr.State([])
|
|
|
434 |
clear_button = gr.Button(value="Restart Conversation")
|
435 |
# gpt_chooser=gr.Radio(choices=[("GPT-3.5","gpt-3.5-turbo"),("GPT-4o","gpt-4o-mini")],
|
436 |
# value="gpt-3.5-turbo", label="GPT Model", interactive=True)
|
437 |
+
button_do_image = gr.Button(value='Make Image')
|
438 |
submit_button = gr.Button(value="Submit Prompt/Question")
|
439 |
speak_output = gr.Button(value="Speak Dialog", visible=False)
|
440 |
prompt_window = gr.Textbox(label = "Prompt or Question")
|
441 |
output_window = gr.Textbox(label = "Dialog")
|
442 |
+
image_window = gr.Image()
|
443 |
submit_button.click(chat, inputs=[prompt_window, user_window, password, history, output_window, model],
|
444 |
outputs=[history, output_window, prompt_window, model])
|
445 |
+
clear_button.click(fn=new_conversation, inputs=user_window, outputs=[prompt_window, history, output_window, image_window])
|
446 |
audio_widget.stop_recording(fn=transcribe, inputs=[user_window, password, audio_widget],
|
447 |
outputs=[prompt_window])
|
448 |
audio_widget.pause_recording(fn=pause_message, outputs=[prompt_window])
|
|
|
451 |
audio_out.stop(fn=gen_output_audio, inputs=[q, user_window], outputs = [audio_out, q])
|
452 |
speak_output.click(fn=initial_audio_output, inputs=[output_window, user_window], outputs=[audio_out, q])
|
453 |
output_window.change(fn=set_speak_button, inputs=output_window,outputs=speak_output)
|
454 |
+
button_do_image.click(fn=make_image, inputs=[prompt_window,user_window, password],outputs=[image_window, output_window])
|
455 |
+
image_window.change(fn=delete_image, inputs=[user])
|
456 |
# demo.unload(final_clean_up(user))
|
457 |
demo.launch(share=True)
|