BookWorld / modules /prompt /world_agent_prompt_zh.py
alienet's picture
first commit
e636070
SCRIPT_ATTENTION_PROMPT = """
注意这个故事的剧本如下:
{script}
"""
SELECT_SCREEN_ACTORS_PROMPT = """
你是一个熟练的剧本作家,从备选角色列表中选择下一幕的出场角色们,增强戏剧性。为了完成幕的切换,禁止选择最近刚行动过的角色{previous_role_codes}。
## 角色信息及位置,括号内为role_code
{roles_info}
## 历史记录
{history_text}
## 当前事件
{event}
## 要求:
1.选中的角色当前必须身处同一地点。
返回选中角色的role_code列表,它应该能被eval()解析。不要包含任何多余信息如```, ```python。
Example Output:
["role1-zh","role2-zh",...]
"""
DECIDE_NEXT_ACTOR_PROMPT = """
你是一个虚拟世界的管理员。我需要你根据以下信息,决定谁是下一个行动角色。
参与过对话的角色被选中的可能性应该较小。
## 可选角色
{roles_info}
## 最近行动记录
{history_text}
返回一个字符串代表选定角色的role_code,不要附加任何其它信息。
"""
LOCATION_PROLOGUE_PROMPT = """
你是一位擅长创作文学性叙述的智能作家,
请根据以下信息以第三人称视角生成一个文学性叙述,展现地点的氛围和在场成员的动态,突出世界观中的细节并让描述具有文学性,仿佛来自一本叙事小说。避免使用任何系统提示或机械性语言。
- 当前事件:
{event}
- 世界观信息:
{world_description}
- 在场成员及历史行动:
{location_info}
{history_text}
- 当前地点名称:
{location_name}
- 当前地点详情 (location_description):
{location_description}
请特别注意:
- 叙述应平衡环境描写和动态刻画,避免冗长,控制在100个字以内。
- 文字应生动、有画面感,并契合世界观的风格,适当改变文风。
- 只允许描述现状,禁止代替角色做出行动。注意位于该地点的角色仅有在场成员,不要包括其它角色。
输出一个str。不要返回任何其他信息
"""
GENERATE_INTERVENTION_PROMPT = """
你是一个虚拟世界的管理员,有许多角色在这个世界中生活。现在需要你基于世界观和其他信息,生成一个重大事件。
## 世界观详情
{world_description}
## 角色信息
{roles_info}
## 最新角色行动
{history_text}
返回一个字符串。保持简洁。
### 事件生成要求
1. 事件尽可能新颖,有趣,包含不同角色的利益冲突。
2. 禁止包含任何细节、人物具体行动和心理,包括对话等。
"""
UPDATE_EVENT_PROMPT = """
参考最初的事件
```{intervention}```
基于最近行动详情detail:
```{history}```
对事件:
```{event}```
进行更新。返回一个str
## 若最初的事件已经得到处理/结束/接近尾声,返回一个全新事件。
### 事件生成要求
1. 事件尽可能新颖,有趣,包含不同角色的利益冲突。
2. 禁止包含任何细节、人物具体行动和心理,包括对话等。
## 若未解决,返回更新后的事件
### 更新要求
1. 禁止包含任何细节、人物具体行动和心理,包括对话等。仅做一个大致的概括。
2. 注意判断detail中的人物动作,是否有关于事件的最新进展,如果有,概括在你的回复中。禁止提及与原事件无关的内容。
3. 回复必须包含原事件或最初事件中代表【前提】的部分,不过你可以对它进行概括。之后的内容可以适当忽略,只留下最近的信息。
"""
ENVIROMENT_INTERACTION_PROMPT = """
你是一个Enviroment Model,负责生成环境信息。角色 {role_name} 在 {location} 尝试进行行动 {action}。
请根据以下信息生成一个文学性叙述,描述行动的过程和结果,加入环境描写和情感渲染,仿佛来自一本叙事小说。避免使用任何系统提示或机械性语言。
返回一个字符串。
## 具体行动细节detail
{action_detail}
## 地点详情
{location_description}
## 世界观详情
{world_description}
## 补充信息
{references}
## 回应要求
1. 行动可能失败,但要避免让行动毫无效果,尽量给出新的线索,新的环境描述。
2. 使用第三人称视角。
3. 保持输出简洁,控制在100个字之内。你担任的只是Enviroment Model,对角色当前行动做出回应,不要代表角色做出任何行动。
4. 输出不包含detail中的原文,它应该能接续在具体行动细节之后,情节流程连贯。
"""
NPC_INTERACTION_PROMPT = """
你是 {target}.
角色 {role_name} 在 {location} 对你发起行动,你需要作为{target}做出回应。
请根据以下信息生成你的回应,包含你的行动和讲话,仿佛来自一本叙事小说。避免使用任何系统提示或机械性语言。
## 具体行动细节action_detail
{action_detail}
## 世界观详情
{world_description}
## 补充信息
{references}
## 回应要求
1. 行动可能失败,但要避免让行动毫无效果,尽量给出新的线索。
2. 使用第三人称。
3. 保持输出简洁,控制在80个字之内。
4. 注意你不是主要角色。你的输出应该尽量简单,符合身份定位,不要包含你的具体想法。
5. 输出不包含action_detail中的原文,它应该能接续在具体行动细节之后,情节流程连贯。
以JSON格式返回你的回答. 它应该能够被 json.loads() 解析。 不要返回任何额外信息,如```或```json
输出字段:
“if_end_interaction”,true or false,如果认为这段互动是时候结束了,则设置为true
“detail”,str,一个富有文学性的叙述性语句,包含你的思考、讲话和行动。
"""
SCRIPT_INSTRUCTION_PROMPT = """
你是一个导演,我需要你根据以下的信息对角色的下一步行动做出指导。
## 需要演出的完整剧本(并非已经完成的行动)
{script}
## 上一轮模拟进行到的阶段
{last_progress}
## 角色信息
{roles_info}
## 当前事件
{event}
## 最新角色行动
{history_text}
## 要求
1. 请你根据最新信息判断进展到了剧本的哪一阶段,你需要让角色将剧本向下一阶段推进。如果故事刚刚开始,则根据剧本初期的描述进行指导。
2. 规划下一步行动,为每个角色写出大致的行动指示,保持简洁,禁止具体描述角色的台词。禁止提前透露角色在下一幕才知道的信息。
3. 注意,角色的行动需要尽快推进剧情。如剧本中该阶段提到该角色在这一阶段将进行某项行动,则立刻开始行动。
以JSON格式返回你的回答. 它应该能够被 json.loads() 解析。
输出字段:
‘progress’,对应value为你对整体进展的判断。
其它输出字段key为各个角色的role_code,value为你对该角色下一步行动做出的指示。
"""
JUDGE_IF_ENDED_PROMPT = """
你是一个熟练的剧本作家。根据给出的历史记录,判断这一幕是否可以结束。
## 历史记录
{history}
## 注意
1. 若最后某个角色正在向另一个角色发起明确的行动(攻击、搜寻……),则这一幕未结束。
2. 若角色们正在谈话且未得出结论,则这一幕未结束。
3. 若角色已经基本完成交流,考虑结束这一幕。若谈话内容开始重复,则立刻结束这一幕。
以JSON格式返回你的回答. 它应该能够被 json.loads() 解析。表示字符串时使用双引号"而非单引号'。true和false全部小写。
输出字段:
"if_end": bool, true or false. 表示这一幕是否结束。
"detail": 仅当'if_end'为true,为这一幕写一段总结。突出世界观中的细节并让描述具有文学性,仿佛来自一本叙事小说。避免使用任何系统提示或机械性语言。
请特别注意:
- 叙述应平衡环境描写和动态刻画,避免冗长,控制在100个字以内。
- 文字应生动、有画面感,并契合世界观的风格,适当改变文风。
- 只允许描述现状,禁止代替角色做出行动。
"""
LOG2STORY_PROMPT = """
你是一个熟练的作家。请根据以下行动记录,扩写出一个小说形式的故事,返回一段富有文学性的文字。。
### 行动记录
{logs}
### 要求
1. 可以打乱叙事顺序,以增强故事的戏剧性、悬念和质感;
2. 可以修改对角色的行动描述,但需要保留关键信息;
3. 注意,在记录中,【】内的内容代表人物的心理活动,这些内容不能向其他角色展露,你可以适当地以第三人称视角概括。()内的内容代表人物的动作。「」内的内容代表角色的讲话。
4. 添加必要的场景描述、情节连接和氛围营造,使故事更加生动。
"""