Spaces:
Sleeping
Sleeping
| # Pertains to Express-inator functionality | |
| import datetime | |
| from config.config import PROMPT_TEMPLATE, TRANSLATE_TO_DEFAULT, LANG_LEVEL_DEFAULT, LITERARY_STYLE_DEFAULT | |
| def transform_text(desc, express_chain, num_words, formality, | |
| anticipation_level, joy_level, trust_level, | |
| fear_level, surprise_level, sadness_level, disgust_level, anger_level, | |
| lang_level, translate_to, literary_style, force_translate): | |
| num_words_prompt = "" | |
| if num_words and int(num_words) != 0: | |
| num_words_prompt = "using up to " + str(num_words) + " words, " | |
| # Change some arguments to lower case | |
| formality = formality.lower() | |
| anticipation_level = anticipation_level.lower() | |
| joy_level = joy_level.lower() | |
| trust_level = trust_level.lower() | |
| fear_level = fear_level.lower() | |
| surprise_level = surprise_level.lower() | |
| sadness_level = sadness_level.lower() | |
| disgust_level = disgust_level.lower() | |
| anger_level = anger_level.lower() | |
| formality_str = "" | |
| if formality != "n/a": | |
| formality_str = "in a " + formality + " manner, " | |
| # put all emotions into a list | |
| emotions = [] | |
| if anticipation_level != "n/a": | |
| emotions.append(anticipation_level) | |
| if joy_level != "n/a": | |
| emotions.append(joy_level) | |
| if trust_level != "n/a": | |
| emotions.append(trust_level) | |
| if fear_level != "n/a": | |
| emotions.append(fear_level) | |
| if surprise_level != "n/a": | |
| emotions.append(surprise_level) | |
| if sadness_level != "n/a": | |
| emotions.append(sadness_level) | |
| if disgust_level != "n/a": | |
| emotions.append(disgust_level) | |
| if anger_level != "n/a": | |
| emotions.append(anger_level) | |
| emotions_str = "" | |
| if len(emotions) > 0: | |
| if len(emotions) == 1: | |
| emotions_str = "with emotion of " + emotions[0] + ", " | |
| else: | |
| emotions_str = "with emotions of " + ", ".join(emotions[:-1]) + " and " + emotions[-1] + ", " | |
| lang_level_str = "" | |
| if lang_level != LANG_LEVEL_DEFAULT: | |
| lang_level_str = "at a level that a person in " + lang_level + " can easily comprehend, " if translate_to == TRANSLATE_TO_DEFAULT else "" | |
| translate_to_str = "" | |
| if translate_to != TRANSLATE_TO_DEFAULT and (force_translate or lang_level != LANG_LEVEL_DEFAULT): | |
| translate_to_str = "translated to " + translate_to + ( | |
| "" if lang_level == LANG_LEVEL_DEFAULT else " at a level that a person in " + lang_level + " can easily comprehend") + ", " | |
| literary_style_str = "" | |
| if literary_style != LITERARY_STYLE_DEFAULT: | |
| if literary_style == "Prose": | |
| literary_style_str = "as prose, " | |
| if literary_style == "Story": | |
| literary_style_str = "as a story, " | |
| elif literary_style == "Summary": | |
| literary_style_str = "as a summary, " | |
| elif literary_style == "Outline": | |
| literary_style_str = "as an outline numbers and lower case letters, " | |
| elif literary_style == "Bullets": | |
| literary_style_str = "as bullet points using bullets, " | |
| elif literary_style == "Poetry": | |
| literary_style_str = "as a poem, " | |
| elif literary_style == "Haiku": | |
| literary_style_str = "as a haiku, " | |
| elif literary_style == "Limerick": | |
| literary_style_str = "as a limerick, " | |
| elif literary_style == "Rap": | |
| literary_style_str = "as a rap, " | |
| elif literary_style == "Joke": | |
| literary_style_str = "as a very funny joke with a setup and punchline, " | |
| elif literary_style == "Knock-knock": | |
| literary_style_str = "as a very funny knock-knock joke, " | |
| elif literary_style == "FAQ": | |
| literary_style_str = "as a FAQ with several questions and answers, " | |
| formatted_prompt = PROMPT_TEMPLATE.format( | |
| original_words=desc, | |
| num_words=num_words_prompt, | |
| formality=formality_str, | |
| emotions=emotions_str, | |
| lang_level=lang_level_str, | |
| translate_to=translate_to_str, | |
| literary_style=literary_style_str | |
| ) | |
| trans_instr = num_words_prompt + formality_str + emotions_str + lang_level_str + translate_to_str + literary_style_str | |
| if express_chain and len(trans_instr.strip()) > 0: | |
| generated_text = express_chain.run( | |
| {'original_words': desc, 'num_words': num_words_prompt, 'formality': formality_str, | |
| 'emotions': emotions_str, 'lang_level': lang_level_str, 'translate_to': translate_to_str, | |
| 'literary_style': literary_style_str}).strip() | |
| else: | |
| print("Not transforming text") | |
| generated_text = desc | |
| # replace all newlines with <br> in generated_text | |
| generated_text = generated_text.replace("\n", "\n\n") | |
| prompt_plus_generated = "GPT prompt: " + formatted_prompt + "\n\n" + generated_text | |
| print("\n==== date/time: " + str(datetime.datetime.now() - datetime.timedelta(hours=5)) + " ====") | |
| print("prompt_plus_generated: " + prompt_plus_generated) | |
| return generated_text |