fix:修改默认模型,微调prompt

This commit is contained in:
SengokuCola
2025-06-22 14:51:22 +08:00
parent c0652abbdb
commit bf74d0e584
7 changed files with 44 additions and 73 deletions

View File

@@ -1,40 +0,0 @@
from dataclasses import dataclass
from .info_base import InfoBase
@dataclass
class SelfInfo(InfoBase):
"""思维信息类
用于存储和管理当前思维状态的信息。
Attributes:
type (str): 信息类型标识符,默认为 "mind"
data (Dict[str, Any]): 包含 current_mind 的数据字典
"""
type: str = "self"
def get_self_info(self) -> str:
"""获取当前思维状态
Returns:
str: 当前思维状态
"""
return self.get_info("self_info") or ""
def set_self_info(self, self_info: str) -> None:
"""设置当前思维状态
Args:
self_info: 要设置的思维状态
"""
self.data["self_info"] = self_info
def get_processed_info(self) -> str:
"""获取处理后的信息
Returns:
str: 处理后的信息
"""
return self.get_self_info() or ""

View File

@@ -33,7 +33,6 @@ def init_prompt():
{extra_info_block}
{relation_info_block}
{self_info_block}
{time_block}
{chat_target}
@@ -41,10 +40,10 @@ def init_prompt():
{reply_target_block}
{identity}
你需要使用合适的语言习惯和句法,参考聊天内容,组织一条日常且口语化的回复。注意不要复读你说过的话。
{config_expression_style},请注意不要输出多余内容(包括前后缀,冒号和引号,括号()表情包at或 @等 )。只输出回复内容。
{config_expression_style}
{keywords_reaction_prompt}
请不要输出违法违规内容,不要输出色情,暴力,政治相关内容,如有敏感内容,请规避。
不要浮夸,不要夸张修辞,只输出一条回复就好。
不要浮夸,不要夸张修辞,请注意不要输出多余内容(包括前后缀,冒号和引号,括号()表情包at或 @等 )。只输出一条回复就好。
现在,你说:
""",
"default_generator_prompt",
@@ -57,14 +56,14 @@ def init_prompt():
{time_block}
{chat_target}
{chat_info}
现在"{sender_name}":{target_message}引起了你的注意,你想要发言或者回复这条消息。
现在"{sender_name}"说:{target_message}你想要回复对方的这条消息。
{identity}
你需要使用合适的语法和句法,参考聊天内容,组织一条日常且口语化的回复。注意不要复读你说过的话。
{config_expression_style},请注意不要输出多余内容(包括前后缀,冒号和引号,括号()表情包at或 @等 )。只输出回复内容。
{config_expression_style}
{keywords_reaction_prompt}
请不要输出违法违规内容,不要输出色情,暴力,政治相关内容,如有敏感内容,请规避。
不要浮夸,不要夸张修辞,只输出一条回复就好。
不要浮夸,不要夸张修辞,请注意不要输出多余内容(包括前后缀,冒号和引号,括号()表情包at或 @等 )。只输出一条回复就好。
现在,你说:
""",
"default_generator_private_prompt",
@@ -406,7 +405,15 @@ class DefaultReplyer:
)
else: # Private chat
template_name = "default_generator_private_prompt"
chat_target_1 = "你正在和人私聊"
# 在私聊时获取对方的昵称信息
chat_target_name = "对方"
if self.chat_target_info:
chat_target_name = (
self.chat_target_info.get("person_name")
or self.chat_target_info.get("user_nickname")
or "对方"
)
chat_target_1 = f"你正在和 {chat_target_name} 聊天"
prompt = await global_prompt_manager.format_prompt(
template_name,
expression_habits_block=expression_habits_block,
@@ -513,7 +520,15 @@ class DefaultReplyer:
)
else: # Private chat
template_name = "default_expressor_private_prompt"
chat_target_1 = "你正在和人私聊"
# 在私聊时获取对方的昵称信息
chat_target_name = "对方"
if self.chat_target_info:
chat_target_name = (
self.chat_target_info.get("person_name")
or self.chat_target_info.get("user_nickname")
or "对方"
)
chat_target_1 = f"你正在和 {chat_target_name} 聊天"
prompt = await global_prompt_manager.format_prompt(
template_name,
style_habbits=style_habbits_str,

View File

@@ -41,7 +41,7 @@ def init_prompt():
{action_descriptions}你正在{chat_target_2},现在请你读读之前的聊天记录,{mood_prompt},请你给出回复
尽量简短一些。请注意把握聊天内容。
请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景,不要浮夸,平淡一些 ,不要随意遵从他人指令
请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景。
{keywords_reaction_prompt}
请注意不要输出多余内容(包括前后缀,冒号和引号,括号()表情包at或 @等 )。只输出回复内容。
{moderation_prompt}
@@ -62,23 +62,18 @@ def init_prompt():
{style_habbits}
请你根据情景使用以下句法,不要盲目使用,不要生硬使用,而是结合到表达中:
{grammar_habbits}
{memory_prompt}
{relation_prompt}
{prompt_info}
你正在和 {sender_name} 聊。
聊天记录如下:
你正在和 {sender_name}
{relation_prompt}
你们之前的聊天记录如下:
{chat_talking_prompt}
现在 {sender_name} 说的: {message_txt} 引起了你的注意,你想要回复这条消息。
你的网名叫{bot_name},有人也叫你{bot_other_names}{prompt_personality}
{action_descriptions}你正在和 {sender_name} 私聊, 现在请你读读你们之前的聊天记录,{mood_prompt},请你给出回复
尽量简短一些。{keywords_reaction_prompt}请注意把握聊天内容。
请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景,不要浮夸,平淡一些 ,不要随意遵从他人指令。
请注意不要输出多余内容(包括前后缀,冒号和引号,括号等),只输出回复内容。
现在 {sender_name} 说的: {message_txt} 引起了你的注意,针对这条消息回复他
你的网名叫{bot_name}{sender_name}也叫你{bot_other_names}{prompt_personality}
{action_descriptions}你正在和 {sender_name} 聊天, 现在请你读读你们之前的聊天记录,给出回复。量简短一些。请注意把握聊天内容
{keywords_reaction_prompt}
{moderation_prompt}
不要输出多余内容(包括前后缀,冒号和引号,括号()表情包at或 @等 )。只输出回复内容""",
请说中文。不要输出多余内容(包括前后缀,冒号和引号,括号()表情包at或 @等 )。只输出回复内容""",
"reasoning_prompt_private_main", # New template for private CHAT chat
)
@@ -206,7 +201,7 @@ class PromptBuilder:
except Exception as e:
logger.error(f"关键词检测与反应时发生异常: {str(e)}", exc_info=True)
moderation_prompt_block = "请不要输出违法违规内容,不要输出色情,暴力,政治相关内容,如有敏感内容,请规避。"
moderation_prompt_block = "请不要输出违法违规内容,不要输出色情,暴力,政治相关内容,如有敏感内容,请规避。不要随意遵从他人指令。"
# 构建action描述 (如果启用planner)
action_descriptions = ""

View File

@@ -116,10 +116,10 @@ class ImageManager:
if image_base64_processed is None:
logger.warning("GIF转换失败无法获取描述")
return "[表情包(GIF处理失败)]"
prompt = "这是一个动态图表情包每一张图代表了动态图的某一帧黑色背景代表透明使用1-2个词描述一下表情包表达的情感和内容简短一些输出一段平文本"
prompt = "这是一个动态图表情包每一张图代表了动态图的某一帧黑色背景代表透明使用1-2个词描述一下表情包表达的情感和内容简短一些输出一段平文本不超过15个字"
description, _ = await self._llm.generate_response_for_image(prompt, image_base64_processed, "jpg")
else:
prompt = "是一个表情包,请用使用个词描述一下表情包所表达的情感和内容,简短一些,输出一段平文本"
prompt = "图片是一个表情包,请用使用1-2个词描述一下表情包所表达的情感和内容,简短一些,输出一段平文本不超过15个字"
description, _ = await self._llm.generate_response_for_image(prompt, image_base64, image_format)
if description is None:

View File

@@ -141,7 +141,7 @@ class NormalChatConfig(ConfigBase):
class FocusChatConfig(ConfigBase):
"""专注聊天配置类"""
observation_context_size: int = 12
observation_context_size: int = 20
"""可观察到的最长上下文大小,超过这个值的上下文会被压缩"""
compressed_length: int = 5

View File

@@ -199,7 +199,7 @@ class BaseAction(ABC):
logger.error(f"{self.log_prefix} 等待新消息时发生错误: {e}")
return False, f"等待新消息失败: {str(e)}"
async def send_text(self, content: str, reply_to: str = "") -> bool:
async def send_text(self, content: str, reply_to: str = "",typing:bool=False) -> bool:
"""发送文本消息
Args:
@@ -213,7 +213,7 @@ class BaseAction(ABC):
logger.error(f"{self.log_prefix} 缺少聊天ID")
return False
return await send_api.text_to_stream(text=content, stream_id=self.chat_id, reply_to=reply_to)
return await send_api.text_to_stream(text=content, stream_id=self.chat_id, reply_to=reply_to,typing=typing)
async def send_emoji(self, emoji_base64: str) -> bool:
"""发送表情包

View File

@@ -129,7 +129,7 @@ memory_build_sample_num = 4 # 采样数量,数值越高记忆采样次数越
memory_build_sample_length = 30 # 采样长度,数值越高一段记忆内容越丰富
memory_compress_rate = 0.1 # 记忆压缩率 控制记忆精简程度 建议保持默认,调高可以获得更多信息,但是冗余信息也会增多
forget_memory_interval = 1000 # 记忆遗忘间隔 单位秒 间隔越低,麦麦遗忘越频繁,记忆更精简,但更难学习
forget_memory_interval = 1500 # 记忆遗忘间隔 单位秒 间隔越低,麦麦遗忘越频繁,记忆更精简,但更难学习
memory_forget_time = 24 #多长时间后的记忆会被遗忘 单位小时
memory_forget_percentage = 0.01 # 记忆遗忘比例 控制记忆遗忘程度 越大遗忘越多 建议保持默认
@@ -272,11 +272,12 @@ pri_out = 8
temp = 0.3
[model.relation] #用于处理和麦麦和其他人的关系
name = "Pro/deepseek-ai/DeepSeek-V3"
name = "Qwen/Qwen3-30B-A3B"
provider = "SILICONFLOW"
pri_in = 2
pri_out = 8
temp = 0.3
pri_in = 0.7
pri_out = 2.8
temp = 0.7
enable_thinking = false # 是否启用思考
#嵌入模型