JLW commited on
Commit
0a0ce56
·
1 Parent(s): 803e34e

Temporarily change layout

Browse files
Files changed (2) hide show
  1. app.py +242 -7
  2. videos/tempfile.mp4 +2 -2
app.py CHANGED
@@ -22,6 +22,9 @@ import re
22
 
23
  from openai.error import AuthenticationError, InvalidRequestError
24
 
 
 
 
25
  news_api_key = os.environ["NEWS_API_KEY"]
26
  tmdb_bearer_token = os.environ["TMDB_BEARER_TOKEN"]
27
 
@@ -31,6 +34,21 @@ TOOLS_DEFAULT_LIST = []
31
  BUG_FOUND_MSG = "Congratulations, you've found a bug in this application!"
32
  AUTH_ERR_MSG = "Please paste your OpenAI key."
33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
 
35
  # UNCOMMENT TO USE WHISPER
36
  # warnings.filterwarnings("ignore")
@@ -55,6 +73,101 @@ AUTH_ERR_MSG = "Please paste your OpenAI key."
55
  # return result_text
56
 
57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  def load_chain(tools_list, llm):
59
  print("tools_list", tools_list)
60
  tool_names = tools_list
@@ -201,6 +314,22 @@ with gr.Blocks(css=".gradio-container {background-color: lightgray}") as block:
201
  tools_list_state = gr.State(TOOLS_DEFAULT_LIST)
202
  trace_chain_state = gr.State(False)
203
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
204
  with gr.Row():
205
  with gr.Column():
206
  gr.Markdown("<h4><center>Conversational Agent using GPT-3.5 & LangChain</center></h4>")
@@ -209,7 +338,7 @@ with gr.Blocks(css=".gradio-container {background-color: lightgray}") as block:
209
  show_label=False, lines=1, type='password')
210
 
211
  with gr.Row():
212
- with gr.Column(scale=0.25, min_width=240):
213
  my_file = gr.File(label="Upload a file", type="file", visible=False)
214
  tmp_file = gr.File("videos/Masahiro.mp4", visible=False)
215
  tmp_file_url = "/file=" + tmp_file.value['name']
@@ -220,9 +349,17 @@ with gr.Blocks(css=".gradio-container {background-color: lightgray}") as block:
220
  trace_chain_cb.change(update_foo, inputs=[trace_chain_cb, trace_chain_state],
221
  outputs=[trace_chain_state])
222
 
223
- with gr.Column(scale=0.75):
224
  chatbot = gr.Chatbot()
225
 
 
 
 
 
 
 
 
 
226
  with gr.Row():
227
  message = gr.Textbox(label="What's on your mind??",
228
  placeholder="What's the answer to life, the universe, and everything?",
@@ -235,13 +372,111 @@ with gr.Blocks(css=".gradio-container {background-color: lightgray}") as block:
235
  # interactive=True, streaming=False)
236
  # audio_comp.change(transcribe, inputs=[audio_comp], outputs=[message])
237
 
 
 
 
 
 
 
 
 
 
238
  with gr.Row():
239
- tools_cb_group = gr.CheckboxGroup(label="Tools:", choices=TOOLS_LIST,
240
- value=TOOLS_DEFAULT_LIST)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
241
 
242
- tools_cb_group.change(update_selected_tools,
243
- inputs=[tools_cb_group, tools_list_state, llm_state],
244
- outputs=[tools_list_state, llm_state, chain_state])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
245
 
246
  gr.Examples(
247
  examples=["How many people live in Canada?",
 
22
 
23
  from openai.error import AuthenticationError, InvalidRequestError
24
 
25
+ # Pertains to Express-inator functionality
26
+ from langchain.prompts import PromptTemplate
27
+
28
  news_api_key = os.environ["NEWS_API_KEY"]
29
  tmdb_bearer_token = os.environ["TMDB_BEARER_TOKEN"]
30
 
 
34
  BUG_FOUND_MSG = "Congratulations, you've found a bug in this application!"
35
  AUTH_ERR_MSG = "Please paste your OpenAI key."
36
 
37
+ """
38
+ # Pertains to Express-inator functionality
39
+ NUM_WORDS_DEFAULT = 0
40
+ FORMALITY_DEFAULT = "Casual"
41
+ TEMPERATURE_DEFAULT = 0.5
42
+ EMOTION_DEFAULT = "N/A"
43
+ TRANSLATE_TO_DEFAULT = "Don't translate"
44
+ LITERARY_STYLE_DEFAULT = "Prose"
45
+ PROMPT_TEMPLATE = PromptTemplate(
46
+ input_variables=["original_words", "num_words", "formality", "emotions", "translate_to", "literary_style"],
47
+ template="Express {num_words}in a {formality} manner, "
48
+ "{emotions}{translate_to}{literary_style}the following: \n{original_words}\n",
49
+ )
50
+ """
51
+
52
 
53
  # UNCOMMENT TO USE WHISPER
54
  # warnings.filterwarnings("ignore")
 
73
  # return result_text
74
 
75
 
76
+ """
77
+ # Pertains to Express-inator functionality
78
+ def transform_text(desc, openai_api_key, temperature, llm_chain, num_words, formality,
79
+ anticipation_level, joy_level, trust_level,
80
+ fear_level, surprise_level, sadness_level, disgust_level, anger_level,
81
+ translate_to, literary_style):
82
+ if not openai_api_key or openai_api_key == "":
83
+ return "<pre>Please paste your OpenAI API key (see https://beta.openai.com)</pre>"
84
+
85
+ num_words_prompt = ""
86
+ if num_words and int(num_words) != 0:
87
+ num_words_prompt = "using up to " + str(num_words) + " words, "
88
+
89
+ # Change some arguments to lower case
90
+ formality = formality.lower()
91
+ anticipation_level = anticipation_level.lower()
92
+ joy_level = joy_level.lower()
93
+ trust_level = trust_level.lower()
94
+ fear_level = fear_level.lower()
95
+ surprise_level = surprise_level.lower()
96
+ sadness_level = sadness_level.lower()
97
+ disgust_level = disgust_level.lower()
98
+ anger_level = anger_level.lower()
99
+
100
+ llm_chain.llm.temperature = temperature
101
+
102
+ # put all emotions into a list
103
+ emotions = []
104
+ if anticipation_level != "n/a":
105
+ emotions.append(anticipation_level)
106
+ if joy_level != "n/a":
107
+ emotions.append(joy_level)
108
+ if trust_level != "n/a":
109
+ emotions.append(trust_level)
110
+ if fear_level != "n/a":
111
+ emotions.append(fear_level)
112
+ if surprise_level != "n/a":
113
+ emotions.append(surprise_level)
114
+ if sadness_level != "n/a":
115
+ emotions.append(sadness_level)
116
+ if disgust_level != "n/a":
117
+ emotions.append(disgust_level)
118
+ if anger_level != "n/a":
119
+ emotions.append(anger_level)
120
+
121
+ emotions_str = ""
122
+ if len(emotions) > 0:
123
+ if len(emotions) == 1:
124
+ emotions_str = "with emotion of " + emotions[0] + ", "
125
+ else:
126
+ emotions_str = "with emotions of " + ", ".join(emotions[:-1]) + " and " + emotions[-1] + ", "
127
+
128
+ translate_to_str = ""
129
+ if translate_to != TRANSLATE_TO_DEFAULT:
130
+ translate_to_str = "translated to " + translate_to + ", "
131
+
132
+ literary_style_str = ""
133
+ if literary_style != LITERARY_STYLE_DEFAULT:
134
+ if literary_style == "Poetry":
135
+ literary_style_str = "as a poem, "
136
+ elif literary_style == "Haiku":
137
+ literary_style_str = "as a haiku, "
138
+ elif literary_style == "Limerick":
139
+ literary_style_str = "as a limerick, "
140
+ elif literary_style == "Joke":
141
+ literary_style_str = "as a very funny joke with a setup and punchline, "
142
+ elif literary_style == "Knock-knock":
143
+ literary_style_str = "as a very funny knock-knock joke, "
144
+
145
+ formatted_prompt = PROMPT_TEMPLATE.format(
146
+ original_words=desc,
147
+ num_words=num_words_prompt,
148
+ formality=formality,
149
+ emotions=emotions_str,
150
+ translate_to=translate_to_str,
151
+ literary_style=literary_style_str
152
+ )
153
+
154
+ generated_text = llm_chain.run({'original_words': desc, 'num_words': num_words_prompt, 'formality': formality,
155
+ 'emotions': emotions_str, 'translate_to': translate_to_str,
156
+ 'literary_style': literary_style_str}).strip()
157
+
158
+ # replace all newlines with <br> in generated_text
159
+ generated_text = generated_text.replace("\n", "<br>")
160
+
161
+ prompt_plus_generated = "<b>GPT prompt:</b> " + formatted_prompt + "<br/><br/><code>" + generated_text + "</code>"
162
+
163
+ print("\n==== date/time: " + str(datetime.datetime.now() - datetime.timedelta(hours=5)) + " ====")
164
+ print("temperature: ", temperature)
165
+ print("prompt_plus_generated: " + prompt_plus_generated)
166
+
167
+ return prompt_plus_generated
168
+ """
169
+
170
+
171
  def load_chain(tools_list, llm):
172
  print("tools_list", tools_list)
173
  tool_names = tools_list
 
314
  tools_list_state = gr.State(TOOLS_DEFAULT_LIST)
315
  trace_chain_state = gr.State(False)
316
 
317
+ """
318
+ # Pertains to Express-inator functionality
319
+ num_words_state = gr.State(NUM_WORDS_DEFAULT)
320
+ formality_state = gr.State(FORMALITY_DEFAULT)
321
+ anticipation_level_state = gr.State(EMOTION_DEFAULT)
322
+ joy_level_state = gr.State(EMOTION_DEFAULT)
323
+ trust_level_state = gr.State(EMOTION_DEFAULT)
324
+ fear_level_state = gr.State(EMOTION_DEFAULT)
325
+ surprise_level_state = gr.State(EMOTION_DEFAULT)
326
+ sadness_level_state = gr.State(EMOTION_DEFAULT)
327
+ disgust_level_state = gr.State(EMOTION_DEFAULT)
328
+ anger_level_state = gr.State(EMOTION_DEFAULT)
329
+ translate_to_state = gr.State(TRANSLATE_TO_DEFAULT)
330
+ literary_style_state = gr.State(LITERARY_STYLE_DEFAULT)
331
+ """
332
+
333
  with gr.Row():
334
  with gr.Column():
335
  gr.Markdown("<h4><center>Conversational Agent using GPT-3.5 & LangChain</center></h4>")
 
338
  show_label=False, lines=1, type='password')
339
 
340
  with gr.Row():
341
+ with gr.Column(scale=0.20, min_width=240):
342
  my_file = gr.File(label="Upload a file", type="file", visible=False)
343
  tmp_file = gr.File("videos/Masahiro.mp4", visible=False)
344
  tmp_file_url = "/file=" + tmp_file.value['name']
 
349
  trace_chain_cb.change(update_foo, inputs=[trace_chain_cb, trace_chain_state],
350
  outputs=[trace_chain_state])
351
 
352
+ with gr.Column(scale=0.70, min_width=600):
353
  chatbot = gr.Chatbot()
354
 
355
+ with gr.Column(scale=0.10):
356
+ tools_cb_group = gr.CheckboxGroup(label="Tools:", choices=TOOLS_LIST,
357
+ value=TOOLS_DEFAULT_LIST)
358
+
359
+ tools_cb_group.change(update_selected_tools,
360
+ inputs=[tools_cb_group, tools_list_state, llm_state],
361
+ outputs=[tools_list_state, llm_state, chain_state])
362
+
363
  with gr.Row():
364
  message = gr.Textbox(label="What's on your mind??",
365
  placeholder="What's the answer to life, the universe, and everything?",
 
372
  # interactive=True, streaming=False)
373
  # audio_comp.change(transcribe, inputs=[audio_comp], outputs=[message])
374
 
375
+ # with gr.Row():
376
+ # tools_cb_group = gr.CheckboxGroup(label="Tools:", choices=TOOLS_LIST,
377
+ # value=TOOLS_DEFAULT_LIST)
378
+ #
379
+ # tools_cb_group.change(update_selected_tools,
380
+ # inputs=[tools_cb_group, tools_list_state, llm_state],
381
+ # outputs=[tools_list_state, llm_state, chain_state])
382
+
383
+ """
384
  with gr.Row():
385
+ with gr.Column():
386
+ with gr.Accordion("Max words", open=False):
387
+ num_words_slider = gr.Slider(label="Max number of words to generate (0 for don't care)",
388
+ value=NUM_WORDS_DEFAULT, minimum=0, maximum=100, step=10)
389
+ num_words_slider.change(update_foo,
390
+ inputs=[num_words_slider, num_words_state],
391
+ outputs=[num_words_state])
392
+
393
+ with gr.Accordion("Formality", open=False):
394
+ formality_radio = gr.Radio(label="Formality:", choices=["Casual", "Polite", "Honorific"],
395
+ value=FORMALITY_DEFAULT)
396
+ formality_radio.change(update_foo,
397
+ inputs=[formality_radio, formality_state],
398
+ outputs=[formality_state])
399
+
400
+ with gr.Accordion("Translate to", open=False):
401
+ translate_to_radio = gr.Radio(label="Translate to:", choices=[
402
+ TRANSLATE_TO_DEFAULT, "Arabic", "British English", "Chinese (Simplified)", "Chinese (Traditional)",
403
+ "Czech", "Danish", "Dutch", "emojis", "English", "Finnish", "French", "Gen Z slang", "German", "Greek",
404
+ "Hebrew", "Hindi", "Hungarian", "Indonesian", "Italian", "Japanese",
405
+ "how the stereotypical Karen would say it",
406
+ "Klingon", "Korean", "Norwegian", "Old English", "Pirate", "Polish", "Portuguese", "Romanian",
407
+ "Russian", "Spanish", "Strange Planet expospeak technical talk", "Swedish", "Thai", "Turkish", "Vietnamese", "Yoda"], value=TRANSLATE_TO_DEFAULT)
408
+
409
+ translate_to_radio.change(update_foo,
410
+ inputs=[translate_to_radio, translate_to_state],
411
+ outputs=[translate_to_state])
412
+
413
+ with gr.Accordion("Literary style", open=False):
414
+ literary_style_radio = gr.Radio(label="Literary style:", choices=[
415
+ LITERARY_STYLE_DEFAULT, "Poetry", "Haiku", "Limerick", "Joke", "Knock-knock"],
416
+ value=LITERARY_STYLE_DEFAULT)
417
+
418
+ literary_style_radio.change(update_foo,
419
+ inputs=[literary_style_radio, literary_style_state],
420
+ outputs=[literary_style_state])
421
 
422
+ with gr.Column():
423
+ with gr.Accordion("Emotions", open=False):
424
+ anticipation_level_radio = gr.Radio(label="Anticipation level:",
425
+ choices=[EMOTION_DEFAULT, "Interest", "Anticipation", "Vigilance"],
426
+ value=EMOTION_DEFAULT)
427
+ anticipation_level_radio.change(update_foo,
428
+ inputs=[anticipation_level_radio, anticipation_level_state],
429
+ outputs=[anticipation_level_state])
430
+
431
+ joy_level_radio = gr.Radio(label="Joy level:",
432
+ choices=[EMOTION_DEFAULT, "Serenity", "Joy", "Ecstasy"],
433
+ value=EMOTION_DEFAULT)
434
+ joy_level_radio.change(update_foo,
435
+ inputs=[joy_level_radio, joy_level_state],
436
+ outputs=[joy_level_state])
437
+
438
+ trust_level_radio = gr.Radio(label="Trust level:",
439
+ choices=[EMOTION_DEFAULT, "Acceptance", "Trust", "Admiration"],
440
+ value=EMOTION_DEFAULT)
441
+ trust_level_radio.change(update_foo,
442
+ inputs=[trust_level_radio, trust_level_state],
443
+ outputs=[trust_level_state])
444
+
445
+ fear_level_radio = gr.Radio(label="Fear level:",
446
+ choices=[EMOTION_DEFAULT, "Apprehension", "Fear", "Terror"],
447
+ value=EMOTION_DEFAULT)
448
+ fear_level_radio.change(update_foo,
449
+ inputs=[fear_level_radio, fear_level_state],
450
+ outputs=[fear_level_state])
451
+
452
+ surprise_level_radio = gr.Radio(label="Surprise level:",
453
+ choices=[EMOTION_DEFAULT, "Distraction", "Surprise", "Amazement"],
454
+ value=EMOTION_DEFAULT)
455
+ surprise_level_radio.change(update_foo,
456
+ inputs=[surprise_level_radio, surprise_level_state],
457
+ outputs=[surprise_level_state])
458
+
459
+ sadness_level_radio = gr.Radio(label="Sadness level:",
460
+ choices=[EMOTION_DEFAULT, "Pensiveness", "Sadness", "Grief"],
461
+ value=EMOTION_DEFAULT)
462
+ sadness_level_radio.change(update_foo,
463
+ inputs=[sadness_level_radio, sadness_level_state],
464
+ outputs=[sadness_level_state])
465
+
466
+ disgust_level_radio = gr.Radio(label="Disgust level:",
467
+ choices=[EMOTION_DEFAULT, "Boredom", "Disgust", "Loathing"],
468
+ value=EMOTION_DEFAULT)
469
+ disgust_level_radio.change(update_foo,
470
+ inputs=[disgust_level_radio, disgust_level_state],
471
+ outputs=[disgust_level_state])
472
+
473
+ anger_level_radio = gr.Radio(label="Anger level:",
474
+ choices=[EMOTION_DEFAULT, "Annoyance", "Anger", "Rage"],
475
+ value=EMOTION_DEFAULT)
476
+ anger_level_radio.change(update_foo,
477
+ inputs=[anger_level_radio, anger_level_state],
478
+ outputs=[anger_level_state])
479
+ """
480
 
481
  gr.Examples(
482
  examples=["How many people live in Canada?",
videos/tempfile.mp4 CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:3234c8b4072470a395be40003dfa12372b1746cbad52853be83da1cf4a775fe3
3
- size 114137
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7ad6ea94ca0de42304c461a30340e259f9943ef79c9aaa68d8eef2087ee398a6
3
+ size 135190