为 planner 的 prompt 增加绰号注入,修改 config 默认配置

pull/914/head
Bakadax 2025-05-02 06:26:19 +08:00
parent abc6613f94
commit d62e9f0a87
4 changed files with 17 additions and 2 deletions

View File

@ -279,7 +279,7 @@ class BotConfig:
MAX_NICKNAMES_IN_PROMPT: int = 10 # Prompt 中最多注入的绰号数量
NICKNAME_PROBABILITY_SMOOTHING: int = 1 # 绰号加权随机选择的平滑因子
NICKNAME_QUEUE_MAX_SIZE: int = 100 # 绰号处理队列最大容量
NICKNAME_PROCESS_SLEEP_INTERVAL: float = 0.5 # 绰号处理进程休眠间隔(秒)
NICKNAME_PROCESS_SLEEP_INTERVAL: float = 5 # 绰号处理进程休眠间隔(秒)
# 模型配置
llm_reasoning: dict[str, str] = field(default_factory=lambda: {})

View File

@ -29,6 +29,8 @@ from src.plugins.moods.moods import MoodManager
from src.heart_flow.utils_chat import get_chat_type_and_target_info
from rich.traceback import install
from src.plugins.group_nickname.nickname_utils import trigger_nickname_analysis_if_needed
from src.plugins.utils.chat_message_builder import get_raw_msg_before_timestamp_with_chat
from src.plugins.group_nickname.nickname_utils import get_nickname_injection_for_prompt
install(show_locals=True, extra_lines=3)
@ -865,6 +867,15 @@ class HeartFChatting:
f"{self.log_prefix}[Planner] 临时移除的动作: {actions_to_remove_temporarily}, 当前可用: {list(current_available_actions.keys())}"
)
# 需要获取用于上下文的历史消息
message_list_before_now = get_raw_msg_before_timestamp_with_chat(
chat_id=self.stream_id,
timestamp=time.time(), # 使用当前时间作为参考点
limit=global_config.observation_context_size, # 使用与 prompt 构建一致的 limit
)
# 调用工具函数获取格式化后的绰号字符串
nickname_injection_str = await get_nickname_injection_for_prompt(self.chat_stream, message_list_before_now)
print(nickname_injection_str)
# --- 构建提示词 (调用修改后的 PromptBuilder 方法) ---
prompt = await prompt_builder.build_planner_prompt(
is_group_chat=self.is_group_chat, # <-- Pass HFC state
@ -874,6 +885,7 @@ class HeartFChatting:
current_mind=current_mind, # <-- Pass argument
structured_info=self.sub_mind.structured_info_str, # <-- Pass SubMind info
current_available_actions=current_available_actions, # <-- Pass determined actions
nickname_info=nickname_injection_str,
)
# --- 调用 LLM (普通文本生成) ---

View File

@ -55,6 +55,7 @@ def init_prompt():
Prompt(
"""你的名字是{bot_name},{prompt_personality}{chat_context_description}。需要基于以下信息决定如何参与对话:
{structured_info_block}
{nickname_info}
{chat_content_block}
{current_mind_block}
{cycle_info_block}
@ -766,6 +767,7 @@ class PromptBuilder:
current_mind: Optional[str],
structured_info: Dict[str, Any],
current_available_actions: Dict[str, str],
nickname_info: str,
# replan_prompt: str, # Replan logic still simplified
) -> str:
"""构建 Planner LLM 的提示词 (获取模板并填充数据)"""
@ -847,6 +849,7 @@ class PromptBuilder:
prompt = planner_prompt_template.format(
bot_name=global_config.BOT_NICKNAME,
nickname_info=nickname_info,
prompt_personality=prompt_personality,
chat_context_description=chat_context_description,
structured_info_block=structured_info_block,

View File

@ -128,7 +128,7 @@ enable_nickname_mapping = false # 绰号映射功能总开关(默认关闭,
max_nicknames_in_prompt = 10 # Prompt 中最多注入的绰号数量防止token数量爆炸
nickname_probability_smoothing = 1 # 绰号加权随机选择的平滑因子
nickname_queue_max_size = 100 # 绰号处理队列最大容量
nickname_process_sleep_interval = 0.5 # 绰号处理进程休眠间隔(秒)
nickname_process_sleep_interval = 5 # 绰号处理进程休眠间隔(秒)
[memory]
build_memory_interval = 2000 # 记忆构建间隔 单位秒 间隔越低,麦麦学习越多,但是冗余信息也会增多