diff --git a/src/chat/express/expression_selector.py b/src/chat/express/expression_selector.py index 431d55b46..205e1f9f2 100644 --- a/src/chat/express/expression_selector.py +++ b/src/chat/express/expression_selector.py @@ -71,7 +71,8 @@ def weighted_sample(population: list[dict], weights: list[float], k: int) -> lis class ExpressionSelector: - def __init__(self): + def __init__(self, chat_id: str = ""): + self.chat_id = chat_id self.llm_model = LLMRequest( model_set=model_config.model_task_config.utils_small, request_type="expression.selector" ) diff --git a/src/chat/message_manager/distribution_manager.py b/src/chat/message_manager/distribution_manager.py index b45392f0c..fa6bcea0d 100644 --- a/src/chat/message_manager/distribution_manager.py +++ b/src/chat/message_manager/distribution_manager.py @@ -9,6 +9,7 @@ from typing import Any from src.chat.chatter_manager import ChatterManager from src.chat.energy_system import energy_manager +from src.common.data_models.message_manager_data_model import StreamContext from src.common.logger import get_logger from src.config.config import global_config from src.plugin_system.apis.chat_api import get_chat_manager @@ -369,7 +370,7 @@ class StreamLoopManager: logger.error(f"检查消息状态失败: {e}") return False - async def _process_stream_messages(self, stream_id: str, context: Any) -> bool: + async def _process_stream_messages(self, stream_id: str, context: StreamContext) -> bool: """处理流消息 Args: @@ -387,7 +388,8 @@ class StreamLoopManager: start_time = time.time() # 直接调用chatter_manager处理流上下文 - results = await asyncio.create_task(self.chatter_manager.process_stream_context(stream_id, context)) + context.processing_task = asyncio.create_task(self.chatter_manager.process_stream_context(stream_id, context)) + results = await context.processing_task success = results.get("success", False) if success: diff --git a/src/chat/message_manager/message_manager.py b/src/chat/message_manager/message_manager.py index 78e3363ff..8f43f6128 100644 --- a/src/chat/message_manager/message_manager.py +++ b/src/chat/message_manager/message_manager.py @@ -89,9 +89,8 @@ class MessageManager: logger.warning(f"MessageManager.add_message: 聊天流 {stream_id} 不存在") return await self._check_and_handle_interruption(chat_stream) - chat_stream.context_manager.context.processing_task = asyncio.create_task( - chat_stream.context_manager.add_message(message) - ) + await chat_stream.context_manager.add_message(message) + except Exception as e: logger.error(f"添加消息到聊天流 {stream_id} 时发生错误: {e}") diff --git a/src/chat/utils/prompt.py b/src/chat/utils/prompt.py index d869ec7a2..2ed0f762f 100644 --- a/src/chat/utils/prompt.py +++ b/src/chat/utils/prompt.py @@ -515,10 +515,9 @@ class Prompt: # 选择合适的表情 selected_expressions = await expression_selector.select_suitable_expressions_llm( - chat_history=chat_history, - current_message=self.parameters.target, - emotional_tone="neutral", - topic_type="general", + chat_id=self.parameters.chat_id, + chat_info=chat_history, + target_message=self.parameters.target, ) # 构建表达习惯块