feat(chatter): 引入决策历史以增强上下文连续性
为提升语言模型在连续对话中的表现,本次更新引入了决策历史功能。该功能旨在为模型提供一个短期记忆,记录其最近的思考过程与采取的行动。 主要变更包括: - 新增 `DecisionRecord` 数据模型,用于存储“思考-动作”对。 - 在 `StreamContext` 中添加 `decision_history` 字段,以维护每个聊天流的决策历史。 - 在 `plan_filter` 中实现决策记录的逻辑,并在构建提示词时将其注入,供模型参考。 - 添加 `enable_decision_history` 和 `decision_history_length` 配置项,允许用户启用此功能并调整历史记录的长度。 通过回顾近期的决策,模型可以更好地避免重复行为,并生成更具连贯性和创造性的响应。
This commit is contained in:
@@ -7,7 +7,7 @@ import asyncio
|
||||
import time
|
||||
from dataclasses import dataclass, field
|
||||
from enum import Enum
|
||||
from typing import TYPE_CHECKING, Optional
|
||||
from typing import TYPE_CHECKING, List, Optional
|
||||
|
||||
from src.common.logger import get_logger
|
||||
from src.plugin_system.base.component_types import ChatMode, ChatType
|
||||
@@ -28,6 +28,14 @@ class MessageStatus(Enum):
|
||||
PROCESSING = "processing" # 处理中
|
||||
|
||||
|
||||
@dataclass
|
||||
class DecisionRecord(BaseDataModel):
|
||||
"""决策记录"""
|
||||
|
||||
thought: str
|
||||
action: str
|
||||
|
||||
|
||||
@dataclass
|
||||
class StreamContext(BaseDataModel):
|
||||
"""聊天流上下文信息"""
|
||||
@@ -56,6 +64,7 @@ class StreamContext(BaseDataModel):
|
||||
triggering_user_id: str | None = None # 触发当前聊天流的用户ID
|
||||
is_replying: bool = False # 是否正在生成回复
|
||||
processing_message_id: str | None = None # 当前正在规划/处理的目标消息ID,用于防止重复回复
|
||||
decision_history: List["DecisionRecord"] = field(default_factory=list) # 决策历史
|
||||
|
||||
def add_action_to_message(self, message_id: str, action: str):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user