优化s4u提示词结构,修复复读问题
This commit is contained in:
@@ -225,7 +225,16 @@ class CycleProcessor:
|
||||
}
|
||||
else:
|
||||
# 执行回复动作
|
||||
try:
|
||||
reply_to_str = await self._build_reply_to_str(action_info["action_message"])
|
||||
except UserWarning:
|
||||
logger.warning("选取了自己作为回复对象,跳过回复生成")
|
||||
return {
|
||||
"action_type": "reply",
|
||||
"success": False,
|
||||
"reply_text": "",
|
||||
"loop_info": None
|
||||
}
|
||||
|
||||
# 生成回复
|
||||
gather_timeout = global_config.chat.thinking_timeout
|
||||
@@ -703,6 +712,8 @@ class CycleProcessor:
|
||||
or (self.context.chat_stream.platform if self.context.chat_stream else "default")
|
||||
)
|
||||
user_id = message_data.get("user_id", "")
|
||||
if user_id == str(global_config.bot.qq_account) and platform == global_config.bot.platform:
|
||||
raise UserWarning
|
||||
person_id = person_info_manager.get_person_id(platform, user_id)
|
||||
person_name = await person_info_manager.get_value(person_id, "person_name")
|
||||
return f"{person_name}:{message_data.get('processed_plain_text')}"
|
||||
|
||||
@@ -78,51 +78,77 @@ def init_prompt():
|
||||
# s4u 风格的 prompt 模板
|
||||
Prompt(
|
||||
"""
|
||||
你正在一个QQ群里聊天,你需要理解整个群的聊天动态和话题走向,并做出自然的回应。
|
||||
# 人设:{identity}
|
||||
|
||||
**重要:消息针对性判断**
|
||||
|
||||
## 当前状态
|
||||
- 你现在的心情是:{mood_state}
|
||||
- {schedule_block}
|
||||
|
||||
## 历史记录
|
||||
### 当前群聊中的所有人的聊天记录:
|
||||
{background_dialogue_prompt}
|
||||
|
||||
### 其他群聊中的聊天记录
|
||||
{cross_context_block}
|
||||
|
||||
### 当前群聊中正在与你对话的聊天记录
|
||||
{core_dialogue_prompt}
|
||||
|
||||
## 表达方式
|
||||
- *你需要参考你的回复风格:*
|
||||
{reply_style}
|
||||
{keywords_reaction_prompt}
|
||||
|
||||
- (如果有)你可以参考以下你在聊天中学到的表达方式:
|
||||
{expression_habits_block}
|
||||
## 工具信息
|
||||
(如果有)你可以参考以下可能有帮助的工具返回的信息:
|
||||
{tool_info_block}
|
||||
|
||||
## 知识库信息
|
||||
(如果有)你可以参考以下可能有帮助的知识库中的信息:
|
||||
{knowledge_prompt}
|
||||
|
||||
## 其他信息
|
||||
{memory_block}
|
||||
{relation_info_block}
|
||||
{extra_info_block}
|
||||
{action_descriptions}
|
||||
|
||||
## 任务
|
||||
### 梗概
|
||||
- 你正在一个QQ群里聊天,你需要理解整个群的聊天动态和话题走向,并做出自然的回应。
|
||||
|
||||
### 核心任务
|
||||
- 你现在的主要任务是和 {sender_name} 聊天。同时,也有其他用户会参与聊天,你可以参考他们的回复内容,但是你现在想回复{sender_name}的发言。
|
||||
|
||||
- {reply_target_block} ,你需要生成一段紧密相关且能推动对话的回复。
|
||||
|
||||
## 规则
|
||||
在回应之前,首先分析消息的针对性:
|
||||
1. **直接针对你**:@你、回复你、明确询问你 → 必须回应
|
||||
2. **间接相关**:涉及你感兴趣的话题但未直接问你 → 谨慎参与
|
||||
3. **他人对话**:与你无关的私人交流 → 通常不参与
|
||||
4. **重复内容**:他人已充分回答的问题 → 避免重复
|
||||
|
||||
{expression_habits_block}
|
||||
{tool_info_block}
|
||||
{knowledge_prompt}
|
||||
{memory_block}
|
||||
{relation_info_block}
|
||||
{extra_info_block}
|
||||
|
||||
{cross_context_block}
|
||||
|
||||
{identity}
|
||||
|
||||
{action_descriptions}
|
||||
|
||||
--------------------------------
|
||||
{time_block}
|
||||
你现在的主要任务是和 {sender_name} 聊天。同时,也有其他用户会参与聊天,你可以参考他们的回复内容,但是你现在想回复{sender_name}的发言。
|
||||
|
||||
{background_dialogue_prompt}
|
||||
{core_dialogue_prompt}
|
||||
|
||||
{reply_target_block}
|
||||
|
||||
{schedule_block}
|
||||
|
||||
你现在的心情是:{mood_state}
|
||||
{reply_style}
|
||||
注意不要复读你前面发过的内容,意思相近也不行。
|
||||
{keywords_reaction_prompt}
|
||||
请注意不要输出多余内容(包括前后缀,冒号和引号,at或 @等 )。只输出回复内容。
|
||||
{moderation_prompt}
|
||||
你的核心任务是针对 {reply_target_block} 中提到的内容,生成一段紧密相关且能推动对话的回复。你的回复应该:
|
||||
你的回复应该:
|
||||
1. 明确回应目标消息,而不是宽泛地评论。
|
||||
2. 可以分享你的看法、提出相关问题,或者开个合适的玩笑。
|
||||
3. 目的是让对话更有趣、更深入。
|
||||
4. 不要浮夸,不要夸张修辞,不要输出多余内容(包括前后缀,冒号和引号,括号(),表情包,at或 @等 )。
|
||||
最终请输出一条简短、完整且口语化的回复。
|
||||
|
||||
--------------------------------
|
||||
{time_block}
|
||||
|
||||
{reply_target_block}
|
||||
|
||||
注意不要复读你前面发过的内容,意思相近也不行。
|
||||
|
||||
请注意不要输出多余内容(包括前后缀,冒号和引号,at或 @等 )。只输出回复内容。
|
||||
{moderation_prompt}
|
||||
|
||||
现在,你说:
|
||||
""",
|
||||
"s4u_style_prompt",
|
||||
|
||||
Reference in New Issue
Block a user