ECIR_DEMO_FinPersona / components /induce_personality.py
TTsamurai
update
31c7f82
raw
history blame
1.46 kB
import itertools
personality_types = [["extroverted", "introverted"], ["agreeable", "antagonistic"], ["conscientious", "unconscientious"], ["neurotic", "emotionally stable"], ["open to experience", "closed to experience"]]
def construct_big_five_words(persona_type: list):
"""Construct the list of personality traits
e.g., introverted + antagonistic + conscientious + emotionally stable + open to experience
"""
options = list(persona_type)
assert options[0] in ["extroverted", "introverted"], "Invalid personality type"
assert options[1] in ["agreeable", "antagonistic"], "Invalid personality type"
assert options[2] in ["conscientious", "unconscientious"], "Invalid personality type"
assert options[3] in ["neurotic", "emotionally stable"], "Invalid personality type"
assert options[4] in ["open to experience", "closed to experience"], "Invalid personality type"
last_item = "and " + options[-1]
options[-1] = last_item
return ", ".join(options)
def build_personality_prompt(persona_type: list):
return "You are a character who is {}.".format(construct_big_five_words(persona_type))
if __name__ == "__main__":
count = 0
for persona_type in itertools.product(*personality_types):
system_prompt = "You are a character who is {}.".format(construct_big_five_words(persona_type))
print(system_prompt)
print("\n")
count += 1
if count == 5:
break