Demo_P / persona_beta_schedule.py
Basshole's picture
Update persona_beta_schedule.py
c7029b2 verified
import openai
import os
from openai import OpenAI
client = OpenAI(
api_key= os.environ["gptkey"]
)
def generate_persona_schedule(persona):
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"對於日程的安排,必須讓日程充滿生動和意外性,安排出如故事主角般精采的一天。再來先在每一個時間點設一個小標題【】,接著用根據小標題用長篇幅詳細描述每個時間點每個事件或行程的背後故事、人物的情感反應、與人的互動以等,參考以下元素:\n "\
f"1.情境背景:對於每個活動,可以加入背後的情境背景,比如為什麼會選擇這個活動,或者這個活動對人物有什麼特別的意義;\n" \
f"2.情感描述:增加人物對於每個活動的情感描述,比如感到興奮、放鬆或是感慨等;\n" \
f"3.互動細節:描述人物與家人、朋友或同事之間的具體互動,這些互動可以揭示人物的關係和性格特徵。;\n" \
f"4.環境描寫:增加對活動環境的描寫,比如早餐的場景、鋼彈模型展覽的熱鬧氛圍等,讓讀者能夠更好地沉浸在故事中;\n" \
f"5.意外事件:在日程中加入一些意外事件或轉折,比如偶遇老朋友、發現一個新興趣等,這些意外可以讓日程更加有趣和不可預測;\n" \
f"6.連接人物的夢想和目標:將日常活動與人物的長期目標或夢想相連接,展示這些活動如何幫助人物接近他們的目標。\n\n" \
f"以下是日程中一個事件的範例\n" \
f"08:00 【處理電子郵件和社群媒體】嘉豪啟動電腦,沉浸在清晨的寧靜中。他認真地回應每一位客戶,並與追蹤者分享業界趨勢。這不僅是工作的一部分,也是他與世界連接的方式。在回覆的過程中,他偶爾會遇到令人興奮的新機會,或是收到令人暖心的感謝信,這些都給他的工作日添加了意外的喜悅。\n\n" \
f"以下是我提供的人物誌\n" \
f"{persona}\n" \
f"請給我<工作日日程><休假日日程>各一組"
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