|
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 |
|
|