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 |