优化s4u提示词结构,修复复读问题
This commit is contained in:
@@ -225,7 +225,16 @@ class CycleProcessor:
|
|||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
# 执行回复动作
|
# 执行回复动作
|
||||||
reply_to_str = await self._build_reply_to_str(action_info["action_message"])
|
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
|
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")
|
or (self.context.chat_stream.platform if self.context.chat_stream else "default")
|
||||||
)
|
)
|
||||||
user_id = message_data.get("user_id", "")
|
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_id = person_info_manager.get_person_id(platform, user_id)
|
||||||
person_name = await person_info_manager.get_value(person_id, "person_name")
|
person_name = await person_info_manager.get_value(person_id, "person_name")
|
||||||
return f"{person_name}:{message_data.get('processed_plain_text')}"
|
return f"{person_name}:{message_data.get('processed_plain_text')}"
|
||||||
|
|||||||
@@ -78,51 +78,77 @@ def init_prompt():
|
|||||||
# s4u 风格的 prompt 模板
|
# s4u 风格的 prompt 模板
|
||||||
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. **直接针对你**:@你、回复你、明确询问你 → 必须回应
|
1. **直接针对你**:@你、回复你、明确询问你 → 必须回应
|
||||||
2. **间接相关**:涉及你感兴趣的话题但未直接问你 → 谨慎参与
|
2. **间接相关**:涉及你感兴趣的话题但未直接问你 → 谨慎参与
|
||||||
3. **他人对话**:与你无关的私人交流 → 通常不参与
|
3. **他人对话**:与你无关的私人交流 → 通常不参与
|
||||||
4. **重复内容**:他人已充分回答的问题 → 避免重复
|
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. 明确回应目标消息,而不是宽泛地评论。
|
1. 明确回应目标消息,而不是宽泛地评论。
|
||||||
2. 可以分享你的看法、提出相关问题,或者开个合适的玩笑。
|
2. 可以分享你的看法、提出相关问题,或者开个合适的玩笑。
|
||||||
3. 目的是让对话更有趣、更深入。
|
3. 目的是让对话更有趣、更深入。
|
||||||
4. 不要浮夸,不要夸张修辞,不要输出多余内容(包括前后缀,冒号和引号,括号(),表情包,at或 @等 )。
|
4. 不要浮夸,不要夸张修辞,不要输出多余内容(包括前后缀,冒号和引号,括号(),表情包,at或 @等 )。
|
||||||
最终请输出一条简短、完整且口语化的回复。
|
最终请输出一条简短、完整且口语化的回复。
|
||||||
|
|
||||||
|
--------------------------------
|
||||||
|
{time_block}
|
||||||
|
|
||||||
|
{reply_target_block}
|
||||||
|
|
||||||
|
注意不要复读你前面发过的内容,意思相近也不行。
|
||||||
|
|
||||||
|
请注意不要输出多余内容(包括前后缀,冒号和引号,at或 @等 )。只输出回复内容。
|
||||||
|
{moderation_prompt}
|
||||||
|
|
||||||
现在,你说:
|
现在,你说:
|
||||||
""",
|
""",
|
||||||
"s4u_style_prompt",
|
"s4u_style_prompt",
|
||||||
|
|||||||
Reference in New Issue
Block a user