diff --git a/src/plugins/chat/config.py b/src/plugins/chat/config.py index 17b3cfece..151aa5724 100644 --- a/src/plugins/chat/config.py +++ b/src/plugins/chat/config.py @@ -56,7 +56,6 @@ class BotConfig: llm_reasoning: Dict[str, str] = field(default_factory=lambda: {}) llm_reasoning_minor: Dict[str, str] = field(default_factory=lambda: {}) llm_normal: Dict[str, str] = field(default_factory=lambda: {}) - llm_normal_minor: Dict[str, str] = field(default_factory=lambda: {}) llm_topic_judge: Dict[str, str] = field(default_factory=lambda: {}) llm_summary_by_topic: Dict[str, str] = field(default_factory=lambda: {}) llm_emotion_judge: Dict[str, str] = field(default_factory=lambda: {}) @@ -235,7 +234,6 @@ class BotConfig: "llm_reasoning", "llm_reasoning_minor", "llm_normal", - "llm_normal_minor", "llm_topic_judge", "llm_summary_by_topic", "llm_emotion_judge", diff --git a/src/plugins/chat/emoji_manager.py b/src/plugins/chat/emoji_manager.py index e3a6b77af..57c2b0b85 100644 --- a/src/plugins/chat/emoji_manager.py +++ b/src/plugins/chat/emoji_manager.py @@ -38,9 +38,9 @@ class EmojiManager: def __init__(self): self._scan_task = None - self.vlm = LLM_request(model=global_config.vlm, temperature=0.3, max_tokens=1000, request_type="image") + self.vlm = LLM_request(model=global_config.vlm, temperature=0.3, max_tokens=1000, request_type="emoji") self.llm_emotion_judge = LLM_request( - model=global_config.llm_emotion_judge, max_tokens=600, temperature=0.8, request_type="image" + model=global_config.llm_emotion_judge, max_tokens=600, temperature=0.8, request_type="emoji" ) # 更高的温度,更少的token(后续可以根据情绪来调整温度) def _ensure_emoji_dir(self): @@ -111,7 +111,7 @@ class EmojiManager: if not text_for_search: logger.error("无法获取文本的情绪") return None - text_embedding = await get_embedding(text_for_search) + text_embedding = await get_embedding(text_for_search, request_type="emoji") if not text_embedding: logger.error("无法获取文本的embedding") return None @@ -310,7 +310,7 @@ class EmojiManager: logger.info(f"[检查] 表情包检查通过: {check}") if description is not None: - embedding = await get_embedding(description) + embedding = await get_embedding(description, request_type="emoji") # 准备数据库记录 emoji_record = { "filename": filename, diff --git a/src/plugins/chat/llm_generator.py b/src/plugins/chat/llm_generator.py index 80daa250b..556f36e2e 100644 --- a/src/plugins/chat/llm_generator.py +++ b/src/plugins/chat/llm_generator.py @@ -32,10 +32,17 @@ class ResponseGenerator: temperature=0.7, max_tokens=1000, stream=True, + request_type="response", + ) + self.model_v3 = LLM_request( + model=global_config.llm_normal, temperature=0.7, max_tokens=3000, request_type="response" + ) + self.model_r1_distill = LLM_request( + model=global_config.llm_reasoning_minor, temperature=0.7, max_tokens=3000, request_type="response" + ) + self.model_sum = LLM_request( + model=global_config.llm_summary_by_topic, temperature=0.7, max_tokens=3000, request_type="relation" ) - self.model_v3 = LLM_request(model=global_config.llm_normal, temperature=0.7, max_tokens=3000) - self.model_r1_distill = LLM_request(model=global_config.llm_reasoning_minor, temperature=0.7, max_tokens=3000) - self.model_v25 = LLM_request(model=global_config.llm_normal_minor, temperature=0.7, max_tokens=3000) self.current_model_type = "r1" # 默认使用 R1 self.current_model_name = "unknown model" @@ -175,7 +182,7 @@ class ResponseGenerator: """ # 调用模型生成结果 - result, _, _ = await self.model_v25.generate_response(prompt) + result, _, _ = await self.model_sum.generate_response(prompt) result = result.strip() # 解析模型输出的结果 diff --git a/src/plugins/chat/utils.py b/src/plugins/chat/utils.py index 1563ea526..fd940a645 100644 --- a/src/plugins/chat/utils.py +++ b/src/plugins/chat/utils.py @@ -55,9 +55,9 @@ def is_mentioned_bot_in_message(message: MessageRecv) -> bool: return False -async def get_embedding(text): +async def get_embedding(text, request_type="embedding"): """获取文本的embedding向量""" - llm = LLM_request(model=global_config.embedding, request_type="embedding") + llm = LLM_request(model=global_config.embedding, request_type=request_type) # return llm.get_embedding_sync(text) return await llm.get_embedding(text) diff --git a/src/plugins/memory_system/memory.py b/src/plugins/memory_system/memory.py index f5012c828..ece8de748 100644 --- a/src/plugins/memory_system/memory.py +++ b/src/plugins/memory_system/memory.py @@ -174,9 +174,9 @@ class Memory_graph: class Hippocampus: def __init__(self, memory_graph: Memory_graph): self.memory_graph = memory_graph - self.llm_topic_judge = LLM_request(model=global_config.llm_topic_judge, temperature=0.5, request_type="topic") + self.llm_topic_judge = LLM_request(model=global_config.llm_topic_judge, temperature=0.5, request_type="memory") self.llm_summary_by_topic = LLM_request( - model=global_config.llm_summary_by_topic, temperature=0.5, request_type="topic" + model=global_config.llm_summary_by_topic, temperature=0.5, request_type="memory" ) def get_all_node_names(self) -> list: @@ -375,6 +375,8 @@ class Hippocampus: return topic_num async def operation_build_memory(self): + logger.debug("------------------------------------开始构建记忆--------------------------------------") + start_time = time.time() memory_samples = self.get_memory_sample() all_added_nodes = [] all_added_edges = [] @@ -426,6 +428,12 @@ class Hippocampus: logger.success(f"强化连接: {', '.join(all_added_edges)}") # logger.success(f"强化连接: {', '.join(all_added_edges)}") self.sync_memory_to_db() + + end_time = time.time() + logger.success( + f"--------------------------记忆构建完成:耗时: {end_time - start_time:.2f} " + "秒--------------------------" + ) def sync_memory_to_db(self): """检查并同步内存中的图结构与数据库""" diff --git a/src/plugins/models/utils_model.py b/src/plugins/models/utils_model.py index 91e43fd4f..975bcaf7b 100644 --- a/src/plugins/models/utils_model.py +++ b/src/plugins/models/utils_model.py @@ -581,7 +581,8 @@ class LLM_request: completion_tokens=completion_tokens, total_tokens=total_tokens, user_id="system", # 可以根据需要修改 user_id - request_type="embedding", # 请求类型为 embedding + # request_type="embedding", # 请求类型为 embedding + request_type=self.request_type, # 请求类型为 text endpoint="/embeddings", # API 端点 ) return result["data"][0].get("embedding", None) diff --git a/template/bot_config_template.toml b/template/bot_config_template.toml index e5cf1df86..bf7118d12 100644 --- a/template/bot_config_template.toml +++ b/template/bot_config_template.toml @@ -128,52 +128,60 @@ enable = true #下面的模型若使用硅基流动则不需要更改,使用ds官方则改成.env.prod自定义的宏,使用自定义模型则选择定位相似的模型自己填写 -#推理模型: +#推理模型 + [model.llm_reasoning] #回复模型1 主要回复模型 name = "Pro/deepseek-ai/DeepSeek-R1" +# name = "Qwen/QwQ-32B" provider = "SILICONFLOW" -pri_in = 0 #模型的输入价格(非必填,可以记录消耗) -pri_out = 0 #模型的输出价格(非必填,可以记录消耗) +pri_in = 4 #模型的输入价格(非必填,可以记录消耗) +pri_out = 16 #模型的输出价格(非必填,可以记录消耗) [model.llm_reasoning_minor] #回复模型3 次要回复模型 name = "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B" provider = "SILICONFLOW" +pri_in = 1.26 #模型的输入价格(非必填,可以记录消耗) +pri_out = 1.26 #模型的输出价格(非必填,可以记录消耗) #非推理模型 [model.llm_normal] #V3 回复模型2 次要回复模型 name = "Pro/deepseek-ai/DeepSeek-V3" provider = "SILICONFLOW" +pri_in = 2 #模型的输入价格(非必填,可以记录消耗) +pri_out = 8 #模型的输出价格(非必填,可以记录消耗) -[model.llm_normal_minor] #V2.5 -name = "deepseek-ai/DeepSeek-V2.5" -provider = "SILICONFLOW" - -[model.llm_emotion_judge] #主题判断 0.7/m +[model.llm_emotion_judge] #表情包判断 name = "Qwen/Qwen2.5-14B-Instruct" provider = "SILICONFLOW" +pri_in = 0.7 +pri_out = 0.7 -[model.llm_topic_judge] #主题判断:建议使用qwen2.5 7b +[model.llm_topic_judge] #记忆主题判断:建议使用qwen2.5 7b name = "Pro/Qwen/Qwen2.5-7B-Instruct" provider = "SILICONFLOW" +pri_in = 0 +pri_out = 0 -[model.llm_summary_by_topic] #建议使用qwen2.5 32b 及以上 +[model.llm_summary_by_topic] #概括模型,建议使用qwen2.5 32b 及以上 name = "Qwen/Qwen2.5-32B-Instruct" provider = "SILICONFLOW" -pri_in = 0 -pri_out = 0 +pri_in = 1.26 +pri_out = 1.26 -[model.moderation] #内容审核 未启用 +[model.moderation] #内容审核,开发中 name = "" provider = "SILICONFLOW" -pri_in = 0 -pri_out = 0 +pri_in = 1.0 +pri_out = 2.0 # 识图模型 -[model.vlm] #图像识别 0.35/m -name = "Pro/Qwen/Qwen2-VL-7B-Instruct" +[model.vlm] #图像识别 +name = "Pro/Qwen/Qwen2.5-VL-7B-Instruct" provider = "SILICONFLOW" +pri_in = 0.35 +pri_out = 0.35 #嵌入模型