BookWorld / modules /prompt /role_agent_prompt_zh.py
alienet's picture
first commit
e636070
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.避免包含修辞等细节。
"""