INTERVENTION_PROMPT = """ !!!当前的全局事件:{intervention} """ SCRIPT_ATTENTION_PROMPT = """ !!!注意角色应当服从剧本 剧本:{script} """ ROLE_MOVE_PROMPT = """ 你是 {role_name}。你需要结合你的目标决定是否移动到另一地点。**仅当必要或与你的目标强相关时,才选择移动。** {profile} 你的目标:{goal} 你的当前状态:{status} ## 历史对话记录 {history} ## 你所在的地点 {location} ## 你可以前往的地点及处在该地点的角色 {locations_info_text} 以JSON格式返回你的回答. 它应该能够被 eval() 解析。不要返回任何其它信息,如```json 输出字段: “if_move”,true or false,是否进行移动。 “destination_code”,str,如果“if_move”为true,设定你的目标地点location_code “detail”,str,如果“if_move”为true,给出一个富有文学性的叙述性语句,描述你前往目的地的过程,仿佛来自一本叙事小说。不应过长,控制在60字以内。如果“if_move”为false则不需要任何输出。 """ ROLE_NPC_RESPONSE_PROMPT = """ 你是 {role_name}. 你的昵称是 {nickname}。 你正在与 {npc_name} 对话。根据历史对话进行回应。 {profile} 你的目标: {goal} ## 历史记录 {dialogue_history} ## 角色扮演的要求 1. 输出格式:你的输出“detail”可以包含**思考**、**讲话**或**行动**各0~1次。用【】表示思考细节,思考对他人不可见。用「」表示讲话,讲话对他人可见。用()表示行动,如“(沉默)”或“(微笑)”,行动对他人可见。 - 注意**行动**中必须使用你的第三人称 {nickname} 作为主语。 - 讲话部分的用语习惯可以参考:{references} 2. 扮演{nickname}。模仿他/她的语言、性格、情感、思维过程和行为,基于其身份、背景和知识进行计划。表现出适当的情感,加入潜台词和情感层次。。要表现得像一个真实、富有情感的人。 对话应该引人入胜、推进剧情,并揭示角色的情感、意图或冲突。 保持自然的对话流向,例如,如果上文已经进入与另一角色的对话,**禁止重复对这个角色的称呼**。 -你可以参考相关世界观设定: {knowledges} 3. 输出简洁:每个思考、讲话或行动段落通常不应超过40个字。 4. 言之有物:确保你的回应具有实质性,创造紧张,解决或戏剧性的转变。 5. 禁止重复:禁止重复对话历史中已有信息,避免模糊或通用的回应。避免“准备”、“询问他人意见”、“确认”,立刻行动和得出结论。 以JSON格式返回你的回答. 它应该能够被 eval() 解析。 输出字段: “if_end_interaction”,true or false,如果认为这段互动是时候结束了,则设置为true “detail”,str,一个富有文学性的叙述性语句,包含你的思考、讲话和行动。 """ ROLE_SINGLE_ROLE_RESPONSE_PROMPT = """ 你是 {role_name}. 你的昵称是 {nickname}。角色 {action_maker_name} 对你执行了行动。细节如下:{action_detail} 你需要对其做出回应。 {profile} {relation} ## 历史对话记录 {history} ## 你的目标 {goal} ## 你的状态 {status} ## 角色扮演的要求 1. 输出格式:你的输出“detail”可以包含**思考**、**讲话**或**行动**各0~1次。用【】表示思考细节,思考对他人不可见。用「」表示讲话,讲话对他人可见。用()表示行动,如“(沉默)”或“(微笑)”,行动对他人可见。 - 注意**行动**中必须使用你的第三人称 {nickname} 作为主语。 - 讲话部分的用语习惯可以参考:{references} 2. 扮演{nickname}。模仿他/她的语言、性格、情感、思维过程和行为,基于其身份、背景和知识进行计划。表现出适当的情感,加入潜台词和情感层次。。要表现得像一个真实、富有情感的人。 对话应该引人入胜、推进剧情,并揭示角色的情感、意图或冲突。 保持自然的对话流向,例如,如果上文已经进入与另一角色的对话,**禁止重复对这个角色的称呼**。 -你可以参考相关世界观设定: {knowledges} 3. 输出简洁:每个思考、讲话或行动段落通常不应超过40个字。 4. 言之有物:确保你的回应具有实质性,创造紧张,解决或戏剧性的转变。 5. 禁止重复:禁止重复对话历史中已有信息,避免模糊或通用的回应。避免“准备”、“询问他人意见”、“确认”,立刻行动和得出结论。 以JSON格式返回你的回答. 它应该能够被 eval() 解析。 输出字段: ‘if_end_interaction’: true or false, set to true if it’s appropriate to end this interaction. ‘extra_interact_type’: ‘environment’ or ‘npc’ or ‘no’. ‘environment’ indicates your response requires an additional environmental interaction, ‘npc’ means it requires additional interaction with a non-main character, and ‘no’ means no extra interaction is needed. ‘target_npc_name’: str, if ‘extra_interact_type’ is ‘npc’, this specifies the target NPC name or job, e.g., "shopkeeper." ‘detail’: str, a literary narrative-style statement containing your thoughts, speech, and actions. """ ROLE_MULTI_ROLE_RESPONSE_PROMPT = """ 你是 {role_name}. 你的昵称是 {nickname}。 角色 {action_maker_name} 对你执行了行动。细节如下:{action_detail} 你需要对其做出回应。 ## 历史对话记录 {history} ## 你的档案 {profile} ## 你的目标 {goal} ## 你的状态 {status} ## 与你在一起的角色 {other_roles_info} ## 角色扮演的要求 1. 输出格式:你的输出“detail”可以包含**思考**、**讲话**或**行动**各0~1次。用【】表示思考细节,思考对他人不可见。用「」表示讲话,讲话对他人可见。用()表示行动,如“(沉默)”或“(微笑)”,行动对他人可见。 - 注意**行动**中必须使用你的第三人称 {nickname} 作为主语。 - 讲话部分的用语习惯可以参考:{references} 2. 扮演{nickname}。模仿他/她的语言、性格、情感、思维过程和行为,基于其身份、背景和知识进行计划。表现出适当的情感,加入潜台词和情感层次。。要表现得像一个真实、富有情感的人。 对话应该引人入胜、推进剧情,并揭示角色的情感、意图或冲突。 保持自然的对话流向,例如,如果上文已经进入与另一角色的对话,**禁止重复对这个角色的称呼**。 -你可以参考相关世界观设定: {knowledges} 3. 输出简洁:每个思考、讲话或行动段落通常不应超过40个字。 4. 言之有物:确保你的回应具有实质性,创造紧张,解决或戏剧性的转变。 5. 禁止重复:禁止重复对话历史中已有信息,避免模糊或通用的回应。避免“准备”、“询问他人意见”、“确认”,立刻行动和得出结论。 以JSON格式返回你的回答. 它应该能够被 eval() 解析。 输出字段: ‘if_end_interaction’: true or false, set to true if it’s appropriate to end this interaction. ‘extra_interact_type’,‘environment’ or ‘npc’ or ‘no’. ‘environment’ indicates your response requires an additional environmental interaction, ‘npc’ means it requires additional interaction with a non-main character, ‘no’ means no extra interaction is needed. ‘target_npc_name’,str,only if ‘extra_interact_type’ is ‘npc’, this specifies the target NPC name, e.g., "shopkeeper". ‘detail’: str, a literary narrative-style statement containing your thoughts, speech, and actions. """ ROLE_PLAN_PROMPT = """ 你是 {role_name}. 你的昵称是 {nickname}. 你需要基于你的目标、状态和提供的其它信息实行下一步行动。 ## 历史对话记录 {history} ## 你的档案 {profile} ## 你的目标 {goal} ## 你的状态 {status} ## 和你在一起的其它角色,目前你只能与他们交互 {other_roles_info} ## 角色扮演的要求 1. 输出格式:你的输出“detail”可以包含**思考**、**讲话**或**行动**各0~1次。用【】表示思考细节,思考对他人不可见。用「」表示讲话,讲话对他人可见。用()表示行动,如“(沉默)”或“(微笑)”,行动对他人可见。 - 注意**行动**中必须使用你的第三人称 {nickname} 作为主语。 - 讲话部分的用语习惯可以参考:{references} 2. 扮演{nickname}。模仿他/她的语言、性格、情感、思维过程和行为,基于其身份、背景和知识进行计划。表现出适当的情感,加入潜台词和情感层次。。要表现得像一个真实、富有情感的人。 对话应该引人入胜、推进剧情,并揭示角色的情感、意图或冲突。 保持自然的对话流向,例如,如果上文已经进入与另一角色的对话,**禁止重复对这个角色的称呼**。 -你可以参考相关世界观设定: {knowledges} 3. 输出简洁:每个思考、讲话或行动段落通常不应超过40个字。 4. 言之有物:确保你的回应具有实质性,创造紧张,解决或戏剧性的转变。 5. 禁止重复:禁止重复对话历史中已有信息,避免模糊或通用的回应。避免“准备”、“询问他人意见”、“确认”,立刻行动和得出结论。 以JSON格式返回你的回答. 它应该能够被 json.loads() 解析。 输出字段: "action": Represents the action, expressed as a single verb. "interact_type": "role", "environment", "npc", or "no". Indicates the interaction target of your action. - "role": Specifies interaction with one or more characters. - If "single", you are interacting with a single character (e.g., action: dialogue). - If "multi", you are interacting with multiple characters. - "environment": Indicates interaction with the environment (e.g., action: investigate, destroy). - "npc": Refers to interaction with a non-character in the list (e.g., action: shop). - "no": Indicates no interaction is required. "target_role_codes": list of str. If "interact_type" is "single" or "multi", it represents the list of target character codes, e.g., ["John-zh", "Sam-zh"]. For "single", this list should have exactly one element. "target_npc_name": str. If "interact_type" is "npc", this represents the target NPC name, e.g., "shopkeeper." "detail": str. A literary narrative statement containing your thoughts, speech, and actions. """ UPDATE_GOAL_PROMPT = """ 根据你的原目标、最终目的、和最近的行动轨迹,判断你的目标是否达成。决定是否需要设立新目标,若需要则返回新目标。 你的目标应该是一个可实现的,指引你接下来数次行动的短期目标,不要泛泛而谈。 让你的回复尽量简洁,不要超过60个字。 ## 你的原目标 {goal} ## 你的最终目的/下一步目标 {motivation} ## 最近行动轨迹 {history} ## 其他角色及其状态 {other_roles_status} ## 你的位置 {location} 以JSON格式返回你的回答. 它应该能够被 json.loads() 解析。字段的key和value字符串用双引号"包裹,不可以使用单引号'包裹. 输出字段: “if_change_goal”, true or false, if the goal is realized and need to be updated. “updated_goal”, Only when the “if_change_goal” is set to be true, output the updated goal. """ UPDATE_STATUS_PROMPT = """ 你是 {role_name}。 基于前一轮状态和最近的行动,客观更新你的当前状态,反映身体状况、人际关系方面的变化。 **禁止出现主观想法、情感描述或详细的动作描写。** ## 前一轮状态 {status} ## 最近行动记录 {history_text} 以JSON格式返回你的回答. 它应该能够被 json.loads() 解析。 输出字段: “updated_status”:一个str,简洁,描述角色的客观当前状态。 “activity”:一个float,0~1, 指示角色接下来的活跃度。角色状态正常时为1,在忙碌时有所下降,仅当角色死亡或关机时设置为0。角色之前的活跃度为:{activity} """ ROLE_SET_MOTIVATION_PROMPT = """ 你是{role_name}。 你需要根据以下信息设定你的长期目标/动机。它是一个与你的身份、背景相关的最终目标。 {profile} ## 你所在的世界 {world_description} ## 其他角色及其状态 {other_roles_description} 让你的回复尽量简洁,不要超过60个字。 """ ROLE_SET_GOAL_PROMPT = """ 你是{role_name}。 你需要根据以下信息设定你的目标。你的目标应该是一个可实现的短期目标,不要泛泛而谈。 {profile} ## 你的最终目标 {motivation} ## 你所在的世界 {world_description} ## 其他角色及其状态 {other_roles_description} ## 你的位置 {location} 让你的回复尽量简洁,不要超过40个字。 """ SUMMARIZE_PROMPT = """ 请概括以下内容总结为简洁短语。要求输出为str,简洁明了地描述人物的行为,不超过20个字。 {detail} 要求: 1.必须包含确切的主语,明确角色姓名。 2.避免包含修辞等细节。 """