Demo_P / persona_beta.py
Basshole's picture
Update persona_beta.py
e39f69b verified
import openai
import os
from openai import OpenAI
client = OpenAI(
api_key= os.environ["gptkey"]
)
def generate_persona(gender, age_range, life_stage, education_level, job_title, annual_income, ad_agreement, brand_consumption_behavior, social_interaction, financial_planning, behavioral_motives, personal_traits, social_media_activity, interests, personality_traits):
total_prompt_tokens_used = 0
total_completion_tokens_used = 0
messages_base = [
{"role": "system", "content": "請扮演一個具備側寫專長的資深行銷企劃,協助我創建一個虛構的人物誌。"}
]
# Creating a prompt with a structured format for the Persona in Traditional Chinese
prompt_text = f"創建一個詳細的人物誌檔案,除非有另外說明否則排除行銷背景:\n\n" \
f"- 性別: {gender}\n" \
f"- 年齡階層: {age_range}\n" \
f"- 生命階段: {life_stage}\n" \
f"- 教育程度: {education_level}\n" \
f"- 工作職稱: {job_title}\n" \
f"- 個人年收入: {annual_income}\n" \
f"- 對廣告的看法: {ad_agreement}\n" \
f"- 品牌與消費行為: {brand_consumption_behavior}\n" \
f"- 人際互動: {social_interaction}\n" \
f"- 金錢規劃: {financial_planning}\n" \
f"- 行為動機與處事準則: {behavioral_motives}\n" \
f"- 個人特質: {personal_traits}\n" \
f"- 網路社群活動: {social_media_activity}\n" \
f"- 興趣愛好: {interests}\n" \
f"- 性格特質: {personality_traits}\n\n" \
f"請根據這些屬性,提供一個全面的人物誌描述,包括以下欄位:\n\n" \
f"[名稱]:\n" \
f"[年齡]:\n" \
f"[性別]:\n" \
f"[生活背景]:(請用長篇幅豐富完整)\n" \
f"[自我介紹](第一人稱介紹自己,並附上自傳與人生簡歷):\n" \
f"[生活方式]:\n" \
f"[人際關係]:\n" \
f"[個人目標與動機]:\n" \
f"[面臨的挑戰]:\n" \
messages_base.append({"role": "user", "content": prompt_text})
messages_base.extend([{"role": "user", "content": "請盡可能詳盡豐富,使用繁體中文"}])
full_text = ""
total_price = 0
#for _ in range(loop):
response = client.chat.completions.create(
model='gpt-4-turbo',
max_tokens=4096,
temperature=0.5,
messages=messages_base
)
completed_text = response.choices[0].message.content
total_prompt_tokens_used += response.usage.prompt_tokens
total_completion_tokens_used += response.usage.completion_tokens
price = total_prompt_tokens_used*0.03/1000 + total_completion_tokens_used*0.06/1000
full_text += completed_text + "\n\n----------\n\n"
total_price += price
price = "price:" + str(total_prompt_tokens_used*0.03/1000 + total_completion_tokens_used*0.06/1000) + "$"
full_text += "\n\n" + "price:" + str(total_price)
#return response.choices[0].message.content
return full_text