| 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.避免包含修辞等细节。 | |
| """ |