Add language level selection
Browse files
app.py
CHANGED
|
@@ -38,7 +38,7 @@ TOOLS_LIST = ['serpapi', 'wolfram-alpha', 'pal-math', 'pal-colored-objects', 'ne
|
|
| 38 |
'open-meteo-api'] # 'google-search'
|
| 39 |
TOOLS_DEFAULT_LIST = ['serpapi', 'pal-math']
|
| 40 |
BUG_FOUND_MSG = "Congratulations, you've found a bug in this application!"
|
| 41 |
-
AUTH_ERR_MSG = "Please paste your OpenAI key."
|
| 42 |
MAX_TOKENS = 512
|
| 43 |
|
| 44 |
# Pertains to Express-inator functionality
|
|
@@ -47,11 +47,12 @@ MAX_WORDS = 400
|
|
| 47 |
FORMALITY_DEFAULT = "N/A"
|
| 48 |
TEMPERATURE_DEFAULT = 0.5
|
| 49 |
EMOTION_DEFAULT = "N/A"
|
|
|
|
| 50 |
TRANSLATE_TO_DEFAULT = "N/A"
|
| 51 |
LITERARY_STYLE_DEFAULT = "N/A"
|
| 52 |
PROMPT_TEMPLATE = PromptTemplate(
|
| 53 |
-
input_variables=["original_words", "num_words", "formality", "emotions", "translate_to", "literary_style"],
|
| 54 |
-
template="Restate {num_words}{formality}{emotions}{translate_to}{literary_style}the following: \n{original_words}\n",
|
| 55 |
)
|
| 56 |
|
| 57 |
POLLY_VOICE_DATA = PollyVoiceData()
|
|
@@ -90,7 +91,7 @@ def transcribe(aud_inp, whisper_lang):
|
|
| 90 |
def transform_text(desc, express_chain, num_words, formality,
|
| 91 |
anticipation_level, joy_level, trust_level,
|
| 92 |
fear_level, surprise_level, sadness_level, disgust_level, anger_level,
|
| 93 |
-
translate_to, literary_style):
|
| 94 |
num_words_prompt = ""
|
| 95 |
if num_words and int(num_words) != 0:
|
| 96 |
num_words_prompt = "using up to " + str(num_words) + " words, "
|
|
@@ -136,9 +137,13 @@ def transform_text(desc, express_chain, num_words, formality,
|
|
| 136 |
else:
|
| 137 |
emotions_str = "with emotions of " + ", ".join(emotions[:-1]) + " and " + emotions[-1] + ", "
|
| 138 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 139 |
translate_to_str = ""
|
| 140 |
if translate_to != TRANSLATE_TO_DEFAULT:
|
| 141 |
-
translate_to_str = "translated to " + translate_to + ", "
|
| 142 |
|
| 143 |
literary_style_str = ""
|
| 144 |
if literary_style != LITERARY_STYLE_DEFAULT:
|
|
@@ -166,15 +171,16 @@ def transform_text(desc, express_chain, num_words, formality,
|
|
| 166 |
num_words=num_words_prompt,
|
| 167 |
formality=formality_str,
|
| 168 |
emotions=emotions_str,
|
|
|
|
| 169 |
translate_to=translate_to_str,
|
| 170 |
literary_style=literary_style_str
|
| 171 |
)
|
| 172 |
|
| 173 |
-
trans_instr = num_words_prompt + formality_str + emotions_str + translate_to_str + literary_style_str
|
| 174 |
if express_chain and len(trans_instr.strip()) > 0:
|
| 175 |
generated_text = express_chain.run(
|
| 176 |
{'original_words': desc, 'num_words': num_words_prompt, 'formality': formality_str,
|
| 177 |
-
'emotions': emotions_str, 'translate_to': translate_to_str,
|
| 178 |
'literary_style': literary_style_str}).strip()
|
| 179 |
else:
|
| 180 |
print("Not transforming text")
|
|
@@ -292,7 +298,7 @@ class ChatWrapper:
|
|
| 292 |
trace_chain: bool, speak_text: bool, monologue: bool, express_chain: Optional[LLMChain],
|
| 293 |
num_words, formality, anticipation_level, joy_level, trust_level,
|
| 294 |
fear_level, surprise_level, sadness_level, disgust_level, anger_level,
|
| 295 |
-
translate_to, literary_style
|
| 296 |
):
|
| 297 |
"""Execute the chat functionality."""
|
| 298 |
self.lock.acquire()
|
|
@@ -304,7 +310,8 @@ class ChatWrapper:
|
|
| 304 |
print("monologue: ", monologue)
|
| 305 |
history = history or []
|
| 306 |
# If chain is None, that is because no API key was provided.
|
| 307 |
-
output = "Please paste your OpenAI key to use this application."
|
|
|
|
| 308 |
hidden_text = output
|
| 309 |
|
| 310 |
if chain and chain != "":
|
|
@@ -319,7 +326,7 @@ class ChatWrapper:
|
|
| 319 |
output = transform_text(output, express_chain, num_words, formality, anticipation_level, joy_level,
|
| 320 |
trust_level,
|
| 321 |
fear_level, surprise_level, sadness_level, disgust_level, anger_level,
|
| 322 |
-
translate_to, literary_style)
|
| 323 |
|
| 324 |
text_to_display = output
|
| 325 |
if trace_chain:
|
|
@@ -443,6 +450,7 @@ with gr.Blocks(css=".gradio-container {background-color: lightgray}") as block:
|
|
| 443 |
sadness_level_state = gr.State(EMOTION_DEFAULT)
|
| 444 |
disgust_level_state = gr.State(EMOTION_DEFAULT)
|
| 445 |
anger_level_state = gr.State(EMOTION_DEFAULT)
|
|
|
|
| 446 |
translate_to_state = gr.State(TRANSLATE_TO_DEFAULT)
|
| 447 |
literary_style_state = gr.State(LITERARY_STYLE_DEFAULT)
|
| 448 |
|
|
@@ -536,7 +544,14 @@ with gr.Blocks(css=".gradio-container {background-color: lightgray}") as block:
|
|
| 536 |
outputs=[whisper_lang_state])
|
| 537 |
|
| 538 |
with gr.Tab("Translate to"):
|
| 539 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 540 |
TRANSLATE_TO_DEFAULT, "Arabic", "Arabic (Gulf)", "Catalan", "Chinese (Cantonese)", "Chinese (Mandarin)",
|
| 541 |
"Danish", "Dutch", "English (Australian)", "English (British)", "English (Indian)", "English (New Zealand)",
|
| 542 |
"English (South African)", "English (US)", "English (Welsh)", "Finnish", "French", "French (Canadian)",
|
|
@@ -663,7 +678,7 @@ with gr.Blocks(css=".gradio-container {background-color: lightgray}") as block:
|
|
| 663 |
express_chain_state, num_words_state, formality_state,
|
| 664 |
anticipation_level_state, joy_level_state, trust_level_state, fear_level_state,
|
| 665 |
surprise_level_state, sadness_level_state, disgust_level_state, anger_level_state,
|
| 666 |
-
translate_to_state, literary_style_state],
|
| 667 |
# outputs=[chatbot, history_state, video_html, my_file, message])
|
| 668 |
outputs=[chatbot, history_state, audio_html, tmp_aud_file, message])
|
| 669 |
|
|
@@ -672,7 +687,7 @@ with gr.Blocks(css=".gradio-container {background-color: lightgray}") as block:
|
|
| 672 |
express_chain_state, num_words_state, formality_state,
|
| 673 |
anticipation_level_state, joy_level_state, trust_level_state, fear_level_state,
|
| 674 |
surprise_level_state, sadness_level_state, disgust_level_state, anger_level_state,
|
| 675 |
-
translate_to_state, literary_style_state],
|
| 676 |
# outputs=[chatbot, history_state, video_html, my_file, message])
|
| 677 |
outputs=[chatbot, history_state, audio_html, tmp_aud_file, message])
|
| 678 |
|
|
|
|
| 38 |
'open-meteo-api'] # 'google-search'
|
| 39 |
TOOLS_DEFAULT_LIST = ['serpapi', 'pal-math']
|
| 40 |
BUG_FOUND_MSG = "Congratulations, you've found a bug in this application!"
|
| 41 |
+
AUTH_ERR_MSG = "Please paste your OpenAI key. It is not necessary to hit a button or key after pasting it."
|
| 42 |
MAX_TOKENS = 512
|
| 43 |
|
| 44 |
# Pertains to Express-inator functionality
|
|
|
|
| 47 |
FORMALITY_DEFAULT = "N/A"
|
| 48 |
TEMPERATURE_DEFAULT = 0.5
|
| 49 |
EMOTION_DEFAULT = "N/A"
|
| 50 |
+
LANG_LEVEL_DEFAULT = "N/A"
|
| 51 |
TRANSLATE_TO_DEFAULT = "N/A"
|
| 52 |
LITERARY_STYLE_DEFAULT = "N/A"
|
| 53 |
PROMPT_TEMPLATE = PromptTemplate(
|
| 54 |
+
input_variables=["original_words", "num_words", "formality", "emotions", "lang_level", "translate_to", "literary_style"],
|
| 55 |
+
template="Restate {num_words}{formality}{emotions}{lang_level}{translate_to}{literary_style}the following: \n{original_words}\n",
|
| 56 |
)
|
| 57 |
|
| 58 |
POLLY_VOICE_DATA = PollyVoiceData()
|
|
|
|
| 91 |
def transform_text(desc, express_chain, num_words, formality,
|
| 92 |
anticipation_level, joy_level, trust_level,
|
| 93 |
fear_level, surprise_level, sadness_level, disgust_level, anger_level,
|
| 94 |
+
lang_level, translate_to, literary_style):
|
| 95 |
num_words_prompt = ""
|
| 96 |
if num_words and int(num_words) != 0:
|
| 97 |
num_words_prompt = "using up to " + str(num_words) + " words, "
|
|
|
|
| 137 |
else:
|
| 138 |
emotions_str = "with emotions of " + ", ".join(emotions[:-1]) + " and " + emotions[-1] + ", "
|
| 139 |
|
| 140 |
+
lang_level_str = ""
|
| 141 |
+
if lang_level != LANG_LEVEL_DEFAULT:
|
| 142 |
+
lang_level_str = "at a " + lang_level + " level, " if translate_to == TRANSLATE_TO_DEFAULT else ""
|
| 143 |
+
|
| 144 |
translate_to_str = ""
|
| 145 |
if translate_to != TRANSLATE_TO_DEFAULT:
|
| 146 |
+
translate_to_str = "translated to " + ("" if lang_level == TRANSLATE_TO_DEFAULT else lang_level + " level ") + translate_to + ", "
|
| 147 |
|
| 148 |
literary_style_str = ""
|
| 149 |
if literary_style != LITERARY_STYLE_DEFAULT:
|
|
|
|
| 171 |
num_words=num_words_prompt,
|
| 172 |
formality=formality_str,
|
| 173 |
emotions=emotions_str,
|
| 174 |
+
lang_level=lang_level_str,
|
| 175 |
translate_to=translate_to_str,
|
| 176 |
literary_style=literary_style_str
|
| 177 |
)
|
| 178 |
|
| 179 |
+
trans_instr = num_words_prompt + formality_str + emotions_str + lang_level_str + translate_to_str + literary_style_str
|
| 180 |
if express_chain and len(trans_instr.strip()) > 0:
|
| 181 |
generated_text = express_chain.run(
|
| 182 |
{'original_words': desc, 'num_words': num_words_prompt, 'formality': formality_str,
|
| 183 |
+
'emotions': emotions_str, 'lang_level': lang_level_str, 'translate_to': translate_to_str,
|
| 184 |
'literary_style': literary_style_str}).strip()
|
| 185 |
else:
|
| 186 |
print("Not transforming text")
|
|
|
|
| 298 |
trace_chain: bool, speak_text: bool, monologue: bool, express_chain: Optional[LLMChain],
|
| 299 |
num_words, formality, anticipation_level, joy_level, trust_level,
|
| 300 |
fear_level, surprise_level, sadness_level, disgust_level, anger_level,
|
| 301 |
+
lang_level, translate_to, literary_style
|
| 302 |
):
|
| 303 |
"""Execute the chat functionality."""
|
| 304 |
self.lock.acquire()
|
|
|
|
| 310 |
print("monologue: ", monologue)
|
| 311 |
history = history or []
|
| 312 |
# If chain is None, that is because no API key was provided.
|
| 313 |
+
output = "Please paste your OpenAI key to use this application. It is not necessary to hit a button or " \
|
| 314 |
+
"key after pasting it."
|
| 315 |
hidden_text = output
|
| 316 |
|
| 317 |
if chain and chain != "":
|
|
|
|
| 326 |
output = transform_text(output, express_chain, num_words, formality, anticipation_level, joy_level,
|
| 327 |
trust_level,
|
| 328 |
fear_level, surprise_level, sadness_level, disgust_level, anger_level,
|
| 329 |
+
lang_level, translate_to, literary_style)
|
| 330 |
|
| 331 |
text_to_display = output
|
| 332 |
if trace_chain:
|
|
|
|
| 450 |
sadness_level_state = gr.State(EMOTION_DEFAULT)
|
| 451 |
disgust_level_state = gr.State(EMOTION_DEFAULT)
|
| 452 |
anger_level_state = gr.State(EMOTION_DEFAULT)
|
| 453 |
+
lang_level_state = gr.State(LANG_LEVEL_DEFAULT)
|
| 454 |
translate_to_state = gr.State(TRANSLATE_TO_DEFAULT)
|
| 455 |
literary_style_state = gr.State(LITERARY_STYLE_DEFAULT)
|
| 456 |
|
|
|
|
| 544 |
outputs=[whisper_lang_state])
|
| 545 |
|
| 546 |
with gr.Tab("Translate to"):
|
| 547 |
+
lang_level_radio = gr.Radio(label="Language level:", choices=[
|
| 548 |
+
LANG_LEVEL_DEFAULT, "1st grade", "2nd grade", "3rd grade", "4th grade", "5th grade", "6th grade",
|
| 549 |
+
"7th grade", "8th grade", "9th grade", "10th grade", "11th grade", "12th grade", "University"],
|
| 550 |
+
value=LANG_LEVEL_DEFAULT)
|
| 551 |
+
lang_level_radio.change(update_foo, inputs=[lang_level_radio, lang_level_state],
|
| 552 |
+
outputs=[lang_level_state])
|
| 553 |
+
|
| 554 |
+
translate_to_radio = gr.Radio(label="Language:", choices=[
|
| 555 |
TRANSLATE_TO_DEFAULT, "Arabic", "Arabic (Gulf)", "Catalan", "Chinese (Cantonese)", "Chinese (Mandarin)",
|
| 556 |
"Danish", "Dutch", "English (Australian)", "English (British)", "English (Indian)", "English (New Zealand)",
|
| 557 |
"English (South African)", "English (US)", "English (Welsh)", "Finnish", "French", "French (Canadian)",
|
|
|
|
| 678 |
express_chain_state, num_words_state, formality_state,
|
| 679 |
anticipation_level_state, joy_level_state, trust_level_state, fear_level_state,
|
| 680 |
surprise_level_state, sadness_level_state, disgust_level_state, anger_level_state,
|
| 681 |
+
lang_level_state, translate_to_state, literary_style_state],
|
| 682 |
# outputs=[chatbot, history_state, video_html, my_file, message])
|
| 683 |
outputs=[chatbot, history_state, audio_html, tmp_aud_file, message])
|
| 684 |
|
|
|
|
| 687 |
express_chain_state, num_words_state, formality_state,
|
| 688 |
anticipation_level_state, joy_level_state, trust_level_state, fear_level_state,
|
| 689 |
surprise_level_state, sadness_level_state, disgust_level_state, anger_level_state,
|
| 690 |
+
lang_level_state, translate_to_state, literary_style_state],
|
| 691 |
# outputs=[chatbot, history_state, video_html, my_file, message])
|
| 692 |
outputs=[chatbot, history_state, audio_html, tmp_aud_file, message])
|
| 693 |
|