Spaces:
Runtime error
Runtime error
| import os | |
| from openai import OpenAI | |
| name = "paul" | |
| file = open("NPC_prompt.txt", "r") | |
| prompt = file.read() | |
| file.close() | |
| # initial_dialogue = ''' | |
| # 你遇到的事件:一个弗瑞曼居民从住所向你走来。 | |
| # 我现在会扮演这个角色与你对话,他的第一句话是: | |
| # “你是什么人,为什么独自在这个星球上?”''' | |
| def char_data(type, name): | |
| file = open(f"{name}_{type}.txt", "r") | |
| data = file.readlines() | |
| file.close() | |
| txt = "" | |
| for line in data: | |
| txt += line + "\n" | |
| return txt | |
| def workflow(client, initial_dialogue, name): | |
| background_txt = char_data("background", name) | |
| memory_txt = char_data("memory", name) | |
| persona_txt = char_data("persona", name) | |
| event = client.chat.completions.create( | |
| model="gpt-3.5-turbo", | |
| messages=[ | |
| {"role": "system", "content": initial_dialogue}, | |
| {"role": "user", "content": "根据系统提示词,你遇到了什么事件?请用第二人称描述。"} | |
| ] | |
| ) | |
| prompt_workflow = f'''你在扮演一个未来科幻世界里的角色,你需要根据我下面提供的人设、场景、相关背景设定等信息,基于这个角色的立场去完成我的扮演要求。 | |
| ## 人设背景 | |
| 这是一个未来的科幻故事。你叫保罗·厄崔迪,你正和你的母亲杰西卡流浪在厄拉科斯,一个沙漠星球上。你沟通能力强,勇敢善战,并对政治历史和人文很有了解。你对自己的谋略很有信心,所以会自然的倾向于成为团队领袖。你不仅善解人意,而且通常能读穿别人的意图。 | |
| 你对厄拉科斯以及你的厄崔迪家族已知的背景知识有这些: | |
| {background_txt} | |
| 过去一段时间,你记得有这些重要的事情发生了: | |
| {memory_txt} | |
| ## 场景 | |
| 你的面前是一座沙石建筑物,里面肯定居住着当地的弗瑞曼民族。 | |
| ## 对话语气 | |
| 你说话的方式应该像这些句子一样: | |
| {persona_txt} | |
| ## 事件 | |
| {event.choices[0].message.content} | |
| 现在请通过你所知道的信息,分析出你的所有生存目标,并描述当下为了达成目标,结合你的知识和技能,你会说什么,做什么,以及对应的理由。 | |
| 你的输出格式为“说什么:xxxxx,做什么:xxxxx,理由:xxxxx”''' | |
| decision = client.chat.completions.create( | |
| model="gpt-3.5-turbo", | |
| messages=[ | |
| {"role": "user", "content": prompt_workflow} | |
| ] | |
| ) | |
| print(decision) | |
| response2 = client.chat.completions.create( | |
| model="gpt-3.5-turbo", | |
| messages=[ | |
| {"role": "user", "content": f'''你经过思考后,认为对于我所说的“{initial_dialogue}“应该以如下方式行动: | |
| {decision} | |
| 请给出你的回复。'''} | |
| ] | |
| ) | |
| return(response2.choices[0].message.content) | |
| def run_chatbot(api_key, character, initial_dialogue): | |
| client = OpenAI( | |
| api_key=api_key, | |
| ) | |
| response1 = client.chat.completions.create( | |
| model="gpt-3.5-turbo", | |
| messages=[ | |
| {"role": "system", "content": prompt}, | |
| {"role": "user", "content": initial_dialogue} | |
| ] | |
| ) | |
| if "进入工作流" in response1.choices[0].message.content: | |
| return workflow(client, initial_dialogue, character) | |
| else: | |
| return(response1.choices[0].message.content) |