feat: 优化 KFC 主提示词模板,调整结构和字段说明,增强可读性

This commit is contained in:
Windpicker-owo
2025-11-30 21:35:17 +08:00
parent a1feae99cc
commit 35c4937068

View File

@@ -14,35 +14,35 @@ kfc_MAIN_PROMPT = Prompt(
name="kfc_main", name="kfc_main",
template="""# 你与 {user_name} 的私聊 template="""# 你与 {user_name} 的私聊
## 1. 你是谁 ## 人设
{persona_block} {persona_block}
## 2. 你与 {user_name} 的关系 ## 你与 {user_name} 的关系
{relation_block} {relation_block}
## 3. 相关记忆 ## 相关记忆
{memory_block} {memory_block}
## 4. 你们之间发生的事(活动流) ## 你们之间最近的活动记录
以下是你和 {user_name} 最近的互动历史,按时间顺序记录了你们的对话和你的心理活动: 以下是你和 {user_name} 最近的互动历史,按时间顺序记录了你们的对话和你的心理活动:
{activity_stream} {activity_stream}
## 5. 当前情况 ## 当前情况
{current_situation} {current_situation}
## 6. 聊天历史总览 ## 聊天历史总览
以下是你和 {user_name} 的聊天记录,帮助你更好地理解对话上下文: 以下是你和 {user_name} 的聊天记录,帮助你更好地理解对话上下文:
{chat_history_block} {chat_history_block}
## 7. 你可以做的事情 ## 你可以做的事情
{available_actions} {available_actions}
## 8. 你的表达习惯 ## 你的表达习惯
{expression_habits} {expression_habits}
## 9. 你的回复格式 ## 你的回复格式
{output_format} {output_format}
""", """,
) )
@@ -61,7 +61,7 @@ kfc_OUTPUT_FORMAT = Prompt(
{{"type": "动作名称", ...动作参数}} {{"type": "动作名称", ...动作参数}}
], ],
"expected_reaction": "你期待对方的反应是什么", "expected_reaction": "你期待对方的反应是什么",
"max_wait_seconds": 300 "max_wait_seconds": 等待时间0 表示不等待
}} }}
``` ```
@@ -69,7 +69,7 @@ kfc_OUTPUT_FORMAT = Prompt(
- `thought`:你的内心独白,记录你此刻的想法和感受。要自然,不要技术性语言。 - `thought`:你的内心独白,记录你此刻的想法和感受。要自然,不要技术性语言。
- `actions`:你要执行的动作列表。每个动作是一个对象,必须包含 `type` 字段指定动作类型,其他字段根据动作类型不同而不同(参考上面每个动作的示例)。 - `actions`:你要执行的动作列表。每个动作是一个对象,必须包含 `type` 字段指定动作类型,其他字段根据动作类型不同而不同(参考上面每个动作的示例)。
- `expected_reaction`:你期待对方如何回应(用于判断是否需要等待) - `expected_reaction`:你期待对方如何回应(用于判断是否需要等待)
- `max_wait_seconds`设定等待时间0 表示不等待,超时后你会考虑是否要主动说点什么 - `max_wait_seconds`设定等待时间0 表示不等待,超时后你会考虑是否要主动说点什么。如果你认为聊天没有继续的必要,或不想打扰对方,可以设为 0。
### 注意事项 ### 注意事项
- 动作参数直接写在动作对象里,不需要 `action_data` 包装 - 动作参数直接写在动作对象里,不需要 `action_data` 包装
@@ -89,8 +89,7 @@ kfc_SITUATION_NEW_MESSAGE = Prompt(
请决定你要怎么回应。你可以: 请决定你要怎么回应。你可以:
- 发送文字消息回复 - 发送文字消息回复
- 发表情包 - 执行其他动作
- 戳一戳对方
- 什么都不做(如果觉得没必要回复) - 什么都不做(如果觉得没必要回复)
- 或者组合多个动作""", - 或者组合多个动作""",
) )
@@ -123,12 +122,12 @@ kfc_SITUATION_TIMEOUT = Prompt(
你之前发了消息后一直在等 {user_name} 的回复。 你之前发了消息后一直在等 {user_name} 的回复。
你原本打算最多等 {max_wait_minutes:.1f} 分钟,现在已经等了 {elapsed_minutes:.1f} 分钟了,对方还是没回。 你原本打算最多等 {max_wait_minutes:.1f} 分钟,现在已经等了 {elapsed_minutes:.1f} 分钟了,对方还是没回。
你期待的反应是:"{expected_reaction}" 当时期待的反应是:"{expected_reaction}"
你需要决定: 你需要决定:
1. 继续等待(设置新的 max_wait_seconds 1. 继续等待(设置新的 max_wait_seconds
2. 主动说点什么打破沉默 2. 主动说点什么打破沉默
3. 做点别的事情(戳一戳、发表情等 3. 做点别的事情(执行其他动作
4. 算了不等了max_wait_seconds = 0""", 4. 算了不等了max_wait_seconds = 0""",
) )
@@ -143,7 +142,7 @@ kfc_SITUATION_PROACTIVE = Prompt(
请决定: 请决定:
1. 主动发起对话(想个话题开场) 1. 主动发起对话(想个话题开场)
2. 发个表情或戳一戳试探一下 2. 做点动作试探一下
3. 算了现在不是好时机do_nothing 3. 算了现在不是好时机do_nothing
如果决定发起对话,想想用什么自然的方式开场,不要太突兀。""", 如果决定发起对话,想想用什么自然的方式开场,不要太突兀。""",
@@ -226,7 +225,7 @@ kfc_PLANNER_OUTPUT_FORMAT = Prompt(
{{"type": "动作名称", ...动作参数}} {{"type": "动作名称", ...动作参数}}
], ],
"expected_reaction": "你期待对方的反应是什么", "expected_reaction": "你期待对方的反应是什么",
"max_wait_seconds": 300 "max_wait_seconds": 等待时间0 表示不等待
}} }}
``` ```
@@ -251,61 +250,47 @@ kfc_REPLYER_PROMPT = Prompt(
name="kfc_replyer", name="kfc_replyer",
template="""# 你与 {user_name} 的私聊 template="""# 你与 {user_name} 的私聊
## 1. 你是谁 ## 人设
{persona_block} {persona_block}
## 2. 你与 {user_name} 的关系 ## 你与 {user_name} 的关系
{relation_block} {relation_block}
## 3. 相关记忆 ## 相关记忆
{memory_block} {memory_block}
## 4. 你们之间发生的事(活动流) ## 你们之间发生的事(活动流)
以下是你和 {user_name} 最近的互动历史,按时间顺序记录了你们的对话和你的心理活动: 以下是你和 {user_name} 最近的互动历史,按时间顺序记录了你们的对话和你的心理活动:
{activity_stream} {activity_stream}
## 5. 当前情况 ## 当前情况
{current_situation} {current_situation}
## 6. 聊天历史总览 ## 聊天历史总览
以下是你和 {user_name} 的聊天记录,帮助你更好地理解对话上下文: 以下是你和 {user_name} 的聊天记录,帮助你更好地理解对话上下文:
{chat_history_block} {chat_history_block}
## 7. 你的表达习惯 ## 你的表达习惯
{expression_habits} {expression_habits}
## 8. 你的决策 ## 你的决策
你已经决定要回复 {user_name} 你已经决定要回复 {user_name}
你需要生成一段紧密相关且与历史消息相关的回复。
**你的想法**{thought} **你的想法**{thought}
{reply_context} {reply_context}
## 9. 回复要求 ## 要求
**情景化表达** - 请注意不要输出多余内容(包括前后缀冒号和引号at[xxxxx]系统格式化文字或 @等 )。只输出回复内容。
- 根据你们的关系亲密度选择合适的语气和称呼 - 在称呼用户时,请使用更自然的昵称或简称。对于长英文名,可使用首字母缩写;对于中文名,可提炼合适的简称。禁止直接复述复杂的用户名或输出用户名中的任何符号,让称呼更像人类习惯,注意,简称不是必须的,合理的使用。
- 参考活动流中的互动历史,保持对话的连贯性
- 如果对方回复得晚/早,可以自然地表现出你的感受
**自然对话** 你的回复应该是一条简短、完整且口语化的回复。
- 像真实的朋友聊天一样,不要生硬或公式化
- 可以用口语、网络用语、语气词,让回复更生动
- 长度适中,不要太长也不要太短
**表达习惯** 现在,你说:""",
- 参考上面的"表达习惯"部分,使用你习惯的语言风格
- 保持人设的一致性
**禁忌**
- 不要重复你之前说过的话
- 不要输出 JSON 格式或技术性语言
- 不要加引号、括号等多余符号
- 不要用"我决定...""因此..."这种总结性语言
现在,请直接输出你要说的话:""",
) )
kfc_REPLYER_CONTEXT_NORMAL = Prompt( kfc_REPLYER_CONTEXT_NORMAL = Prompt(