| 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": "請扮演一個具備側寫專長的資深行銷企劃,協助我創建一個虛構的人物誌。"} |
| ] |
|
|
| |
| 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 |
|
|
|
|
| |
| 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 full_text |