|
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. 添加必要的场景描述、情节连接和氛围营造,使故事更加生动。 |
|
""" |