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)